Skip to content

Commit 872d531

Browse files
committed
augment dep missing tests with real tests
1 parent 33a95b3 commit 872d531

File tree

1 file changed

+70
-57
lines changed

1 file changed

+70
-57
lines changed

django_enum/tests/tests.py

Lines changed: 70 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
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
2928

3029

3130
def set_models(version):
@@ -347,75 +346,89 @@ def test_clean(self):
347346
self.assertTrue('constant' in ve.message_dict)
348347
self.assertTrue('text' in ve.message_dict)
349348

349+
def do_django_filters_missing(self):
350+
from django_enum.filters import EnumFilter
351+
from django_enum.filters import FilterSet as EnumFilterSet
352+
353+
class EnumTesterFilter(EnumFilterSet):
354+
class Meta:
355+
model = EnumTester
356+
fields = '__all__'
357+
358+
self.assertRaises(ImportError, EnumTesterFilter)
359+
self.assertRaises(ImportError, EnumFilter)
360+
350361
def test_django_filters_missing(self):
351362
import sys
352363
from importlib import reload
353364
from unittest.mock import patch
365+
from django_enum import filters
354366

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
367+
if 'django_filters' in sys.modules:
368+
with patch.dict(sys.modules, {'django_filters': None}):
369+
reload(sys.modules['django_enum.filters'])
370+
self.do_django_filters_missing()
371+
else:
372+
self.do_django_filters_missing()
359373

360-
class EnumTesterFilter(EnumFilterSet):
361-
class Meta:
362-
model = EnumTester
363-
fields = '__all__'
374+
def do_enum_properties_missing(self):
375+
import enum
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
364389

365-
self.assertRaises(ImportError, EnumTesterFilter)
366-
self.assertRaises(ImportError, EnumFilter)
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()
367419

368420
def test_enum_properties_missing(self):
369-
import enum
370421
import sys
371422
from importlib import reload
372423
from unittest.mock import patch
373424

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()
425+
if 'enum_properties' in sys.modules:
426+
with patch.dict(sys.modules, {'enum_properties': None}):
427+
from django_enum import choices
428+
reload(sys.modules['django_enum.choices'])
429+
self.do_enum_properties_missing()
430+
else:
431+
self.do_enum_properties_missing()
419432

420433

421434
class TestFieldTypeResolution(EnumTypeMixin, TestCase):

0 commit comments

Comments
 (0)