|
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 |
29 | 28 |
|
30 | 29 |
|
31 | 30 | def set_models(version):
|
@@ -347,75 +346,89 @@ def test_clean(self):
|
347 | 346 | self.assertTrue('constant' in ve.message_dict)
|
348 | 347 | self.assertTrue('text' in ve.message_dict)
|
349 | 348 |
|
| 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 | + |
350 | 361 | def test_django_filters_missing(self):
|
351 | 362 | import sys
|
352 | 363 | from importlib import reload
|
353 | 364 | from unittest.mock import patch
|
| 365 | + from django_enum import filters |
354 | 366 |
|
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() |
359 | 373 |
|
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 |
364 | 389 |
|
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() |
367 | 419 |
|
368 | 420 | def test_enum_properties_missing(self):
|
369 |
| - import enum |
370 | 421 | import sys
|
371 | 422 | from importlib import reload
|
372 | 423 | from unittest.mock import patch
|
373 | 424 |
|
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() |
419 | 432 |
|
420 | 433 |
|
421 | 434 | class TestFieldTypeResolution(EnumTypeMixin, TestCase):
|
|
0 commit comments