package no.dusken.aranea.admin.control;
import no.dusken.aranea.model.Page;
import no.dusken.aranea.model.PageImage;
import no.dusken.aranea.service.PageService;
import no.dusken.common.service.GenericService;
import org.junit.Before;
import org.junit.Test;
import org.springframework.ui.ExtendedModelMap;
import org.springframework.ui.Model;
import java.util.Arrays;
import java.util.List;
import static junit.framework.Assert.assertEquals;
import static org.mockito.Mockito.*;
/**
* @author Benjamin Bjørnseth <benjamin@underdusken.no>
*/
public class EditPageImageParagraphTest {
private PageService pageService;
private GenericService<PageImage> pageImageService;
private EditPageImageParagraphController controller;
private PageImage pageImage;
private Long pageID = 42L, pageImageID = 42L;
private Integer oldPNumber = 17, newPNumber = 19;
private List<PageImage> pageImages;
@Before
public void setUp() {
pageService = mock(PageService.class);
pageImageService = mock(GenericService.class);
pageImage = mock(PageImage.class);
pageImage.setParagraph(oldPNumber);
Page page = mock(Page.class);
PageImage[] pageImages = new PageImage[3];
for (int i = 1; i <= pageImages.length; i++) {
pageImages[i-1] = new PageImage();
pageImages[i-1].setParagraph((i + 1) % 4);
}
this.pageImages = Arrays.asList(pageImages);
when(pageService.getEntity(pageID)).thenReturn(page);
when(page.getPageImages()).thenReturn(Arrays.asList(pageImage));
when(pageImageService.getEntity(pageImageID)).thenReturn(pageImage);
controller = new EditPageImageParagraphController();
controller.setPageService(pageService);
controller.setPageImageService(pageImageService);
}
@Test
public void testGetImageSelectionView() {
Model model = new ExtendedModelMap();
String returnedView = controller.getImageSelectionView(newPNumber, pageID, model);
assertEquals("Unexpected view returned", "no/dusken/aranea/base/admin/pageImage/imageChooser", returnedView);
assertEquals("Model does not include PageImage list", Arrays.asList(pageImage), model.asMap().get("pageImages"));
assertEquals("Model does not include pageID", pageID, model.asMap().get("pageId"));
assertEquals("Model does not include new paragraph number", newPNumber, model.asMap().get("paragraphNumber"));
}
@Test
public void testUpdatePageImageParagraph() {
controller.updatePageImageParagraph(pageImageID, pageID, newPNumber);
verify(pageImage).setParagraph(newPNumber);
verify(pageImageService).saveOrUpdate(pageImage);
}
@Test
public void testUpdateGalleryOrdering() {
controller.updateGalleryOrdering(pageImages);
for (int i = 1; i <= pageImages.size(); i++) {
assertEquals("Wrong paragraph number", i, (int)pageImages.get(i-1).getParagraph());
}
}
}