File: test_conf.py

package info (click to toggle)
django-filter 25.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,228 kB
  • sloc: python: 7,970; javascript: 7,213; makefile: 157; sh: 16
file content (104 lines) | stat: -rw-r--r-- 3,429 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
from unittest import mock

from django.test import TestCase, override_settings

from django_filters.conf import is_callable, settings


class DefaultSettingsTests(TestCase):
    def test_verbose_lookups(self):
        self.assertIsInstance(settings.VERBOSE_LOOKUPS, dict)
        self.assertIn("exact", settings.VERBOSE_LOOKUPS)

    def test_default_lookup_expr(self):
        self.assertEqual(settings.DEFAULT_LOOKUP_EXPR, "exact")

    def test_disable_help_text(self):
        self.assertFalse(settings.DISABLE_HELP_TEXT)

    def test_empty_choice_label(self):
        self.assertEqual(settings.EMPTY_CHOICE_LABEL, "---------")

    def test_null_choice_label(self):
        self.assertIsNone(settings.NULL_CHOICE_LABEL)

    def test_null_choice_value(self):
        self.assertEqual(settings.NULL_CHOICE_VALUE, "null")


class OverrideSettingsTests(TestCase):
    def test_attribute_override(self):
        self.assertIsInstance(settings.VERBOSE_LOOKUPS, dict)

        original = settings.VERBOSE_LOOKUPS

        with override_settings(FILTERS_VERBOSE_LOOKUPS=None):
            self.assertIsNone(settings.VERBOSE_LOOKUPS)

        self.assertIs(settings.VERBOSE_LOOKUPS, original)

    def test_missing_attribute_override(self):
        # ensure that changed setting behaves correctly when
        # not originally present in the user's settings.
        from django.conf import settings as dj_settings

        self.assertFalse(hasattr(dj_settings, "FILTERS_DISABLE_HELP_TEXT"))

        # Default value
        self.assertFalse(settings.DISABLE_HELP_TEXT)

        with override_settings(FILTERS_DISABLE_HELP_TEXT=True):
            self.assertTrue(settings.DISABLE_HELP_TEXT)

        # Revert to default
        self.assertFalse(settings.DISABLE_HELP_TEXT)

    def test_non_filters_setting(self):
        self.assertFalse(hasattr(settings, "USE_TZ"))

        with override_settings(USE_TZ=False):
            self.assertFalse(hasattr(settings, "USE_TZ"))

        self.assertFalse(hasattr(settings, "USE_TZ"))

    def test_non_existent_setting(self):
        self.assertFalse(hasattr(settings, "FILTERS_FOOBAR"))
        self.assertFalse(hasattr(settings, "FOOBAR"))

        with override_settings(FILTERS_FOOBAR="blah"):
            self.assertFalse(hasattr(settings, "FILTERS_FOOBAR"))
            self.assertFalse(hasattr(settings, "FOOBAR"))

        self.assertFalse(hasattr(settings, "FILTERS_FOOBAR"))
        self.assertFalse(hasattr(settings, "FOOBAR"))


class IsCallableTests(TestCase):
    def test_behavior(self):
        def func():
            pass

        class Class:
            def __call__(self):
                pass

            def method(self):
                pass

        c = Class()

        self.assertTrue(is_callable(func))
        self.assertFalse(is_callable(Class))
        self.assertTrue(is_callable(c))
        self.assertTrue(is_callable(c.method))


class SettingsObjectTestCase(TestCase):
    @mock.patch("django_filters.conf.DEPRECATED_SETTINGS", ["TEST_123"])
    @mock.patch.dict("django_filters.conf.DEFAULTS", {"TEST_123": True})
    def test_get_setting_deprecated(self):
        with override_settings(FILTERS_TEST_123=True):
            with self.assertWarns(DeprecationWarning):
                settings.change_setting("FILTERS_TEST_123", True, True)
                test_setting = settings.get_setting("TEST_123")
                self.assertTrue(test_setting)