class WidgetViewCountersTest(ElementParsingTestCase): def setUp(self): self.count_verifier = ViewCountVerifier(self) def test_01_narrow_cobranded_widget_has_view_counter_in_footer(self): """web.widgets.WidgetViewCountersTest 1. Narrow cobranded widget has view counter in footer""" self.verify_widget_has_standard_view_counter_in_footer("cobranded-narrow") def test_02_short_cobranded_widget_has_view_counter_in_footer(self): """web.widgets.WidgetViewCountersTest 2. Short cobranded widget has view counter in footer""" self.verify_widget_has_standard_view_counter_in_footer("cobranded-short") def test_03_cobranded_banner_widget_has_view_counter_in_header(self): """web.widgets.WidgetViewCountersTest 3. Cobranded banner widget has view counter in header""" self.verify_widget_has_standard_view_counter_in_header("cobranded-banner") def test_04_cobranded_leader_widget_has_view_counter_in_header(self): """web.widgets.WidgetViewCountersTest 4. Cobranded leader widget has view counter in header""" self.verify_widget_has_standard_view_counter_in_header("cobranded-leader") def test_05_narrow_project_widget_has_view_counter_in_footer(self): """web.widgets.WidgetViewCountersTest 5. Narrow project widget has view counter in footer""" self.verify_widget_has_standard_view_counter_in_footer("project-narrow") def test_06_project_updates_widget_has_view_counter_in_footer(self): """web.widgets.WidgetViewCountersTest 6. Project updates widget has view counter in footer""" self.verify_widget_has_standard_view_counter_in_footer("project-updates") def test_07_project_widget_with_donation_link_has_view_counter_in_footer(self): """web.widgets.WidgetViewCountersTest 7. Project widget with donation link has view counter in footer""" self.verify_widget_has_standard_view_counter_in_footer("project-contribute") def test_08_small_project_widget_has_view_counter_in_header(self): """web.widgets.WidgetViewCountersTest 8. Small project widget has view counter in header""" self.verify_widget_has_standard_view_counter_at_xpath("project-small", "//div[@id='header']/div/span") def test_09_side_feature_project_widget_with_donation_link_has_view_counter_in_footer(self): """web.widgets.WidgetViewCountersTest 9. Side feature project widget with donation link has view counter in footer""" self.verify_widget_has_standard_view_counter_in_footer("feature-side") def verify_widget_has_standard_view_counter_in_footer(self, widget_type): self.verify_widget_has_standard_view_counter_at_xpath(widget_type, "//div[@id='footer']/div/span") def verify_widget_has_standard_view_counter_in_header(self, widget_type): self.verify_widget_has_standard_view_counter_at_xpath(widget_type, "//div[@id='header']/span") def verify_widget_has_standard_view_counter_at_xpath(self, widget_type, view_count_xpath): self.count_verifier.open_page(project_widget_path(108, widget_type)) self.count_verifier.expect_exactly(1).view_counter_on_page() self.count_verifier.expect_exactly(1).standard_view_counter_at_xpath(view_count_xpath) def test_10_project_listing_widget_has_view_counter_images_for_each_listed_project(self): """web.widgets.WidgetViewCountersTest 10. Project listing widget has view counter images for each listed project""" self.count_verifier.open_page(project_listing_widget_path_for_organisation(15)) self.count_verifier.expect_exactly(12).view_counts_on_page() self.count_verifier.expect_exactly(0).view_counter_images_on_page() self.count_verifier.expect_exactly(12).view_counters_and_counter_identifiers_with_xpaths("//table[1]/tr/td[1]/div/span", "//table[1]/tr/td[1]/div/a/@href")
class ProjectViewCountersTest(ElementParsingTestCase): def setUp(self): self.count_verifier = ViewCountVerifier(self) def test_01_home_page_has_view_counters_for_featured_projects(self): """web.projects.ProjectViewCountersTest 1. Home page has view counters for featured projects""" self.count_verifier.open_page(home_page_path()) self.count_verifier.expect_exactly(3).view_counters_and_counter_identifiers_with_xpaths("//div[@class='featured_update']/div/div/p[2]", "//div[@class='featured_update']/div/div/span/img/@src") def test_02_project_listing_page_has_view_counters_for_featured_projects(self): """web.projects.ProjectViewCountersTest 2. Project listing page has view counters for featured projects""" self.count_verifier.open_page(project_listing_path()) self.count_verifier.expect_exactly(13).view_counts_on_page() # includes view counts for listed projects on the same page self.count_verifier.expect_exactly(3).view_counter_images_on_page() # currently only for the featured projects self.count_verifier.expect_exactly(3).standard_view_counters_at_xpath("//table[@id='project_showcase']/tr/td/div[3]/span") def test_03_project_listing_page_has_view_counters_for_each_listed_project(self): """web.projects.ProjectViewCountersTest 3. Project listing page has view counters for each listed project""" self.count_verifier.open_page(project_listing_path()) self.count_verifier.expect_exactly(13).view_counts_on_page() # includes view counts for listed projects on the same page self.count_verifier.expect_exactly(3).view_counter_images_on_page() # currently only for the featured projects # listed projects don't yet have counter images so we use the project URL as the view counter identifier self.count_verifier.expect_exactly(10).view_counters_and_counter_identifiers_with_xpaths("//table[@id='project_table']/tr/td/p", "//table[@id='project_table']/tr/td[1]/a[1]/@href") def test_04_project_page_has_view_counter(self): """web.projects.ProjectViewCountersTest 4. Project page has view counter""" self.count_verifier.open_page(project_path(170)) self.count_verifier.expect_exactly(1).standard_view_counter_at_xpath("//div[@id='outer_leftwing']/div/h1/span") def test_05_project_updates_page_has_view_counter(self): """web.projects.ProjectViewCountersTest 5. Project updates page has view counter""" self.count_verifier.open_page(project_updates_path(170)) self.count_verifier.expect_exactly(1).standard_view_counter_at_xpath("//div[@id='outer_leftwing']/div/h1/span")
class WidgetViewCountersTest(ElementParsingTestCase): def setUp(self): self.count_verifier = ViewCountVerifier(self) def test_01_narrow_cobranded_widget_has_view_counter_in_footer(self): """web.widgets.WidgetViewCountersTest 1. Narrow cobranded widget has view counter in footer""" self.verify_widget_has_standard_view_counter_in_footer( "cobranded-narrow") def test_02_short_cobranded_widget_has_view_counter_in_footer(self): """web.widgets.WidgetViewCountersTest 2. Short cobranded widget has view counter in footer""" self.verify_widget_has_standard_view_counter_in_footer( "cobranded-short") def test_03_cobranded_banner_widget_has_view_counter_in_header(self): """web.widgets.WidgetViewCountersTest 3. Cobranded banner widget has view counter in header""" self.verify_widget_has_standard_view_counter_in_header( "cobranded-banner") def test_04_cobranded_leader_widget_has_view_counter_in_header(self): """web.widgets.WidgetViewCountersTest 4. Cobranded leader widget has view counter in header""" self.verify_widget_has_standard_view_counter_in_header( "cobranded-leader") def test_05_narrow_project_widget_has_view_counter_in_footer(self): """web.widgets.WidgetViewCountersTest 5. Narrow project widget has view counter in footer""" self.verify_widget_has_standard_view_counter_in_footer( "project-narrow") def test_06_project_updates_widget_has_view_counter_in_footer(self): """web.widgets.WidgetViewCountersTest 6. Project updates widget has view counter in footer""" self.verify_widget_has_standard_view_counter_in_footer( "project-updates") def test_07_project_widget_with_donation_link_has_view_counter_in_footer( self): """web.widgets.WidgetViewCountersTest 7. Project widget with donation link has view counter in footer""" self.verify_widget_has_standard_view_counter_in_footer( "project-contribute") def test_08_small_project_widget_has_view_counter_in_header(self): """web.widgets.WidgetViewCountersTest 8. Small project widget has view counter in header""" self.verify_widget_has_standard_view_counter_at_xpath( "project-small", "//div[@id='header']/div/span") def test_09_side_feature_project_widget_with_donation_link_has_view_counter_in_footer( self): """web.widgets.WidgetViewCountersTest 9. Side feature project widget with donation link has view counter in footer""" self.verify_widget_has_standard_view_counter_in_footer("feature-side") def verify_widget_has_standard_view_counter_in_footer(self, widget_type): self.verify_widget_has_standard_view_counter_at_xpath( widget_type, "//div[@id='footer']/div/span") def verify_widget_has_standard_view_counter_in_header(self, widget_type): self.verify_widget_has_standard_view_counter_at_xpath( widget_type, "//div[@id='header']/span") def verify_widget_has_standard_view_counter_at_xpath( self, widget_type, view_count_xpath): self.count_verifier.open_page(project_widget_path(108, widget_type)) self.count_verifier.expect_exactly(1).view_counter_on_page() self.count_verifier.expect_exactly(1).standard_view_counter_at_xpath( view_count_xpath) def test_10_project_listing_widget_has_view_counter_images_for_each_listed_project( self): """web.widgets.WidgetViewCountersTest 10. Project listing widget has view counter images for each listed project""" self.count_verifier.open_page( project_listing_widget_path_for_organisation(15)) self.count_verifier.expect_exactly(12).view_counts_on_page() self.count_verifier.expect_exactly(0).view_counter_images_on_page() self.count_verifier.expect_exactly( 12).view_counters_and_counter_identifiers_with_xpaths( "//table[1]/tr/td[1]/div/span", "//table[1]/tr/td[1]/div/a/@href")