Beispiel #1
0
    def test_sorting_header_links(self):
        # Ensure that the links provided in table headers give the correct next sort link
        # Use default sort for each sort_option and assert that other headers are correct.
        self.create_decisions_with_different_statuses()

        decision = DecisionList()
        default_sort_options = deepcopy(decision.sort_options)
        sort_table_headers = deepcopy(decision.sort_table_headers)
        unsortable_headers = decision.unsortable_fields[:]

        for header_list in sort_table_headers.values():
            for header in unsortable_headers:
                index = header_list.index(header)
                header_list.pop(index)

        for page, sort_queries in sort_table_headers.iteritems():
            page_url = reverse('publicweb_item_list',
                               args=[self.bettysorg.slug, page])

            sort_query_defaults = {}
            # Build expected defaults
            for sort_query in sort_queries:
                default_sort_order = default_sort_options[sort_query]
                default_sort_query = default_sort_order + sort_query
                sort_query_defaults[sort_query] = default_sort_query
            sort_query_defaults['id'] = ''  # Override the default sort for id

            for sort_query in sort_queries:
                sort_query_tests = sort_query_defaults.copy()
                test_query = sort_query_tests.pop(sort_query)

                response = self.client.get(page_url, {'sort': test_query})
                html = fromstring(response.content)

                # Loop through the shortened sort_query_tests to check that default links are being given
                for selector, sort_query_test in sort_query_tests.iteritems():
                    selector = CSSSelector('.summary-header th.' + selector +
                                           ' a')
                    link_ending = selector(html)[0].attrib['href'].split(
                        page_url)[1]

                    if sort_query_test == '':
                        self.assertFalse(link_ending)
                    else:
                        self.assertEquals(
                            link_ending.split('?sort=')[1], sort_query_test)

                # Finally check that the test_query column has the opposite sort
                selector = CSSSelector('.summary-header th.' + sort_query +
                                       ' a')
                link_ending = selector(html)[0].attrib['href'].split(
                    page_url)[1].split('?sort=')[1]
                reversed_sort_order = decision.toggle_sort_order(
                    default_sort_options[sort_query])
                expected_link_ending = reversed_sort_order + sort_query
                self.assertEquals(expected_link_ending, link_ending)
    def test_sorting_header_links(self):
        # Ensure that the links provided in table headers give the correct next sort link
        # Use default sort for each sort_option and assert that other headers are correct.
        self.create_decisions_with_different_statuses()

        decision = DecisionList()
        default_sort_options = deepcopy(decision.sort_options)
        sort_table_headers = deepcopy(decision.sort_table_headers)
        unsortable_headers = decision.unsortable_fields[:]

        for header_list in sort_table_headers.values():
            for header in unsortable_headers:
                index = header_list.index(header)
                header_list.pop(index)

        for page, sort_queries in sort_table_headers.iteritems():
            page_url = reverse('publicweb_item_list', args=[self.bettysorg.slug, page])

            sort_query_defaults = {}
            # Build expected defaults
            for sort_query in sort_queries:
                default_sort_order = default_sort_options[sort_query]
                default_sort_query = default_sort_order + sort_query
                sort_query_defaults[sort_query] = default_sort_query
            sort_query_defaults['id'] = ''  # Override the default sort for id

            for sort_query in sort_queries:
                sort_query_tests = sort_query_defaults.copy()
                test_query = sort_query_tests.pop(sort_query)

                response = self.client.get(page_url, {'sort': test_query})
                html = fromstring(response.content)

                # Loop through the shortened sort_query_tests to check that default links are being given
                for selector, sort_query_test in sort_query_tests.iteritems():
                    selector = CSSSelector('.summary-header th.' + selector + ' a')
                    link_ending = selector(html)[0].attrib['href'].split(page_url)[1]

                    if sort_query_test == '':
                        self.assertFalse(link_ending)
                    else:
                        self.assertEquals(link_ending.split('?sort=')[1], sort_query_test)

                # Finally check that the test_query column has the opposite sort
                selector = CSSSelector('.summary-header th.' + sort_query + ' a')
                link_ending = selector(html)[0].attrib['href'].split(page_url)[1].split('?sort=')[1]
                reversed_sort_order = decision.toggle_sort_order(default_sort_options[sort_query])
                expected_link_ending = reversed_sort_order + sort_query
                self.assertEquals(expected_link_ending, link_ending)
Beispiel #3
0
 def test_toggle_sort_order(self):
     decision = DecisionList()
     self.assertEquals('', decision.toggle_sort_order('-'))
     self.assertEquals('-', decision.toggle_sort_order(''))
 def test_toggle_sort_order(self):
     decision = DecisionList()
     self.assertEquals('', decision.toggle_sort_order('-'))
     self.assertEquals('-', decision.toggle_sort_order(''))