package no.dusken.aranea.admin.control; import no.dusken.aranea.model.Article; import no.dusken.aranea.model.Image; import no.dusken.aranea.model.PageImage; import no.dusken.aranea.service.ImageService; import no.dusken.aranea.service.PageService; import no.dusken.common.service.GenericService; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockMultipartFile; import org.springframework.mock.web.MockMultipartHttpServletRequest; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import static junit.framework.Assert.assertEquals; import static org.mockito.Mockito.*; /** * @author Benjamin Bjørnseth <benjamin@underdusken.no> */ @RunWith(MockitoJUnitRunner.class) public class SavePageImageControllerTest { private SavePageImageController savePageImageController; @Mock private PageService pageService; @Mock private PageImageOnSubmit pageImageSubmit; @Mock private ImageService imageService; @Mock private GenericService<PageImage> genericService; @Before public void setUp() throws Exception { savePageImageController = new SavePageImageController(); savePageImageController.setPageService(pageService); savePageImageController.setPageImageSubmit(pageImageSubmit); savePageImageController.setImageService(imageService); savePageImageController.setGenericService(genericService); } @Test public void testUploadImage() throws Exception { Article a = new Article(); a.setID(408L); when(pageService.getEntity(408L)).thenReturn(a); MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest(); PageImage pageImage = new PageImage(); pageImage.setPage(a); pageImage.setText("testText"); pageImage.setImage(new Image()); when(pageImageSubmit.handlePageImageSubmit(pageImage, request)).thenReturn(pageImage); request.setParameter("pageID", "408"); request.setParameter("text", "testText"); MultipartFile file = new MockMultipartFile("file", new byte[]{1, 2, 3, 4}); request.addFile(file); MockHttpServletResponse response = new MockHttpServletResponse(); ModelAndView mav = savePageImageController.handleRequestInternal(request, response); assertEquals("viewName was wrong", "redirect:/admin/editArticle.do?ID=408", mav.getViewName()); verify(pageImageSubmit).handlePageImageSubmit(pageImage, request); } @Test public void testSavePageImagesWithImagesStored() throws Exception { MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest(); MockHttpServletResponse response = new MockHttpServletResponse(); request.setParameter("pageID", "408"); request.setParameter("counter", "16"); request.setParameter("checkedImage0", "666"); request.setParameter("checkedImage15", "999"); Article a = new Article(); a.setID(408L); when(pageService.getEntity(408L)).thenReturn(a); Image image1 = new Image(), image2 = new Image(); image1.setID(666L); image2.setID(999L); when(imageService.getEntity(666L)).thenReturn(image1); when(imageService.getEntity(999L)).thenReturn(image2); PageImage pageImage0 = new PageImage(), pageImage1 = new PageImage(), pageImage2 = new PageImage(); pageImage0.setPage(a); pageImage1.setPage(a); pageImage2.setPage(a); pageImage1.setImage(image1); pageImage2.setImage(image2); ModelAndView mav = savePageImageController.handleRequestInternal(request, response); assertEquals("viewValue not as expected", "redirect:/admin/editArticle.do?ID=408", mav.getViewName()); verify(pageImageSubmit, times(0)).handlePageImageSubmit(pageImage0, request); verify(imageService).getEntity(666L); verify(imageService).getEntity(999L); verify(genericService, times(2)).saveOrUpdate(pageImage0); } }