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)
def test_toggle_sort_order(self): decision = DecisionList() self.assertEquals('', decision.toggle_sort_order('-')) self.assertEquals('-', decision.toggle_sort_order(''))