def test_header_names_must_be_unique(self): HEADERS = ( Header('field_a'), Header('field_a'), ) with self.assertRaises(ImproperlyConfigured): HeaderSet(None, HEADERS)
def test_is_active_property_while_active_and_descending(self): self.form.data = {'sorts': '-1'} self.form.cleaned_data = {'sorts': [-1]} header = HeaderSet(self.form, self.HEADERS)[0] self.assertTrue(header.is_active) self.assertFalse(header.is_ascending) self.assertTrue(header.is_descending)
def test_bound_header_pass_through_properties(self): header_set = HeaderSet(self.form, self.HEADERS) self.assertEqual(header_set[0].header, self.HEADERS[0]) self.assertEqual(header_set[0].name, self.HEADERS[0].name) self.assertEqual(header_set[0].label, self.HEADERS[0].label) self.assertEqual(header_set[0].column_name, self.HEADERS[0].column_name) self.assertEqual(header_set[0].is_sortable, self.HEADERS[0].is_sortable)
def test_iteration_yields_bound_headers(self): HEADERS = ( Header('field_a'), Header('field_b', 'Test Label'), Header('test_name', 'Test Name', column_name='field_c'), Header('created_at', is_sortable=False), ) form = mock.NonCallableMagicMock(forms.Form) form.prefix = None header_set = HeaderSet(form, HEADERS) self.assertTrue( all((isinstance(header, BoundHeader) for header in header_set)))
def test_bound_header_querystring_with_querydict(self): HEADERS = (Header('field_a'), ) self.form.data = QueryDict('field=value') self.form.cleaned_data = {'field': 'value'} self.form.HEADERS = HEADERS header_set = HeaderSet(self.form, HEADERS) self.assertQueryStringEqual(header_set['field_a'].querystring, 'field=value&sorts=1') self.assertQueryStringEqual(header_set['field_a'].singular_querystring, 'field=value&sorts=1') self.assertQueryStringEqual(header_set['field_a'].remove_querystring, 'field=value&sorts=')
def test_sort_priority_display(self): HEADERS = ( Header('field_a'), Header('field_b'), Header('field_c'), ) self.form.data = {'sorts': '-2.1'} self.form.cleaned_data = {'sorts': [-2, 1]} self.form.HEADERS = HEADERS header_set = HeaderSet(self.form, HEADERS) self.assertEqual(header_set['field_a'].priority, 2) self.assertEqual(header_set['field_b'].priority, 1) self.assertEqual(header_set['field_c'].priority, None)
def test_add_to_sorts_with_active_sorts(self): HEADERS = ( Header('field_a'), Header('field_b'), Header('field_c'), ) self.form.data = {'sorts': '1.-2'} self.form.cleaned_data = {'sorts': [1, -2]} self.form.HEADERS = HEADERS header_set = HeaderSet(self.form, HEADERS) self.assertEqual(header_set['field_a'].add_to_sorts(), [-1, -2]) self.assertEqual(header_set['field_b'].add_to_sorts(), [2, 1]) self.assertEqual(header_set['field_c'].add_to_sorts(), [3, 1, -2])
def test_add_to_sorts_with_no_sorts(self): HEADERS = ( Header('field_a'), Header('field_b'), Header('field_c'), ) self.form.data = {} self.form.cleaned_data = {'sorts': []} self.form.HEADERS = HEADERS header_set = HeaderSet(self.form, HEADERS) self.assertEqual(header_set['field_a'].add_to_sorts(), [1]) self.assertEqual(header_set['field_b'].add_to_sorts(), [2]) self.assertEqual(header_set['field_c'].add_to_sorts(), [3])
def test_css_classes(self): HEADERS = ( Header('field_a'), Header('field_b'), Header('field_c'), ) self.form.data = {'sorts': '1.-2'} self.form.cleaned_data = {'sorts': [1, -2]} self.form.HEADERS = HEADERS header_set = HeaderSet(self.form, HEADERS) self.assertEqual(header_set['field_a'].css_classes, 'active ascending') self.assertEqual(header_set['field_b'].css_classes, 'active descending') self.assertEqual(header_set['field_c'].css_classes, '')
def test_bound_header_querystring_with_querydict_overwrites_instead_of_appending( self): HEADERS = (Header('field_a'), ) self.form.data = QueryDict('field=value&sorts=1') self.form.cleaned_data = {'field': 'value', 'sorts': [1]} self.form.HEADERS = HEADERS header_set = HeaderSet(self.form, HEADERS) # It used to output 'field=value&sorts=1&sorts=-1' self.assertQueryStringEqual(header_set['field_a'].querystring, 'field=value&sorts=-1') self.assertQueryStringEqual(header_set['field_a'].singular_querystring, 'field=value&sorts=-1') self.assertQueryStringEqual(header_set['field_a'].remove_querystring, 'field=value&sorts=')
def test_index_and_key_lookups(self): HEADERS = ( Header('field_a'), Header('field_b', 'Test Label'), Header('test_name', 'Test Name', column_name='field_c'), Header('created_at', is_sortable=False), ) form = mock.NonCallableMagicMock(forms.Form) form.prefix = None header_set = HeaderSet(form, HEADERS) self.assertIsInstance(header_set[0], BoundHeader) self.assertEqual(header_set[0].header, HEADERS[0]) self.assertIsInstance(header_set['field_b'], BoundHeader) self.assertEqual(header_set['field_b'].header, HEADERS[1])
def do_header_set_assertions(self, HEADERS): header_set = HeaderSet(None, HEADERS) self.assertTrue(len(header_set), 4) self.assertSequenceEqual( [header.name for header in header_set.headers.values()], ('field_a', 'field_b', 'test_name', 'created_at'), ) self.assertSequenceEqual( [header.label for header in header_set.headers.values()], ('Field a', 'Test Label', 'Test Name', 'Created at'), ) self.assertSequenceEqual( [header.column_name for header in header_set.headers.values()], ('field_a', 'field_b', 'field_c', None), ) self.assertSequenceEqual( [header.is_sortable for header in header_set.headers.values()], (True, True, True, False), )
def test_bound_header_querystring_properties(self): HEADERS = ( Header('field_a'), Header('field_b'), Header('field_c'), ) self.form.data = {'sorts': '1.-2'} self.form.cleaned_data = {'sorts': [1, -2]} self.form.HEADERS = HEADERS header_set = HeaderSet(self.form, HEADERS) self.assertEqual(header_set['field_a'].querystring, 'sorts=-1.-2') self.assertEqual(header_set['field_a'].singular_querystring, 'sorts=-1') self.assertEqual(header_set['field_a'].remove_querystring, 'sorts=-2') self.assertEqual(header_set['field_b'].querystring, 'sorts=2.1') self.assertEqual(header_set['field_b'].singular_querystring, 'sorts=2') self.assertEqual(header_set['field_b'].remove_querystring, 'sorts=1') self.assertEqual(header_set['field_c'].querystring, 'sorts=3.1.-2') self.assertEqual(header_set['field_c'].singular_querystring, 'sorts=3') self.assertEqual(header_set['field_c'].remove_querystring, 'sorts=1.-2')
def test_is_active_property_while_not_active(self): header = HeaderSet(self.form, self.HEADERS)[0] self.assertFalse(header.is_active) self.assertFalse(header.is_ascending) self.assertFalse(header.is_descending)
def test_sort_parameter_with_prefix(self): self.form.prefix = 'test' header = HeaderSet(self.form, self.HEADERS)[0] self.assertEqual(header.param, 'test-sorts')
def test_sort_parameter_no_prefix(self): self.assertIsNone(self.form.prefix) header = HeaderSet(self.form, self.HEADERS)[0] self.assertEqual(header.param, 'sorts')