diff options
Diffstat (limited to 'tests/apps/tests.py')
| -rw-r--r-- | tests/apps/tests.py | 51 |
1 files changed, 51 insertions, 0 deletions
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) |
