mirror of
https://github.com/django/django.git
synced 2025-08-03 10:34:04 +00:00
Fixed #25746 -- Isolated inlined test models registration.
Thanks to Tim for the review.
This commit is contained in:
parent
3096f4b082
commit
a08fda2111
29 changed files with 285 additions and 371 deletions
|
@ -1,9 +1,9 @@
|
|||
from __future__ import unicode_literals
|
||||
|
||||
from django.apps import apps
|
||||
from django.db import models
|
||||
from django.template import Context, Template
|
||||
from django.test import TestCase, override_settings
|
||||
from django.test.utils import isolate_apps
|
||||
from django.utils.encoding import force_text
|
||||
|
||||
from .models import (
|
||||
|
@ -91,82 +91,58 @@ class ManagersRegressionTests(TestCase):
|
|||
AbstractBase1.objects.all()
|
||||
|
||||
@override_settings(TEST_SWAPPABLE_MODEL='managers_regress.Parent')
|
||||
@isolate_apps('managers_regress')
|
||||
def test_swappable_manager(self):
|
||||
# The models need to be removed after the test in order to prevent bad
|
||||
# interactions with the flush operation in other tests.
|
||||
_old_models = apps.app_configs['managers_regress'].models.copy()
|
||||
class SwappableModel(models.Model):
|
||||
class Meta:
|
||||
swappable = 'TEST_SWAPPABLE_MODEL'
|
||||
|
||||
try:
|
||||
class SwappableModel(models.Model):
|
||||
class Meta:
|
||||
swappable = 'TEST_SWAPPABLE_MODEL'
|
||||
|
||||
# Accessing the manager on a swappable model should
|
||||
# raise an attribute error with a helpful message
|
||||
msg = (
|
||||
"Manager isn't available; 'managers_regress.SwappableModel' "
|
||||
"has been swapped for 'managers_regress.Parent'"
|
||||
)
|
||||
with self.assertRaisesMessage(AttributeError, msg):
|
||||
SwappableModel.objects.all()
|
||||
finally:
|
||||
apps.app_configs['managers_regress'].models = _old_models
|
||||
apps.all_models['managers_regress'] = _old_models
|
||||
apps.clear_cache()
|
||||
# Accessing the manager on a swappable model should
|
||||
# raise an attribute error with a helpful message
|
||||
msg = (
|
||||
"Manager isn't available; 'managers_regress.SwappableModel' "
|
||||
"has been swapped for 'managers_regress.Parent'"
|
||||
)
|
||||
with self.assertRaisesMessage(AttributeError, msg):
|
||||
SwappableModel.objects.all()
|
||||
|
||||
@override_settings(TEST_SWAPPABLE_MODEL='managers_regress.Parent')
|
||||
@isolate_apps('managers_regress')
|
||||
def test_custom_swappable_manager(self):
|
||||
# The models need to be removed after the test in order to prevent bad
|
||||
# interactions with the flush operation in other tests.
|
||||
_old_models = apps.app_configs['managers_regress'].models.copy()
|
||||
class SwappableModel(models.Model):
|
||||
stuff = models.Manager()
|
||||
|
||||
try:
|
||||
class SwappableModel(models.Model):
|
||||
stuff = models.Manager()
|
||||
class Meta:
|
||||
swappable = 'TEST_SWAPPABLE_MODEL'
|
||||
|
||||
class Meta:
|
||||
swappable = 'TEST_SWAPPABLE_MODEL'
|
||||
|
||||
# Accessing the manager on a swappable model with an
|
||||
# explicit manager should raise an attribute error with a
|
||||
# helpful message
|
||||
msg = (
|
||||
"Manager isn't available; 'managers_regress.SwappableModel' "
|
||||
"has been swapped for 'managers_regress.Parent'"
|
||||
)
|
||||
with self.assertRaisesMessage(AttributeError, msg):
|
||||
SwappableModel.stuff.all()
|
||||
finally:
|
||||
apps.app_configs['managers_regress'].models = _old_models
|
||||
apps.all_models['managers_regress'] = _old_models
|
||||
apps.clear_cache()
|
||||
# Accessing the manager on a swappable model with an
|
||||
# explicit manager should raise an attribute error with a
|
||||
# helpful message
|
||||
msg = (
|
||||
"Manager isn't available; 'managers_regress.SwappableModel' "
|
||||
"has been swapped for 'managers_regress.Parent'"
|
||||
)
|
||||
with self.assertRaisesMessage(AttributeError, msg):
|
||||
SwappableModel.stuff.all()
|
||||
|
||||
@override_settings(TEST_SWAPPABLE_MODEL='managers_regress.Parent')
|
||||
@isolate_apps('managers_regress')
|
||||
def test_explicit_swappable_manager(self):
|
||||
# The models need to be removed after the test in order to prevent bad
|
||||
# interactions with the flush operation in other tests.
|
||||
_old_models = apps.app_configs['managers_regress'].models.copy()
|
||||
class SwappableModel(models.Model):
|
||||
objects = models.Manager()
|
||||
|
||||
try:
|
||||
class SwappableModel(models.Model):
|
||||
objects = models.Manager()
|
||||
class Meta:
|
||||
swappable = 'TEST_SWAPPABLE_MODEL'
|
||||
|
||||
class Meta:
|
||||
swappable = 'TEST_SWAPPABLE_MODEL'
|
||||
|
||||
# Accessing the manager on a swappable model with an
|
||||
# explicit manager should raise an attribute error with a
|
||||
# helpful message
|
||||
msg = (
|
||||
"Manager isn't available; 'managers_regress.SwappableModel' "
|
||||
"has been swapped for 'managers_regress.Parent'"
|
||||
)
|
||||
with self.assertRaisesMessage(AttributeError, msg):
|
||||
SwappableModel.objects.all()
|
||||
finally:
|
||||
apps.app_configs['managers_regress'].models = _old_models
|
||||
apps.all_models['managers_regress'] = _old_models
|
||||
apps.clear_cache()
|
||||
# Accessing the manager on a swappable model with an
|
||||
# explicit manager should raise an attribute error with a
|
||||
# helpful message
|
||||
msg = (
|
||||
"Manager isn't available; 'managers_regress.SwappableModel' "
|
||||
"has been swapped for 'managers_regress.Parent'"
|
||||
)
|
||||
with self.assertRaisesMessage(AttributeError, msg):
|
||||
SwappableModel.objects.all()
|
||||
|
||||
def test_regress_3871(self):
|
||||
related = RelatedModel.objects.create()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue