|
25 | 25 | from django_enum.tests.djenum.models import EnumTester
|
26 | 26 | from django_test_migrations.constants import MIGRATION_TEST_MARKER
|
27 | 27 | from django_test_migrations.contrib.unittest_case import MigratorTestCase
|
| 28 | +from django_enum import filters |
28 | 29 |
|
29 | 30 |
|
30 | 31 | def set_models(version):
|
@@ -346,6 +347,76 @@ def test_clean(self):
|
346 | 347 | self.assertTrue('constant' in ve.message_dict)
|
347 | 348 | self.assertTrue('text' in ve.message_dict)
|
348 | 349 |
|
| 350 | + def test_django_filters_missing(self): |
| 351 | + import sys |
| 352 | + from importlib import reload |
| 353 | + from unittest.mock import patch |
| 354 | + |
| 355 | + with patch.dict(sys.modules, {'django_filters': None}): |
| 356 | + reload(sys.modules['django_enum.filters']) |
| 357 | + from django_enum.filters import EnumFilter |
| 358 | + from django_enum.filters import FilterSet as EnumFilterSet |
| 359 | + |
| 360 | + class EnumTesterFilter(EnumFilterSet): |
| 361 | + class Meta: |
| 362 | + model = EnumTester |
| 363 | + fields = '__all__' |
| 364 | + |
| 365 | + self.assertRaises(ImportError, EnumTesterFilter) |
| 366 | + self.assertRaises(ImportError, EnumFilter) |
| 367 | + |
| 368 | + def test_enum_properties_missing(self): |
| 369 | + import enum |
| 370 | + import sys |
| 371 | + from importlib import reload |
| 372 | + from unittest.mock import patch |
| 373 | + |
| 374 | + with patch.dict(sys.modules, {'enum_properties': None}): |
| 375 | + reload(sys.modules['django_enum.choices']) |
| 376 | + from django_enum.choices import ( |
| 377 | + DjangoEnumPropertiesMeta, |
| 378 | + DjangoSymmetricMixin, |
| 379 | + FloatChoices, |
| 380 | + IntegerChoices, |
| 381 | + TextChoices, |
| 382 | + ) |
| 383 | + |
| 384 | + with self.assertRaises(ImportError): |
| 385 | + class ThrowsEnum(DjangoSymmetricMixin, enum.Enum): |
| 386 | + A = 1 |
| 387 | + B = 2 |
| 388 | + C = 3 |
| 389 | + |
| 390 | + with self.assertRaises(ImportError): |
| 391 | + class ThrowsEnum( |
| 392 | + enum.Enum, |
| 393 | + metaclass=DjangoEnumPropertiesMeta |
| 394 | + ): |
| 395 | + A = 1 |
| 396 | + B = 2 |
| 397 | + C = 3 |
| 398 | + |
| 399 | + with self.assertRaises(ImportError): |
| 400 | + class ThrowsEnum(IntegerChoices): |
| 401 | + A = 1 |
| 402 | + B = 2 |
| 403 | + C = 3 |
| 404 | + |
| 405 | + with self.assertRaises(ImportError): |
| 406 | + class ThrowsEnum(TextChoices): |
| 407 | + A = 'A' |
| 408 | + B = 'B' |
| 409 | + C = 'C' |
| 410 | + |
| 411 | + with self.assertRaises(ImportError): |
| 412 | + class ThrowsEnum(FloatChoices): |
| 413 | + A = 1.1 |
| 414 | + B = 2.2 |
| 415 | + C = 3.3 |
| 416 | + |
| 417 | + self.do_test_integer_choices() |
| 418 | + self.do_test_text_choices() |
| 419 | + |
349 | 420 |
|
350 | 421 | class TestFieldTypeResolution(EnumTypeMixin, TestCase):
|
351 | 422 |
|
@@ -2048,77 +2119,6 @@ def test_validate(self):
|
2048 | 2119 | self.assertTrue(tester._meta.get_field('dj_text_enum').validate('A', tester) is None)
|
2049 | 2120 | self.assertTrue(tester._meta.get_field('non_strict_int').validate(20, tester) is None)
|
2050 | 2121 |
|
2051 |
| - def test_django_filters_missing(self): |
2052 |
| - import sys |
2053 |
| - from importlib import reload |
2054 |
| - from unittest.mock import patch |
2055 |
| - |
2056 |
| - with patch.dict(sys.modules, {'django_filters': None}): |
2057 |
| - reload(sys.modules['django_enum.filters']) |
2058 |
| - from django_enum.filters import EnumFilter |
2059 |
| - from django_enum.filters import FilterSet as EnumFilterSet |
2060 |
| - |
2061 |
| - class EnumTesterFilter(EnumFilterSet): |
2062 |
| - class Meta: |
2063 |
| - model = EnumTester |
2064 |
| - fields = '__all__' |
2065 |
| - |
2066 |
| - self.assertRaises(ImportError, EnumTesterFilter) |
2067 |
| - self.assertRaises(ImportError, EnumFilter) |
2068 |
| - |
2069 |
| - def test_enum_properties_missing(self): |
2070 |
| - import enum |
2071 |
| - import sys |
2072 |
| - from importlib import reload |
2073 |
| - from unittest.mock import patch |
2074 |
| - |
2075 |
| - with patch.dict(sys.modules, {'enum_properties': None}): |
2076 |
| - reload(sys.modules['django_enum.choices']) |
2077 |
| - from django_enum.choices import ( |
2078 |
| - DjangoEnumPropertiesMeta, |
2079 |
| - DjangoSymmetricMixin, |
2080 |
| - FloatChoices, |
2081 |
| - IntegerChoices, |
2082 |
| - TextChoices, |
2083 |
| - ) |
2084 |
| - |
2085 |
| - with self.assertRaises(ImportError): |
2086 |
| - class ThrowsEnum(DjangoSymmetricMixin, enum.Enum): |
2087 |
| - A = 1 |
2088 |
| - B = 2 |
2089 |
| - C = 3 |
2090 |
| - |
2091 |
| - with self.assertRaises(ImportError): |
2092 |
| - class ThrowsEnum( |
2093 |
| - enum.Enum, |
2094 |
| - metaclass=DjangoEnumPropertiesMeta |
2095 |
| - ): |
2096 |
| - A = 1 |
2097 |
| - B = 2 |
2098 |
| - C = 3 |
2099 |
| - |
2100 |
| - with self.assertRaises(ImportError): |
2101 |
| - class ThrowsEnum(IntegerChoices): |
2102 |
| - A = 1 |
2103 |
| - B = 2 |
2104 |
| - C = 3 |
2105 |
| - |
2106 |
| - with self.assertRaises(ImportError): |
2107 |
| - class ThrowsEnum(TextChoices): |
2108 |
| - A = 'A' |
2109 |
| - B = 'B' |
2110 |
| - C = 'C' |
2111 |
| - |
2112 |
| - with self.assertRaises(ImportError): |
2113 |
| - class ThrowsEnum(FloatChoices): |
2114 |
| - A = 1.1 |
2115 |
| - B = 2.2 |
2116 |
| - C = 3.3 |
2117 |
| - |
2118 |
| - self.do_test_integer_choices() |
2119 |
| - self.do_test_text_choices() |
2120 |
| - |
2121 |
| - |
2122 | 2122 | class PerformanceTest(TestCase):
|
2123 | 2123 |
|
2124 | 2124 | COUNT = 10000
|
|
0 commit comments