Esempio n. 1
0
 def test_header_names_must_be_unique(self):
     HEADERS = (
         Header('field_a'),
         Header('field_a'),
     )
     with self.assertRaises(ImproperlyConfigured):
         HeaderSet(None, HEADERS)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)))
Esempio n. 5
0
    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=')
Esempio n. 6
0
 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)
Esempio n. 7
0
 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])
Esempio n. 8
0
 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])
Esempio n. 9
0
 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, '')
Esempio n. 10
0
    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=')
Esempio n. 11
0
    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])
Esempio n. 12
0
    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),
        )
Esempio n. 13
0
    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')
Esempio n. 14
0
    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)
Esempio n. 15
0
    def test_sort_parameter_with_prefix(self):
        self.form.prefix = 'test'
        header = HeaderSet(self.form, self.HEADERS)[0]

        self.assertEqual(header.param, 'test-sorts')
Esempio n. 16
0
    def test_sort_parameter_no_prefix(self):
        self.assertIsNone(self.form.prefix)
        header = HeaderSet(self.form, self.HEADERS)[0]

        self.assertEqual(header.param, 'sorts')