Skip to content

Commit 33a95b3

Browse files
committed
run optional dependency tests in real missing and fake missing contexts
1 parent f9b3e5a commit 33a95b3

File tree

1 file changed

+71
-71
lines changed

1 file changed

+71
-71
lines changed

django_enum/tests/tests.py

Lines changed: 71 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
from django_enum.tests.djenum.models import EnumTester
2626
from django_test_migrations.constants import MIGRATION_TEST_MARKER
2727
from django_test_migrations.contrib.unittest_case import MigratorTestCase
28+
from django_enum import filters
2829

2930

3031
def set_models(version):
@@ -346,6 +347,76 @@ def test_clean(self):
346347
self.assertTrue('constant' in ve.message_dict)
347348
self.assertTrue('text' in ve.message_dict)
348349

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+
349420

350421
class TestFieldTypeResolution(EnumTypeMixin, TestCase):
351422

@@ -2048,77 +2119,6 @@ def test_validate(self):
20482119
self.assertTrue(tester._meta.get_field('dj_text_enum').validate('A', tester) is None)
20492120
self.assertTrue(tester._meta.get_field('non_strict_int').validate(20, tester) is None)
20502121

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-
21222122
class PerformanceTest(TestCase):
21232123

21242124
COUNT = 10000

0 commit comments

Comments
 (0)