diff options
| author | Andrew Godwin <andrew@aeracode.org> | 2013-05-09 15:59:26 +0100 |
|---|---|---|
| committer | Andrew Godwin <andrew@aeracode.org> | 2013-05-09 15:59:26 +0100 |
| commit | 75bf394d86b802de670502400e9ab7eca2808935 (patch) | |
| tree | af9d3c3f66a70a5ec110124ba3ec1a291758a8d9 /tests | |
| parent | 104ad0504b4b123277b3f0e7c0be7fb9e84c2d72 (diff) | |
Rest of the _meta.app_cache stuff. Schema tests work now.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/app_cache/__init__.py | 0 | ||||
| -rw-r--r-- | tests/app_cache/models.py | 17 | ||||
| -rw-r--r-- | tests/app_cache/tests.py | 50 |
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) |
