package net.thucydides.core.reports; import net.thucydides.core.annotations.Feature; import net.thucydides.core.annotations.Story; import net.thucydides.core.digest.Digest; import net.thucydides.core.model.TestOutcome; import org.junit.Test; import static net.thucydides.core.model.ReportType.HTML; import static net.thucydides.core.model.ReportType.XML; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.is; public class WhenNamingTheReports { class AUserStory {}; @Feature class AFeature { class AUserStoryInAFeature {} } @Story(AUserStory.class) class SomeTestScenario { public void a_simple_test_case() {}; public void should_do_this() {}; public void should_do_that() {}; } @Story(AFeature.AUserStoryInAFeature.class) class SomeOtherTestScenario { public void a_simple_test_case() {}; public void should_do_this() {}; public void should_do_that() {}; } @Test public void the_report_filename_should_be_based_on_the_test_case_name() { TestOutcome testOutcome = TestOutcome.forTest("a_simple_test_case", SomeTestScenario.class); assertThat(testOutcome.getReportName(), is(Digest.ofTextValue("net.thucydides.core.reports.WhenNamingTheReports/a_user_story_a_simple_test_case"))); } @Test public void the_html_report_filename_should_be_based_on_the_test_case_name() { TestOutcome testOutcome = TestOutcome.forTest("a_simple_test_case", SomeTestScenario.class); assertThat(testOutcome.getHtmlReport(), is(Digest.ofTextValue("net.thucydides.core.reports.WhenNamingTheReports/a_user_story_a_simple_test_case") + ".html")); } @Test public void the_report_screenshot_filename_should_be_based_on_the_test_case_name() { TestOutcome testOutcome = TestOutcome.forTest("a_simple_test_case", SomeTestScenario.class); assertThat(testOutcome.getScreenshotReportName(), is(Digest.ofTextValue("net.thucydides.core.reports.WhenNamingTheReports/a_user_story_a_simple_test_case") + "_screenshots")); } @Test public void the_report_filename_should_replace_spaces_with_underscores() { TestOutcome testOutcome = TestOutcome.forTestInStory("A simple test case", net.thucydides.core.model.Story.from(AUserStory.class)); String reportName = testOutcome.getReportName(XML); assertThat(reportName, is(Digest.ofTextValue("net.thucydides.core.reports.WhenNamingTheReports/a_user_story_a_simple_test_case") + ".xml")); } @Test public void the_default_simplifiedreport_filename_should_replace_spaces_with_underscores() { TestOutcome testOutcome = TestOutcome.forTestInStory("A simple test case", net.thucydides.core.model.Story.from(AUserStory.class)); String reportName = testOutcome.getSimpleReportName(XML); assertThat(reportName, is(Digest.ofTextValue("net.thucydides.core.reports.WhenNamingTheReports/a_user_story_a_simple_test_case") + ".xml")); } @Test public void the_report_filename_should_be_determined_even_if_no_method_is_named() { TestOutcome testOutcome = TestOutcome.forTest("a_simple_test_case", SomeTestScenario.class); String reportName = testOutcome.getReportName(XML); assertThat(reportName, is(Digest.ofTextValue("net.thucydides.core.reports.WhenNamingTheReports/a_user_story_a_simple_test_case") + ".xml")); } @Test public void the_html_report_filename_should_have_the_html_suffix() { TestOutcome testOutcome = new TestOutcome("a_simple_test_case"); String reportName = testOutcome.getReportName(HTML); assertThat(reportName, is(Digest.ofTextValue("a_simple_test_case") + ".html")); } @Test public void the_html_report_filename_should_refer_to_the_user_story_name_if_present() { TestOutcome testOutcome = TestOutcome.forTest("should_do_this", SomeTestScenario.class); String reportName = testOutcome.getReportName(HTML); assertThat(reportName, is(Digest.ofTextValue("net.thucydides.core.reports.WhenNamingTheReports/a_user_story_should_do_this") + ".html")); } @Test public void a_qualifier_can_be_provided_to_distinguish_html_reports_from_other_similar_reports() { TestOutcome testOutcome = TestOutcome.forTest("should_do_this", SomeTestScenario.class) .withQualifier("qualifier"); String reportName = testOutcome.getReportName(HTML); assertThat(reportName, is(Digest.ofTextValue("net.thucydides.core.reports.WhenNamingTheReports/a_user_story_should_do_this_qualifier") + ".html")); } @Test public void a_data_driven_test_should_have_the_same_report_for_all_examples() { TestOutcome testOutcome = TestOutcome.forTest("should_do_this[0]", SomeTestScenario.class); String reportName = testOutcome.getReportName(HTML); assertThat(reportName, is(Digest.ofTextValue("net.thucydides.core.reports.WhenNamingTheReports/a_user_story_should_do_this") + ".html")); } @Test public void a_null_qualifier_should_be_ignored() { TestOutcome testOutcome = TestOutcome.forTest("should_do_this", SomeTestScenario.class); String reportName = testOutcome.getReportName(HTML); assertThat(reportName, is(Digest.ofTextValue("net.thucydides.core.reports.WhenNamingTheReports/a_user_story_should_do_this") + ".html")); } @Test public void when_no_qualifier_is_provided_the_normal_report_name_is_used() { TestOutcome testOutcome = TestOutcome.forTest("should_do_this", SomeTestScenario.class); String reportName = testOutcome.getReportName(HTML); assertThat(reportName, is(Digest.ofTextValue("net.thucydides.core.reports.WhenNamingTheReports/a_user_story_should_do_this") + ".html")); } @Test public void a_qualifier_can_be_provided_to_distinguish_xml_reports_from_other_similar_reports() { TestOutcome testOutcome = TestOutcome.forTest("should_do_this", SomeTestScenario.class) .withQualifier("qualifier"); String reportName = testOutcome.getReportName(XML); assertThat(reportName, is(Digest.ofTextValue("net.thucydides.core.reports.WhenNamingTheReports/a_user_story_should_do_this_qualifier") + ".xml")); } @Test public void a_qualifier_should_be_indicated_in_the_test_title() { TestOutcome testOutcome = TestOutcome.forTest("should_do_this", SomeTestScenario.class) .withQualifier("qualifier"); assertThat(testOutcome.getTitle(), containsString("qualifier")); } }