mirror of
https://github.com/django/django.git
synced 2024-12-26 19:16:11 +00:00
8662654d6d
Since the original ones in django.db.models.loading were kept only for backwards compatibility, there's no need to recreate them. However, many internals of Django still relied on them. They were also imported in django.db.models. They never appear in the documentation, except a quick mention of get_models and get_app in the 1.2 release notes to document an edge case in GIS. I don't think that makes them a public API. This commit doesn't change the overall amount of global state but clarifies that it's tied to the app_cache object instead of hiding it behind half a dozen functions.
48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
from __future__ import absolute_import
|
|
|
|
from django.apps import app_cache
|
|
from django.apps.cache import BaseAppCache
|
|
from django.db import models
|
|
from django.test import TestCase
|
|
|
|
from .models import TotallyNormal, SoAlternative, new_app_cache
|
|
|
|
|
|
class AppCacheTests(TestCase):
|
|
"""
|
|
Tests the AppCache borg and non-borg versions
|
|
"""
|
|
|
|
def test_models_py(self):
|
|
"""
|
|
Tests that the models in the models.py file were loaded correctly.
|
|
"""
|
|
self.assertEqual(app_cache.get_model("app_cache", "TotallyNormal"), TotallyNormal)
|
|
self.assertEqual(app_cache.get_model("app_cache", "SoAlternative"), None)
|
|
|
|
self.assertEqual(new_app_cache.get_model("app_cache", "TotallyNormal"), None)
|
|
self.assertEqual(new_app_cache.get_model("app_cache", "SoAlternative"), SoAlternative)
|
|
|
|
def test_dynamic_load(self):
|
|
"""
|
|
Makes a new model at runtime and ensures it goes into the right place.
|
|
"""
|
|
old_models = app_cache.get_models(app_cache.get_app("app_cache"))
|
|
# Construct a new model in a new app cache
|
|
body = {}
|
|
new_app_cache = BaseAppCache()
|
|
meta_contents = {
|
|
'app_label': "app_cache",
|
|
'app_cache': new_app_cache,
|
|
}
|
|
meta = type("Meta", tuple(), meta_contents)
|
|
body['Meta'] = meta
|
|
body['__module__'] = TotallyNormal.__module__
|
|
temp_model = type("SouthPonies", (models.Model,), body)
|
|
# Make sure it appeared in the right place!
|
|
self.assertEqual(
|
|
old_models,
|
|
app_cache.get_models(app_cache.get_app("app_cache")),
|
|
)
|
|
self.assertEqual(new_app_cache.get_model("app_cache", "SouthPonies"), temp_model)
|