package com.github.nyrkovalex.ironadmin.core.defaults; import com.github.nyrkovalex.ironadmin.core.EntityProvider; import com.github.nyrkovalex.ironadmin.core.SampleBean; import com.github.nyrkovalex.ironadmin.core.pages.PageRequest; import com.github.nyrkovalex.ironadmin.core.servlet.UnitTest; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import java.util.Collections; import java.util.List; import java.util.Optional; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.sameInstance; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.when; public class DefaultTemplatePageTest extends UnitTest { @Mock private EntityProvider provider; @Mock private PageRequest request; private DefaultTemplatePage page; @Before public void setUp() throws Exception { page = new DefaultTemplatePage<>(SampleBean.class, provider); when(request.pageUrl()).thenReturn("/sample-beans"); when(request.entityId()).thenReturn(Optional.empty()); } @Test public void testShouldCreateContextWithCorrectTitle() throws Exception { final DefaultPageContext result = page.pageContextForRequest(request); assertThat(result.getTitle(), is("Sample Bean")); } @Test public void testShouldCreateContextWithEntityList() throws Exception { List entities = Collections.emptyList(); when(provider.all()).thenReturn(entities); MainPageContext result = (MainPageContext) page.pageContextForRequest(request); assertThat(result.getEntities(), is(sameInstance(entities))); } @Test public void testShouldCreateContextWithPropertyList() throws Exception { DefaultPageContext result = page.pageContextForRequest(request); assertThat(result.getProperties(), is(page.properties())); } @Test public void testShouldCreateContextWithIdProperyName() throws Exception { DefaultPageContext result = page.pageContextForRequest(request); assertThat(result.getIdPropertyName(), is(page.idPropertyName())); } @Test public void testShouldCreateContextWithUrl() throws Exception { DefaultPageContext result = page.pageContextForRequest(request); assertThat(result.getIdPropertyName(), is(page.idPropertyName())); } @Test public void testShouldCreateMainPageContext() throws Exception { DefaultPageContext result = page.pageContextForRequest(request); assertThat(result, is(instanceOf(MainPageContext.class))); } @Test public void testShouldCreateInstanceOfEditPageContext() throws Exception { when(request.entityId()).thenReturn(Optional.of("1")); DefaultPageContext result = page.pageContextForRequest(request); assertThat(result, is(instanceOf(EditPageContext.class))); } }