package de.ppi.samples.fuwesta.frontend; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.Map; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.ui.ExtendedModelMap; import org.springframework.ui.Model; import org.springframework.validation.Validator; import de.ppi.fuwesta.spring.mvc.util.PageWrapper; import de.ppi.samples.fuwesta.model.Post; import de.ppi.samples.fuwesta.service.api.PostService; /** * Test of {@link PostCRUDController}. * */ public class PostCRUDControllerTest { /** * The PostService instance. */ @Mock private PostService postService; /** * The generic validator. */ @Mock private Validator validator; /** * The test object. */ @InjectMocks private final PostCRUDController testee = new PostCRUDController(); /** * The default model. */ private Model model = new ExtendedModelMap(); /** * Setup of the test. * * @throws java.lang.Exception if something goes wrong. */ @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); } /** * Test method for * {@link de.ppi.fuwesta.samples.springmvc.frontend.PostCRUDController#list(org.springframework.ui.Model, org.springframework.data.domain.Pageable)} * . */ @SuppressWarnings("boxing") @Test public void testListEmptyList() { // Arrange final Pageable pageRequest = mock(Pageable.class); @SuppressWarnings("unchecked") final Page<Post> pageResult = mock(Page.class); when(postService.getPost(pageRequest)).thenReturn(pageResult); when(pageResult.getSize()).thenReturn(0); // Act final String result = testee.list(model, pageRequest); // Assert assertThat(result).isEqualTo(URL.redirect(URL.Post.CREATE)); } /** * Test method for * {@link de.ppi.fuwesta.samples.springmvc.frontend.PostCRUDController#list(org.springframework.ui.Model, org.springframework.data.domain.Pageable)} * . */ @SuppressWarnings({ "unchecked", "boxing" }) @Test public void testList() { // Arrange final int nrOfEntries = 100; final Pageable pageRequest = mock(Pageable.class); final Page<Post> pageResult = mock(Page.class); when(postService.getPost(pageRequest)).thenReturn(pageResult); when(pageResult.getSize()).thenReturn(nrOfEntries); // Act final String result = testee.list(model, pageRequest); // Assert assertThat(result).isEqualTo("example/post/list"); assertThat(model.containsAttribute("postList")).isTrue(); assertThat(model.containsAttribute("pageRequest")).isTrue(); final Map<String, Object> map = model.asMap(); assertThat(map.get("postList")).isInstanceOf(PageWrapper.class); assertThat(map.get("pageRequest")).isSameAs(pageRequest); final PageWrapper<Post> pageWrapper = (PageWrapper<Post>) map.get("postList"); assertThat(pageWrapper.getSize()).isEqualTo(nrOfEntries); assertThat(pageWrapper.getUrl()).isEqualTo(URL.Post.LIST); } /** * Test method for * {@link de.ppi.fuwesta.samples.springmvc.frontend.PostCRUDController#create(org.springframework.ui.Model)} * . */ // TODO @Test public void testCreate() { Assert.fail("Not yet implemented"); } /** * Test method for * {@link de.ppi.fuwesta.samples.springmvc.frontend.PostCRUDController#insert(de.ppi.fuwesta.samples.springmvc.model.Post, org.springframework.validation.BindingResult, org.springframework.ui.Model)} * . */ // TODO @Test public void testInsert() { Assert.fail("Not yet implemented"); } /** * Test method for * {@link de.ppi.fuwesta.samples.springmvc.frontend.PostCRUDController#deleteConfirm(java.lang.Long, org.springframework.ui.Model)} * . */ // TODO @Test public void testDeleteConfirm() { Assert.fail("Not yet implemented"); } /** * Test method for * {@link de.ppi.fuwesta.samples.springmvc.frontend.PostCRUDController#delete(java.lang.Long)} * . */ // TODO @Test public void testDelete() { Assert.fail("Not yet implemented"); } /** * Test method for * {@link de.ppi.fuwesta.samples.springmvc.frontend.PostCRUDController#show(java.lang.Long, org.springframework.ui.Model)} * . */ // TODO @Test public void testShow() { Assert.fail("Not yet implemented"); } /** * Test method for * {@link de.ppi.fuwesta.samples.springmvc.frontend.PostCRUDController#edit(java.lang.Long, org.springframework.ui.Model)} * . */ // TODO @Test public void testEdit() { Assert.fail("Not yet implemented"); } /** * Test method for * {@link de.ppi.fuwesta.samples.springmvc.frontend.PostCRUDController#update(de.ppi.fuwesta.samples.springmvc.model.Post, org.springframework.validation.BindingResult, org.springframework.ui.Model)} * . */ // TODO @Test public void testUpdate() { Assert.fail("Not yet implemented"); } }