def setUp(self):
     self.count_verifier = ViewCountVerifier(self)
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")
Example #4
0
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")