summaryrefslogtreecommitdiff
path: root/tests/apps
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2013-12-24 12:25:17 +0100
committerAymeric Augustin <aymeric.augustin@m4x.org>2013-12-24 12:25:17 +0100
commit1716b7ce5a02b2a77188dfea2d41e25dfa58821c (patch)
treef3422c0d6725f45756a3b9deb32406d319b8a72e /tests/apps
parente9e522a8e7455900a775678e5d6bc518a289b8d1 (diff)
downloaddjango-1716b7ce5a02b2a77188dfea2d41e25dfa58821c.tar.gz
Renamed AppCache to Apps.
Also renamed app_cache to apps and "app cache" to "app registry". Deprecated AppCache.app_cache_ready() in favor of Apps.ready().
Diffstat (limited to 'tests/apps')
-rw-r--r--tests/apps/__init__.py0
-rw-r--r--tests/apps/models.py17
-rw-r--r--tests/apps/tests.py51
3 files changed, 68 insertions, 0 deletions
diff --git a/tests/apps/__init__.py b/tests/apps/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/apps/__init__.py
diff --git a/tests/apps/models.py b/tests/apps/models.py
new file mode 100644
index 0000000000..c3f764a70b
--- /dev/null
+++ b/tests/apps/models.py
@@ -0,0 +1,17 @@
+from django.apps.registry import Apps
+from django.db import models
+
+# We're testing app registry presence on load, so this is handy.
+
+new_apps = Apps()
+
+
+class TotallyNormal(models.Model):
+ name = models.CharField(max_length=255)
+
+
+class SoAlternative(models.Model):
+ name = models.CharField(max_length=255)
+
+ class Meta:
+ apps = new_apps
diff --git a/tests/apps/tests.py b/tests/apps/tests.py
new file mode 100644
index 0000000000..c38d16f8bb
--- /dev/null
+++ b/tests/apps/tests.py
@@ -0,0 +1,51 @@
+from __future__ import absolute_import
+
+from django.apps import apps
+from django.apps.registry import Apps
+from django.db import models
+from django.test import TestCase
+
+from .models import TotallyNormal, SoAlternative, new_apps
+
+
+class AppsTests(TestCase):
+
+ def test_models_py(self):
+ """
+ Tests that the models in the models.py file were loaded correctly.
+ """
+ self.assertEqual(apps.get_model("apps", "TotallyNormal"), TotallyNormal)
+ self.assertEqual(apps.get_model("apps", "SoAlternative"), None)
+
+ self.assertEqual(new_apps.get_model("apps", "TotallyNormal"), None)
+ self.assertEqual(new_apps.get_model("apps", "SoAlternative"), SoAlternative)
+
+ def test_dynamic_load(self):
+ """
+ Makes a new model at runtime and ensures it goes into the right place.
+ """
+ old_models = apps.get_models(apps.get_app_config("apps").models_module)
+ # Construct a new model in a new app registry
+ body = {}
+ new_apps = Apps()
+ meta_contents = {
+ 'app_label': "apps",
+ 'apps': new_apps,
+ }
+ 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,
+ apps.get_models(apps.get_app_config("apps").models_module),
+ )
+ self.assertEqual(new_apps.get_model("apps", "SouthPonies"), temp_model)
+
+ def test_singleton_master(self):
+ """
+ Ensures that only one master registry can exist.
+ """
+ with self.assertRaises(RuntimeError):
+ Apps(master=True)