summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/admin_views/tests.py4
-rw-r--r--tests/defer/tests.py11
-rw-r--r--tests/defer_regress/tests.py63
3 files changed, 7 insertions, 71 deletions
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
index b657afe859..b1c7a29a03 100644
--- a/tests/admin_views/tests.py
+++ b/tests/admin_views/tests.py
@@ -3650,7 +3650,7 @@ class AdminCustomQuerysetTest(TestCase):
self.assertContains(
response,
'<li class="success">The short message "<a href="%s">'
- 'ShortMessage_Deferred_timestamp object</a>" was changed successfully.</li>' %
+ 'ShortMessage object</a>" was changed successfully.</li>' %
reverse('admin:admin_views_shortmessage_change', args=(sm.pk,)), html=True
)
@@ -3697,7 +3697,7 @@ class AdminCustomQuerysetTest(TestCase):
self.assertContains(
response,
'<li class="success">The paper "<a href="%s">'
- 'Paper_Deferred_author object</a>" was changed successfully.</li>' %
+ 'Paper object</a>" was changed successfully.</li>' %
reverse('admin:admin_views_paper_change', args=(p.pk,)), html=True
)
diff --git a/tests/defer/tests.py b/tests/defer/tests.py
index b148c31906..8303ab5068 100644
--- a/tests/defer/tests.py
+++ b/tests/defer/tests.py
@@ -1,6 +1,6 @@
from __future__ import unicode_literals
-from django.db.models.query_utils import DeferredAttribute, InvalidQuery
+from django.db.models.query_utils import InvalidQuery
from django.test import TestCase
from .models import (
@@ -15,10 +15,7 @@ class AssertionMixin(object):
we examine attribute values. Therefore, this method returns the number
of deferred fields on returned instances.
"""
- count = 0
- for field in obj._meta.fields:
- if isinstance(obj.__class__.__dict__.get(field.attname), DeferredAttribute):
- count += 1
+ count = len(obj.get_deferred_fields())
self.assertEqual(count, num)
@@ -45,7 +42,9 @@ class DeferTests(AssertionMixin, TestCase):
# of them except the model's primary key see #15494
self.assert_delayed(qs.only("pk")[0], 3)
# You can use 'pk' with reverse foreign key lookups.
- self.assert_delayed(self.s1.primary_set.all().only('pk')[0], 3)
+ # The related_id is alawys set even if it's not fetched from the DB,
+ # so pk and related_id are not deferred.
+ self.assert_delayed(self.s1.primary_set.all().only('pk')[0], 2)
def test_defer_only_chaining(self):
qs = Primary.objects.all()
diff --git a/tests/defer_regress/tests.py b/tests/defer_regress/tests.py
index eb2fb8ecfc..899b437120 100644
--- a/tests/defer_regress/tests.py
+++ b/tests/defer_regress/tests.py
@@ -2,16 +2,10 @@ from __future__ import unicode_literals
from operator import attrgetter
-from django.apps 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,
-)
from django.test import TestCase, override_settings
-from django.test.utils import isolate_apps
from .models import (
Base, Child, Derived, Feature, Item, ItemAndSimpleItem, Leaf, Location,
@@ -98,28 +92,6 @@ class DeferRegressionTest(TestCase):
list(SimpleItem.objects.annotate(Count('feature')).only('name')),
list)
- def test_ticket_11936(self):
- app_config = apps.get_app_config("defer_regress")
- # Regression for #11936 - get_models should not return deferred models
- # by default. Run a couple of defer queries so that app registry must
- # contain some deferred classes. It might contain a lot more classes
- # depending on the order the tests are ran.
- list(Item.objects.defer("name"))
- list(Child.objects.defer("value"))
- klasses = {model.__name__ for model in app_config.get_models()}
- self.assertIn("Child", klasses)
- self.assertIn("Item", klasses)
- self.assertNotIn("Child_Deferred_value", klasses)
- self.assertNotIn("Item_Deferred_name", klasses)
- self.assertFalse(any(k._deferred for k in app_config.get_models()))
-
- klasses_with_deferred = {model.__name__ for model in app_config.get_models(include_deferred=True)}
- self.assertIn("Child", klasses_with_deferred)
- self.assertIn("Item", klasses_with_deferred)
- self.assertIn("Child_Deferred_value", klasses_with_deferred)
- self.assertIn("Item_Deferred_name", klasses_with_deferred)
- self.assertTrue(any(k._deferred for k in app_config.get_models(include_deferred=True)))
-
@override_settings(SESSION_SERIALIZER='django.contrib.sessions.serializers.PickleSerializer')
def test_ticket_12163(self):
# Test for #12163 - Pickling error saving session with unsaved model
@@ -246,41 +218,6 @@ class DeferRegressionTest(TestCase):
qs = SpecialFeature.objects.only('feature__item__name').select_related('feature__item')
self.assertEqual(len(qs), 1)
- def test_deferred_class_factory(self):
- new_class = deferred_class_factory(
- Item,
- ('this_is_some_very_long_attribute_name_so_modelname_truncation_is_triggered',))
- self.assertEqual(
- new_class.__name__,
- 'Item_Deferred_this_is_some_very_long_attribute_nac34b1f495507dad6b02e2cb235c875e')
-
- def test_deferred_class_factory_already_deferred(self):
- deferred_item1 = deferred_class_factory(Item, ('name',))
- deferred_item2 = deferred_class_factory(deferred_item1, ('value',))
- self.assertIs(deferred_item2._meta.proxy_for_model, Item)
- self.assertNotIsInstance(deferred_item2.__dict__.get('name'), DeferredAttribute)
- self.assertIsInstance(deferred_item2.__dict__.get('value'), DeferredAttribute)
-
- def test_deferred_class_factory_no_attrs(self):
- deferred_cls = deferred_class_factory(Item, ())
- self.assertFalse(deferred_cls._deferred)
-
- @isolate_apps('defer_regress', kwarg_name='apps')
- def test_deferred_class_factory_apps_reuse(self, apps):
- """
- #25563 - model._meta.apps should be used for caching and
- retrieval of the created proxy class.
- """
- class BaseModel(models.Model):
- field = models.BooleanField()
-
- class Meta:
- app_label = 'defer_regress'
-
- deferred_model = deferred_class_factory(BaseModel, ['field'])
- self.assertIs(deferred_model._meta.apps, apps)
- self.assertIs(deferred_class_factory(BaseModel, ['field']), deferred_model)
-
class DeferAnnotateSelectRelatedTest(TestCase):
def test_defer_annotate_select_related(self):