summaryrefslogtreecommitdiff
path: root/tests/model_meta
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2015-10-07 15:29:20 -0400
committerSimon Charette <charette.s@gmail.com>2015-10-12 12:14:27 -0400
commit5b980897f2da3c048d88029af554e0fc4be68a8e (patch)
tree8eae3580b0bfa8c48025b0f41ad9f1be6cf8c787 /tests/model_meta
parent211486f3ab5602cdc332f03cd03fad3cb929d154 (diff)
Refs #18012 -- Made proxy and concrete model reverse fields consistent.
Prior to this change proxy models reverse fields didn't include the reverse fields pointing to their concrete model.
Diffstat (limited to 'tests/model_meta')
-rw-r--r--tests/model_meta/models.py4
-rw-r--r--tests/model_meta/results.py88
-rw-r--r--tests/model_meta/tests.py10
3 files changed, 99 insertions, 3 deletions
diff --git a/tests/model_meta/models.py b/tests/model_meta/models.py
index a9c1f8f98d..7060cf521c 100644
--- a/tests/model_meta/models.py
+++ b/tests/model_meta/models.py
@@ -101,6 +101,10 @@ class ProxyPerson(Person):
proxy = True
+class PersonThroughProxySubclass(ProxyPerson):
+ pass
+
+
class Relating(models.Model):
# ForeignKey to BasePerson
diff --git a/tests/model_meta/results.py b/tests/model_meta/results.py
index 5975f06465..50cb59a169 100644
--- a/tests/model_meta/results.py
+++ b/tests/model_meta/results.py
@@ -1,4 +1,6 @@
-from .models import AbstractPerson, BasePerson, Person, Relating, Relation
+from .models import (
+ AbstractPerson, BasePerson, Person, ProxyPerson, Relating, Relation,
+)
TEST_RESULTS = {
'get_all_field_names': {
@@ -329,11 +331,30 @@ TEST_RESULTS = {
('Relating_people_hidden+', None),
('followers_concrete', None),
('friends_inherited_rel_+', None),
+ ('personthroughproxysubclass', None),
('relating_people', None),
('relating_person', None),
('relating_proxyperson', None),
('relating_proxyperson_hidden+', None),
),
+ ProxyPerson: (
+ ('+', Person),
+ ('_relating_people_hidden_+', Person),
+ ('Person_following_inherited+', Person),
+ ('Person_following_inherited+', Person),
+ ('Person_friends_inherited+', Person),
+ ('Person_friends_inherited+', Person),
+ ('Person_m2m_inherited+', Person),
+ ('Relating_people+', Person),
+ ('Relating_people_hidden+', Person),
+ ('followers_concrete', Person),
+ ('friends_inherited_rel_+', Person),
+ ('personthroughproxysubclass', Person),
+ ('relating_people', Person),
+ ('relating_person', Person),
+ ('relating_proxyperson', Person),
+ ('relating_proxyperson_hidden+', Person),
+ ),
BasePerson: (
('+', None),
('_relating_basepeople_hidden_+', None),
@@ -366,6 +387,9 @@ TEST_RESULTS = {
('+', None),
('+', None),
('+', None),
+ ('+', None),
+ ('+', None),
+ ('+', None),
('BasePerson_m2m_abstract+', None),
('BasePerson_m2m_base+', None),
('Person_m2m_inherited+', None),
@@ -411,6 +435,7 @@ TEST_RESULTS = {
('friends_abstract_rel_+', BasePerson),
('friends_base_rel_+', BasePerson),
('friends_inherited_rel_+', None),
+ ('personthroughproxysubclass', None),
('relating_basepeople', BasePerson),
('relating_baseperson', BasePerson),
('relating_people', None),
@@ -418,6 +443,44 @@ TEST_RESULTS = {
('relating_proxyperson', None),
('relating_proxyperson_hidden+', None),
),
+ ProxyPerson: (
+ ('+', BasePerson),
+ ('+', Person),
+ ('_relating_basepeople_hidden_+', BasePerson),
+ ('_relating_people_hidden_+', Person),
+ ('BasePerson_following_abstract+', BasePerson),
+ ('BasePerson_following_abstract+', BasePerson),
+ ('BasePerson_following_base+', BasePerson),
+ ('BasePerson_following_base+', BasePerson),
+ ('BasePerson_friends_abstract+', BasePerson),
+ ('BasePerson_friends_abstract+', BasePerson),
+ ('BasePerson_friends_base+', BasePerson),
+ ('BasePerson_friends_base+', BasePerson),
+ ('BasePerson_m2m_abstract+', BasePerson),
+ ('BasePerson_m2m_base+', BasePerson),
+ ('Person_following_inherited+', Person),
+ ('Person_following_inherited+', Person),
+ ('Person_friends_inherited+', Person),
+ ('Person_friends_inherited+', Person),
+ ('Person_m2m_inherited+', Person),
+ ('Relating_basepeople+', BasePerson),
+ ('Relating_basepeople_hidden+', BasePerson),
+ ('Relating_people+', Person),
+ ('Relating_people_hidden+', Person),
+ ('followers_abstract', BasePerson),
+ ('followers_base', BasePerson),
+ ('followers_concrete', Person),
+ ('friends_abstract_rel_+', BasePerson),
+ ('friends_base_rel_+', BasePerson),
+ ('friends_inherited_rel_+', Person),
+ ('personthroughproxysubclass', Person),
+ ('relating_basepeople', BasePerson),
+ ('relating_baseperson', BasePerson),
+ ('relating_people', Person),
+ ('relating_person', Person),
+ ('relating_proxyperson', Person),
+ ('relating_proxyperson_hidden+', Person),
+ ),
BasePerson: (
('+', None),
('_relating_basepeople_hidden_+', None),
@@ -450,6 +513,9 @@ TEST_RESULTS = {
('+', None),
('+', None),
('+', None),
+ ('+', None),
+ ('+', None),
+ ('+', None),
('BasePerson_m2m_abstract+', None),
('BasePerson_m2m_base+', None),
('Person_m2m_inherited+', None),
@@ -467,10 +533,18 @@ TEST_RESULTS = {
'get_all_related_objects_with_model_local': {
Person: (
('followers_concrete', None),
+ ('personthroughproxysubclass', None),
('relating_person', None),
('relating_people', None),
('relating_proxyperson', None),
),
+ ProxyPerson: (
+ ('followers_concrete', Person),
+ ('personthroughproxysubclass', Person),
+ ('relating_person', Person),
+ ('relating_people', Person),
+ ('relating_proxyperson', Person),
+ ),
BasePerson: (
('followers_abstract', None),
('followers_base', None),
@@ -497,10 +571,22 @@ TEST_RESULTS = {
('relating_baseperson', BasePerson),
('relating_basepeople', BasePerson),
('followers_concrete', None),
+ ('personthroughproxysubclass', None),
('relating_person', None),
('relating_people', None),
('relating_proxyperson', None),
),
+ ProxyPerson: (
+ ('followers_abstract', BasePerson),
+ ('followers_base', BasePerson),
+ ('relating_baseperson', BasePerson),
+ ('relating_basepeople', BasePerson),
+ ('followers_concrete', Person),
+ ('personthroughproxysubclass', Person),
+ ('relating_person', Person),
+ ('relating_people', Person),
+ ('relating_proxyperson', Person),
+ ),
BasePerson: (
('followers_abstract', None),
('followers_base', None),
diff --git a/tests/model_meta/tests.py b/tests/model_meta/tests.py
index 6a881624c8..1dbfca0c8e 100644
--- a/tests/model_meta/tests.py
+++ b/tests/model_meta/tests.py
@@ -111,7 +111,10 @@ class RelatedObjectsTests(OptionsBaseTests):
for field in model._meta.get_fields()
if field.auto_created and not field.concrete
]
- self.assertEqual(self._map_related_query_names(objects), expected)
+ self.assertEqual(
+ sorted(self._map_related_query_names(objects), key=self.key_name),
+ sorted(expected, key=self.key_name),
+ )
def test_related_objects_local(self):
result_key = 'get_all_related_objects_with_model_local'
@@ -121,7 +124,10 @@ class RelatedObjectsTests(OptionsBaseTests):
for field in model._meta.get_fields(include_parents=False)
if field.auto_created and not field.concrete
]
- self.assertEqual(self._map_related_query_names(objects), expected)
+ self.assertEqual(
+ sorted(self._map_related_query_names(objects), key=self.key_name),
+ sorted(expected, key=self.key_name),
+ )
def test_related_objects_include_hidden(self):
result_key = 'get_all_related_objects_with_model_hidden'