package fitnesse.responders.run.formatters; import fitnesse.FitNesseContext; import fitnesse.responders.run.SuiteExecutionReport.PageHistoryReference; import fitnesse.responders.run.TestPage; import fitnesse.responders.run.TestSummary; import fitnesse.wiki.WikiPage; import fitnesse.wiki.WikiPageDummy; import org.junit.Test; import util.TestClock; import util.TimeMeasurement; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class SuiteExecutionReportFormatterTest { @Test public void testCompleteShouldSetRunTimeForCurrentReference() throws Exception { FitNesseContext context = mock(FitNesseContext.class); TestPage page = new TestPage(new WikiPageDummy("name", "content")); SuiteExecutionReportFormatter formatter = new SuiteExecutionReportFormatter(context, page.getSourcePage()); TimeMeasurement timeMeasurement = mock(TimeMeasurement.class); when(timeMeasurement.startedAt()).thenReturn(65L); when(timeMeasurement.elapsed()).thenReturn(2L); formatter.newTestStarted(page, timeMeasurement); when(timeMeasurement.elapsed()).thenReturn(99L); TestSummary testSummary = new TestSummary(4, 2, 7, 3); formatter.testComplete(page, testSummary, timeMeasurement); assertThat(formatter.suiteExecutionReport.getPageHistoryReferences().size(), is(1)); PageHistoryReference reference = formatter.suiteExecutionReport.getPageHistoryReferences().get(0); assertThat(reference.getTestSummary(), equalTo(testSummary)); assertThat(reference.getRunTimeInMillis(), is(99L)); } @Test public void allTestingCompleteShouldSetTotalRunTimeOnReport() throws Exception { FitNesseContext context = mock(FitNesseContext.class); WikiPage page = new WikiPageDummy("name", "content"); SuiteExecutionReportFormatter formatter = new SuiteExecutionReportFormatter(context, page); TestClock clock = new TestClock(); clock.currentTime = 100L; TimeMeasurement totalTimeMeasurement = new TimeMeasurement(clock).start(); formatter.announceNumberTestsToRun(0); clock.currentTime = 150L; formatter.allTestingComplete(totalTimeMeasurement); assertThat(formatter.suiteExecutionReport.getTotalRunTimeInMillis(), is(totalTimeMeasurement.elapsed())); } @Test public void testCompleteShouldSetFailedCount() throws Exception { FitNesseContext context = mock(FitNesseContext.class); TestPage page = new TestPage(new WikiPageDummy("name", "content")); SuiteExecutionReportFormatter formatter = new SuiteExecutionReportFormatter(context, page.getSourcePage()); TimeMeasurement timeMeasurement = mock(TimeMeasurement.class); when(timeMeasurement.startedAt()).thenReturn(65L); when(timeMeasurement.elapsed()).thenReturn(2L); formatter.newTestStarted(page, timeMeasurement); when(timeMeasurement.elapsed()).thenReturn(99L); TestSummary testSummary = new TestSummary(4, 2, 7, 3); formatter.testComplete(page, testSummary, timeMeasurement); assertThat(formatter.failCount, is(5)); formatter.allTestingComplete(timeMeasurement); assertThat(BaseFormatter.finalErrorCount, is(5)); } }