Updated proxy model tests
Extracted classes from original proxy test. Added another simple proxy model test. Moved the test case to a seemingly better spot.fix_request_path_info
parent
20ac209dbb
commit
54cf2f37d8
|
|
@ -196,7 +196,6 @@ class Middle(Top):
|
||||||
class Bottom(Middle):
|
class Bottom(Middle):
|
||||||
author = models.CharField(max_length=50)
|
author = models.CharField(max_length=50)
|
||||||
|
|
||||||
|
|
||||||
class UUIDProject(ShowFieldTypeAndContent, PolymorphicModel):
|
class UUIDProject(ShowFieldTypeAndContent, PolymorphicModel):
|
||||||
uuid_primary_key = UUIDField(primary_key = True)
|
uuid_primary_key = UUIDField(primary_key = True)
|
||||||
topic = models.CharField(max_length = 30)
|
topic = models.CharField(max_length = 30)
|
||||||
|
|
@ -213,6 +212,13 @@ class UUIDPlainB(UUIDPlainA):
|
||||||
class UUIDPlainC(UUIDPlainB):
|
class UUIDPlainC(UUIDPlainB):
|
||||||
field3 = models.CharField(max_length=10)
|
field3 = models.CharField(max_length=10)
|
||||||
|
|
||||||
|
# base -> proxy
|
||||||
|
class ProxyBase(PolymorphicModel):
|
||||||
|
some_data = models.CharField(max_length=128)
|
||||||
|
class ProxyChild(ProxyBase):
|
||||||
|
class Meta:
|
||||||
|
proxy = True
|
||||||
|
|
||||||
# base -> proxy -> real models
|
# base -> proxy -> real models
|
||||||
class ProxiedBase(ShowFieldTypeAndContent, PolymorphicModel):
|
class ProxiedBase(ShowFieldTypeAndContent, PolymorphicModel):
|
||||||
name = models.CharField(max_length=10)
|
name = models.CharField(max_length=10)
|
||||||
|
|
@ -686,6 +692,30 @@ class PolymorphicTests(TestCase):
|
||||||
self.assertIs(type(parent.childmodel_set.my_queryset_foo()), MyManagerQuerySet)
|
self.assertIs(type(parent.childmodel_set.my_queryset_foo()), MyManagerQuerySet)
|
||||||
|
|
||||||
|
|
||||||
|
def test_proxy_models(self):
|
||||||
|
# prepare some data
|
||||||
|
for data in ('bleep bloop', 'I am a', 'computer'):
|
||||||
|
ProxyChild.objects.create(some_data=data)
|
||||||
|
|
||||||
|
# this caches ContentType queries so they don't interfere with our query counts later
|
||||||
|
list(ProxyBase.objects.all())
|
||||||
|
|
||||||
|
# one query per concrete class
|
||||||
|
with self.assertNumQueries(1):
|
||||||
|
items = list(ProxyBase.objects.all())
|
||||||
|
|
||||||
|
self.assertIsInstance(items[0], ProxyChild)
|
||||||
|
|
||||||
|
|
||||||
|
def test_content_types_for_proxy_models(self):
|
||||||
|
"""Checks if ContentType is capable of returning proxy models."""
|
||||||
|
from django.db.models import Model
|
||||||
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
|
||||||
|
ct = ContentType.objects.get_for_model(ProxyChild, for_concrete_model=False)
|
||||||
|
self.assertEqual(ProxyChild, ct.model_class())
|
||||||
|
|
||||||
|
|
||||||
def test_proxy_model_inheritance(self):
|
def test_proxy_model_inheritance(self):
|
||||||
"""
|
"""
|
||||||
Polymorphic abilities should also work when the base model is a proxy object.
|
Polymorphic abilities should also work when the base model is a proxy object.
|
||||||
|
|
@ -749,19 +779,3 @@ class RegressionTests(TestCase):
|
||||||
expected_queryset = [bottom]
|
expected_queryset = [bottom]
|
||||||
self.assertQuerysetEqual(Bottom.objects.all(), [repr(r) for r in expected_queryset])
|
self.assertQuerysetEqual(Bottom.objects.all(), [repr(r) for r in expected_queryset])
|
||||||
|
|
||||||
|
|
||||||
class ProxiedModelTests(TestCase):
|
|
||||||
def test_content_types_for_proxy_models(self):
|
|
||||||
from django.db.models import Model
|
|
||||||
from django.contrib.contenttypes.models import ContentType
|
|
||||||
|
|
||||||
class Base(Model):
|
|
||||||
pass
|
|
||||||
|
|
||||||
class Proxy(Base):
|
|
||||||
class Meta:
|
|
||||||
proxy = True
|
|
||||||
|
|
||||||
ct = ContentType.objects.get_for_model(Proxy, for_concrete_model=False)
|
|
||||||
self.assertEqual(Proxy, ct.model_class())
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue