summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/defer_regress/tests.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/defer_regress/tests.py b/tests/defer_regress/tests.py
index d8c6e01884..cc1658ce58 100644
--- a/tests/defer_regress/tests.py
+++ b/tests/defer_regress/tests.py
@@ -3,8 +3,10 @@ from __future__ import unicode_literals
from operator import attrgetter
from django.apps import apps
+from django.apps.registry import Apps
from django.contrib.contenttypes.models import ContentType
from django.contrib.sessions.backends.db import SessionStore
+from django.db import models
from django.db.models import Count
from django.db.models.query_utils import (
DeferredAttribute, deferred_class_factory,
@@ -263,6 +265,24 @@ class DeferRegressionTest(TestCase):
deferred_cls = deferred_class_factory(Item, ())
self.assertFalse(deferred_cls._deferred)
+ def test_deferred_class_factory_apps_reuse(self):
+ """
+ #25563 - model._meta.apps should be used for caching and
+ retrieval of the created proxy class.
+ """
+ isolated_apps = Apps(['defer_regress'])
+
+ class BaseModel(models.Model):
+ field = models.BooleanField()
+
+ class Meta:
+ apps = isolated_apps
+ app_label = 'defer_regress'
+
+ deferred_model = deferred_class_factory(BaseModel, ['field'])
+ self.assertIs(deferred_model._meta.apps, isolated_apps)
+ self.assertIs(deferred_class_factory(BaseModel, ['field']), deferred_model)
+
class DeferAnnotateSelectRelatedTest(TestCase):
def test_defer_annotate_select_related(self):