diff options
| author | Simon Charette <charette.s@gmail.com> | 2015-10-07 15:29:20 -0400 |
|---|---|---|
| committer | Simon Charette <charette.s@gmail.com> | 2015-10-12 12:14:27 -0400 |
| commit | 5b980897f2da3c048d88029af554e0fc4be68a8e (patch) | |
| tree | 8eae3580b0bfa8c48025b0f41ad9f1be6cf8c787 /tests/model_meta | |
| parent | 211486f3ab5602cdc332f03cd03fad3cb929d154 (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.py | 4 | ||||
| -rw-r--r-- | tests/model_meta/results.py | 88 | ||||
| -rw-r--r-- | tests/model_meta/tests.py | 10 |
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' |
