package fitnesse.components; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.List; import org.junit.Test; import fitnesse.wiki.WikiPage; public class OrPageFinderTest extends CompositePageFinderTestCase { @Test public void singlePageFinder() throws Exception { sut = new OrPageFinder(); setupMockWithEmptyReturnValue(); sut.add(delegate); sut.search(page); verify(delegate, times(1)).search(page); } @Test public void multiplePageFinder() throws Exception { sut = new OrPageFinder(); setupMockWithEmptyReturnValue(); sut.add(delegate); sut.add(delegate); sut.add(delegate); sut.search(page); verify(delegate, times(3)).search(page); } @Test public void combinationIsFound() throws Exception { sut = new OrPageFinder(); List<WikiPage> expected = setupWikiPageList(pageOne, pageTwo, pageThree); when(delegate.search(any(WikiPage.class))).thenReturn(expected); PageFinder delegate2 = mock(PageFinder.class); when(delegate2.search(any(WikiPage.class))).thenReturn(setupWikiPageList(pageOne, pageTwo)); sut.add(delegate); sut.add(delegate2); List<WikiPage> results = sut.search(page); assertFoundResultsEqualsExpectation(expected, results); } @Test public void multpleIntersections() throws Exception { sut = new OrPageFinder(); List<WikiPage> expected = setupWikiPageList(pageOne, pageTwo, pageThree); when(delegate.search(any(WikiPage.class))).thenReturn( setupWikiPageList(pageOne, pageTwo)); PageFinder delegate2 = mock(PageFinder.class); when(delegate2.search(any(WikiPage.class))).thenReturn(setupWikiPageList(pageThree)); sut.add(delegate); sut.add(delegate2); sut.add(delegate); List<WikiPage> results = sut.search(page); assertFoundResultsEqualsExpectation(expected, results); } }