package com.thoughtworks.winstonwolfe.reporting; import com.thoughtworks.winstonwolfe.validators.ValidationResults; import org.junit.Test; import java.util.ArrayList; import java.util.List; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import static org.junit.matchers.JUnitMatchers.containsString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class HtmlReportTest { @Test public void shouldRenderEmptyDocumentWhenNothingToReport() { HtmlReport report = new HtmlReport(); assertThat(report.render(), containsString("<body></body>")); } @Test public void shouldRenderTheRequestDocument() { HtmlReport report = new HtmlReport(); report.setRequest("<blah><inner /></blah>"); assertThat(report.render(), containsString("<div id=\"request\"><h3>Sent Request</h3><textarea disabled=\"true\"><blah>\n <inner/>\n</blah>\n</textarea></div>")); } @Test public void shouldRenderTheResponseDocument() { HtmlReport report = new HtmlReport(); report.setResponse("<mahResponse><inner /></mahResponse>"); assertThat(report.render(), containsString("<div id=\"response\"><h3>Received Response</h3><textarea disabled=\"true\"><mahResponse>\n <inner/>\n</mahResponse>\n</textarea></div>")); } @Test public void shouldReturnAnUnformattedStringIfAnExceptionIsThrown() { HtmlReport report = new HtmlReport(); report.setResponse("<mahResponse</mahResponse>"); assertThat(report.render(), containsString("<div id=\"response\"><h3>Received Response</h3><textarea disabled=\"true\"><mahResponse</mahResponse></textarea></div>")); } @Test public void shouldRenderPassedExpectationsAsSatisfactions() { HtmlReport report = new HtmlReport(); ValidationResults results = mock(ValidationResults.class); List<String> listOfStrings = new ArrayList<String>(); listOfStrings.add("Testing is awesome"); listOfStrings.add("Pass Pass Pass Pass"); when(results.getSuccessMessages()).thenReturn(listOfStrings); report.addResults(results); String result = ""; result += "<div id=\"satisfactions\"><h3>Success Messages</h3><ul>"; result += "<li class=\"success\">Testing is awesome</li>"; result += "<li class=\"success\">Pass Pass Pass Pass</li>"; result += "</ul></div>"; assertThat(report.render(), containsString(result)); } @Test public void shouldRenderAnEmptyDivWhenNoExpectationsPassed() { HtmlReport report = new HtmlReport(); ValidationResults results = mock(ValidationResults.class); List<String> listOfStrings = new ArrayList<String>(); when(results.getSuccessMessages()).thenReturn(listOfStrings); report.addResults(results); String result = ""; result += "<div id=\"satisfactions\"></div>"; assertThat(report.render(), containsString(result)); } @Test public void shouldRenderFailedExpectationsAsDisappointments() { HtmlReport report = new HtmlReport(); ValidationResults results = mock(ValidationResults.class); List<String> listOfStrings = new ArrayList<String>(); listOfStrings.add("Testing has been going to be awesome"); listOfStrings.add("Fail Fail Fail Fail"); when(results.getFailureMessages()).thenReturn(listOfStrings); report.addResults(results); String result = ""; result += "<div id=\"disappointments\"><h3>Failure Messages</h3><ul>"; result += "<li class=\"failure\">Testing has been going to be awesome</li>"; result += "<li class=\"failure\">Fail Fail Fail Fail</li>"; result += "</ul></div>"; assertThat(report.render(), containsString(result)); } @Test public void shouldRenderAnEmptyDivWhenNoFailedExpectationsAsDisappointments() { HtmlReport report = new HtmlReport(); ValidationResults results = mock(ValidationResults.class); List<String> listOfStrings = new ArrayList<String>(); when(results.getFailureMessages()).thenReturn(listOfStrings); report.addResults(results); String result = ""; result += "<div id=\"disappointments\"></div>"; assertThat(report.render(), containsString(result)); } }