package org.jtwig.render.expression.calculator.enumerated; import com.google.common.base.Optional; import org.jtwig.render.RenderRequest; import org.junit.Before; import org.junit.Test; import java.util.ArrayList; import java.util.List; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertSame; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class CompositeEnumerationListStrategyTest { private final ArrayList<EnumerationListStrategy> strategies = new ArrayList<>(); private CompositeEnumerationListStrategy underTest = new CompositeEnumerationListStrategy(strategies); @Before public void setUp() throws Exception { strategies.clear(); } @Test public void enumerateWhenNoStrategy() throws Exception { RenderRequest renderRequest = mock(RenderRequest.class); Optional<List<Object>> result = underTest.enumerate(renderRequest, new Object(), new Object()); assertFalse(result.isPresent()); } @Test public void enumerateWhenStrategy() throws Exception { Object left = new Object(); Object right = new Object(); Optional<List<Object>> listOptional = Optional.of((List<Object>) mock(List.class)); RenderRequest renderRequest = mock(RenderRequest.class); EnumerationListStrategy enumerationListStrategy = mock(EnumerationListStrategy.class); strategies.add(enumerationListStrategy); when(enumerationListStrategy.enumerate(renderRequest, left, right)).thenReturn(listOptional); Optional<List<Object>> result = underTest.enumerate(renderRequest, left, right); assertSame(listOptional, result); } }