summaryrefslogtreecommitdiff
path: root/tests/app_cache
diff options
context:
space:
mode:
Diffstat (limited to 'tests/app_cache')
-rw-r--r--tests/app_cache/__init__.py0
-rw-r--r--tests/app_cache/models.py17
-rw-r--r--tests/app_cache/tests.py50
3 files changed, 67 insertions, 0 deletions
diff --git a/tests/app_cache/__init__.py b/tests/app_cache/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/app_cache/__init__.py
diff --git a/tests/app_cache/models.py b/tests/app_cache/models.py
new file mode 100644
index 0000000000..1b4d33c2f9
--- /dev/null
+++ b/tests/app_cache/models.py
@@ -0,0 +1,17 @@
+from django.db import models
+from django.db.models.loading import BaseAppCache
+
+# We're testing app cache presence on load, so this is handy.
+
+new_app_cache = BaseAppCache()
+
+
+class TotallyNormal(models.Model):
+ name = models.CharField(max_length=255)
+
+
+class SoAlternative(models.Model):
+ name = models.CharField(max_length=255)
+
+ class Meta:
+ app_cache = new_app_cache
diff --git a/tests/app_cache/tests.py b/tests/app_cache/tests.py
new file mode 100644
index 0000000000..42598d90c7
--- /dev/null
+++ b/tests/app_cache/tests.py
@@ -0,0 +1,50 @@
+from __future__ import absolute_import
+import datetime
+from django.test import TransactionTestCase
+from django.utils.unittest import skipUnless
+from django.db import connection, DatabaseError, IntegrityError
+from django.db.models.fields import IntegerField, TextField, CharField, SlugField
+from django.db.models.fields.related import ManyToManyField, ForeignKey
+from django.db.models.loading import cache, BaseAppCache
+from django.db import models
+from .models import TotallyNormal, SoAlternative, new_app_cache
+
+
+class AppCacheTests(TransactionTestCase):
+ """
+ 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(cache.get_model("app_cache", "TotallyNormal"), TotallyNormal)
+ self.assertEqual(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 = cache.get_models(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,
+ cache.get_models(cache.get_app("app_cache")),
+ )
+ self.assertEqual(new_app_cache.get_model("app_cache", "SouthPonies"), temp_model)