summaryrefslogtreecommitdiff
path: root/tests/model_meta
diff options
context:
space:
mode:
authorCollin Anderson <cmawebsite@gmail.com>2015-01-14 13:29:56 -0500
committerTim Graham <timograham@gmail.com>2015-01-16 14:47:09 -0500
commite8171daf0cd7f0e070395cb4c850c17fea32f11d (patch)
tree9c06f81f16bdcd2e7060172aff0c0a1e9e01e3c4 /tests/model_meta
parent8e8daf7c9b0f951ed53c322eada0e61e55a57a9f (diff)
downloaddjango-e8171daf0cd7f0e070395cb4c850c17fea32f11d.tar.gz
Fixed #24146 -- Fixed a missing fields regression in admin checks.
This allows using get_field() early in the app loading process. Thanks to PirosB3 and Tim Graham.
Diffstat (limited to 'tests/model_meta')
-rw-r--r--tests/model_meta/tests.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/tests/model_meta/tests.py b/tests/model_meta/tests.py
index 1a0c2de9f3..bc7927c313 100644
--- a/tests/model_meta/tests.py
+++ b/tests/model_meta/tests.py
@@ -169,24 +169,30 @@ class GetFieldByNameTests(OptionsBaseTests):
self.assertEqual(field_info[1:], (None, True, False))
self.assertIsInstance(field_info[0], GenericRelation)
- def test_get_fields_only_searches_forward_on_apps_not_ready(self):
+ def test_get_fields_when_apps_not_ready(self):
opts = Person._meta
# If apps registry is not ready, get_field() searches over only
# forward fields.
opts.apps.ready = False
+ # Clear cached data.
+ opts.__dict__.pop('fields_map', None)
try:
# 'data_abstract' is a forward field, and therefore will be found
self.assertTrue(opts.get_field('data_abstract'))
msg = (
- "Person has no field named 'relating_baseperson'. The app "
+ "Person has no field named 'some_missing_field'. The app "
"cache isn't ready yet, so if this is an auto-created related "
- "field, it won't be available yet."
+ "field, it might not be available yet."
)
- # 'data_abstract' is a reverse field, and will raise an exception
with self.assertRaisesMessage(FieldDoesNotExist, msg):
- opts.get_field('relating_baseperson')
+ opts.get_field('some_missing_field')
+ # Be sure it's not cached
+ self.assertNotIn('fields_map', opts.__dict__)
finally:
opts.apps.ready = True
+ # At this point searching a related field would cache fields_map
+ opts.get_field('relating_baseperson')
+ self.assertIn('fields_map', opts.__dict__)
class RelationTreeTests(TestCase):