package org.jbake.render; import org.apache.commons.configuration.CompositeConfiguration; import org.jbake.app.ContentStore; import org.jbake.app.Renderer; import org.jbake.render.support.MockCompositeConfiguration; import org.jbake.template.RenderingException; import org.junit.Test; import java.io.File; import static org.assertj.core.api.Assertions.assertThat; import static org.jbake.app.ConfigUtil.Keys.PAGINATE_INDEX; import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; public class IndexRendererTest { @Test public void returnsZeroWhenConfigDoesNotRenderIndices() throws RenderingException { IndexRenderer renderer = new IndexRenderer(); CompositeConfiguration compositeConfiguration = new MockCompositeConfiguration().withDefaultBoolean(false); ContentStore contentStore = mock(ContentStore.class); Renderer mockRenderer = mock(Renderer.class); int renderResponse = renderer.render(mockRenderer, contentStore, new File("fake"), new File("fake"), compositeConfiguration); assertThat(renderResponse).isEqualTo(0); } @Test public void doesNotRenderWhenConfigDoesNotRenderIndices() throws Exception { IndexRenderer renderer = new IndexRenderer(); CompositeConfiguration compositeConfiguration = new MockCompositeConfiguration().withDefaultBoolean(false); ContentStore contentStore = mock(ContentStore.class); Renderer mockRenderer = mock(Renderer.class); int renderResponse = renderer.render(mockRenderer, contentStore, new File("fake"), new File("fake"), compositeConfiguration); verify(mockRenderer, never()).renderIndex(anyString()); } @Test public void returnsOneWhenConfigRendersIndices() throws RenderingException { IndexRenderer renderer = new IndexRenderer(); CompositeConfiguration compositeConfiguration = new MockCompositeConfiguration().withDefaultBoolean(true); ContentStore contentStore = mock(ContentStore.class); Renderer mockRenderer = mock(Renderer.class); int renderResponse = renderer.render(mockRenderer, contentStore, new File("fake"), new File("fake"), compositeConfiguration); assertThat(renderResponse).isEqualTo(1); } @Test public void doesRenderWhenConfigDoesNotRenderIndices() throws Exception { IndexRenderer renderer = new IndexRenderer(); MockCompositeConfiguration compositeConfiguration = new MockCompositeConfiguration().withDefaultBoolean(true); compositeConfiguration.setProperty(PAGINATE_INDEX, false); ContentStore contentStore = mock(ContentStore.class); Renderer mockRenderer = mock(Renderer.class); int renderResponse = renderer.render(mockRenderer, contentStore, new File("fake"), new File("fake"), compositeConfiguration); verify(mockRenderer, times(1)).renderIndex("random string"); } @Test(expected = RenderingException.class) public void propagatesRenderingException() throws Exception { IndexRenderer renderer = new IndexRenderer(); CompositeConfiguration compositeConfiguration = new MockCompositeConfiguration().withDefaultBoolean(true); compositeConfiguration.setProperty(PAGINATE_INDEX, false); ContentStore contentStore = mock(ContentStore.class); Renderer mockRenderer = mock(Renderer.class); doThrow(new Exception()).when(mockRenderer).renderIndex(anyString()); int renderResponse = renderer.render(mockRenderer, contentStore, new File("fake"), new File("fake"), compositeConfiguration); verify(mockRenderer, never()).renderIndex("random string"); } /** * @see <a href="https://github.com/jbake-org/jbake/issues/332">Issue 332</a> */ @Test public void shouldFallbackToStandardIndexRenderingIfPropertyIsMissing() throws Exception { IndexRenderer renderer = new IndexRenderer(); MockCompositeConfiguration compositeConfiguration = new MockCompositeConfiguration().withDefaultBoolean(true); ContentStore contentStore = mock(ContentStore.class); Renderer mockRenderer = mock(Renderer.class); int renderResponse = renderer.render(mockRenderer, contentStore, new File("fake"), new File("fake"), compositeConfiguration); verify(mockRenderer, times(1)).renderIndex("random string"); } }