package fitnesse.responders.run.formatters; import fitnesse.FitNesseContext; import fitnesse.http.ChunkedResponse; import fitnesse.responders.PageFactory; import fitnesse.responders.run.TestPage; import fitnesse.responders.run.TestSummary; import fitnesse.testutil.FitNesseUtil; import fitnesse.wiki.InMemoryPage; import fitnesse.wiki.WikiPage; import fitnesse.wiki.WikiPageDummy; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import util.DateAlteringClock; import util.TimeMeasurement; import java.util.Arrays; import java.util.Collection; import java.util.Date; import static org.junit.Assert.*; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.*; @RunWith(Parameterized.class) public class TestFormatterTest { private BaseFormatter formatter; public TestFormatterTest(BaseFormatter formatter) { this.formatter = formatter; } @Parameterized.Parameters public static Collection formatters() throws Exception { WikiPage root = InMemoryPage.makeRoot("RooT"); FitNesseContext context = FitNesseUtil.makeTestContext(root); ChunkedResponse response = mock(ChunkedResponse.class); WikiPageDummy page = new WikiPageDummy("testPage", "testContent"); XmlFormatter.WriterFactory writerFactory = mock(XmlFormatter.WriterFactory.class); TestTextFormatter testTextFormatter = new TestTextFormatter(response); XmlFormatter xmlFormatter = new XmlFormatter(context, page, writerFactory) { @Override protected void writeResults() { } }; InteractiveFormatter testHtmlFormatter = new TestHtmlFormatter(context, page) { @Override protected void writeData(String output) { } }; PageHistoryFormatter pageHistoryFormatter = new PageHistoryFormatter(context, page, writerFactory) { protected void writeResults() { }; }; return Arrays.asList(new Object[][]{ {testTextFormatter}, {xmlFormatter}, {testHtmlFormatter}, {pageHistoryFormatter}, }); } private TestPage page; private TestSummary right; private TestSummary wrong; private TestSummary exception; @Before public void setUp() throws Exception { page = new TestPage(new WikiPageDummy("page", "content")); right = new TestSummary(1, 0, 0, 0); wrong = new TestSummary(0, 1, 0, 0); exception = new TestSummary(0, 0, 0, 1); } @After public void clearStaticFields() { BaseFormatter.finalErrorCount = 0; } @Test public void testComplete_shouldCountTestResults() throws Exception { TimeMeasurement timeMeasurement = mock(TimeMeasurement.class); when(timeMeasurement.startedAtDate()).thenReturn(new Date(0)); when(timeMeasurement.elapsedSeconds()).thenReturn(0d); formatter.announceNumberTestsToRun(3); formatter.testComplete(page, right, timeMeasurement); formatter.testComplete(page, wrong, timeMeasurement); formatter.testComplete(page, exception, timeMeasurement); formatter.allTestingComplete(new TimeMeasurement().start().stop()); assertEquals(3, formatter.testCount); assertEquals(2, formatter.failCount); if (!(formatter instanceof PageHistoryFormatter)) assertEquals(2, BaseFormatter.finalErrorCount); } }