diff --git a/mailing/tests/test_forms.py b/mailing/tests/test_forms.py index f7a0c6890..9b51873f0 100644 --- a/mailing/tests/test_forms.py +++ b/mailing/tests/test_forms.py @@ -1,5 +1,6 @@ """Tests for mailing app forms.""" from django.test import TestCase +from django.contrib.contenttypes.models import ContentType from mailing.tests.forms import TestBaseEmailTemplateForm @@ -13,6 +14,10 @@ def setUp(self): "internal_name": "notification 01", } + def tearDown(self): + super().tearDown() + ContentType.objects.clear_cache() + def test_validate_required_fields(self): required = set(self.data) form = TestBaseEmailTemplateForm(data={}) diff --git a/pydotorg/settings/local.py b/pydotorg/settings/local.py index a8a4fdb09..e4faa3f44 100644 --- a/pydotorg/settings/local.py +++ b/pydotorg/settings/local.py @@ -63,3 +63,5 @@ REST_FRAMEWORK['DEFAULT_RENDERER_CLASSES'] += ( 'rest_framework.renderers.BrowsableAPIRenderer', ) + +BAKER_CUSTOM_CLASS = "pydotorg.tests.baker.PolymorphicAwareBaker" diff --git a/pydotorg/tests/baker.py b/pydotorg/tests/baker.py new file mode 100644 index 000000000..f7df29441 --- /dev/null +++ b/pydotorg/tests/baker.py @@ -0,0 +1,17 @@ +from polymorphic.models import PolymorphicModel +from model_bakery import baker + + +class PolymorphicAwareBaker(baker.Baker): + """ + Our custom model baker ignores the polymorphic_ctype field on all polymorphic + models - this allows the base class to set it correctly. + + See https://github.com/python/pythondotorg/issues/2567 + """ + + def get_fields(self): + fields = super().get_fields() + if issubclass(self.model, PolymorphicModel): + fields = {field for field in fields if field.name != "polymorphic_ctype"} + return fields