Files
old-saburly-wagtail-web/env/lib/python3.10/site-packages/wagtail/tests/test_draft_model.py
2024-08-27 20:33:44 +02:00

65 lines
2.3 KiB
Python

from django.apps import apps
from django.core import checks
from django.db import models
from django.test import TestCase
from wagtail.models import DraftStateMixin, RevisionMixin
class TestDraftStateMixin(TestCase):
def tearDown(self):
# Unregister the models from the overall model registry
# so that it doesn't break tests elsewhere.
# We can probably replace this with Django's @isolate_apps decorator.
for package in ("wagtailcore", "wagtail.tests"):
try:
for model in (
"draftstatewithoutrevisionmodel",
"draftstateincorrectrevisionmodel",
"draftstatewithrevisionmodel",
):
del apps.all_models[package][model]
except KeyError:
pass
apps.clear_cache()
def test_missing_revision_mixin(self):
class DraftStateWithoutRevisionModel(DraftStateMixin, models.Model):
pass
self.assertEqual(
DraftStateWithoutRevisionModel.check(),
[
checks.Error(
"DraftStateMixin requires RevisionMixin to be applied after DraftStateMixin.",
hint="Add RevisionMixin to the model's base classes after DraftStateMixin.",
obj=DraftStateWithoutRevisionModel,
id="wagtailcore.E004",
)
],
)
def test_incorrect_revision_mixin_order(self):
class DraftStateIncorrectRevisionModel(
RevisionMixin, DraftStateMixin, models.Model
):
pass
self.assertEqual(
DraftStateIncorrectRevisionModel.check(),
[
checks.Error(
"DraftStateMixin requires RevisionMixin to be applied after DraftStateMixin.",
hint="Add RevisionMixin to the model's base classes after DraftStateMixin.",
obj=DraftStateIncorrectRevisionModel,
id="wagtailcore.E004",
)
],
)
def test_correct_model(self):
class DraftStateWithRevisionModel(DraftStateMixin, RevisionMixin, models.Model):
pass
self.assertEqual(DraftStateWithRevisionModel.check(), [])