summaryrefslogtreecommitdiff
path: root/tests/contenttypes_tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests/contenttypes_tests')
-rw-r--r--tests/contenttypes_tests/test_management.py40
1 files changed, 35 insertions, 5 deletions
diff --git a/tests/contenttypes_tests/test_management.py b/tests/contenttypes_tests/test_management.py
index 3e375518c9..65842aa09e 100644
--- a/tests/contenttypes_tests/test_management.py
+++ b/tests/contenttypes_tests/test_management.py
@@ -10,10 +10,15 @@ from django.test.utils import captured_stdout
from .models import ModelWithNullFKToSite, Post
-@modify_settings(INSTALLED_APPS={'append': ['no_models']})
+@modify_settings(INSTALLED_APPS={'append': ['empty_models', 'no_models']})
class RemoveStaleContentTypesTests(TestCase):
# Speed up tests by avoiding retrieving ContentTypes for all test apps.
- available_apps = ['contenttypes_tests', 'no_models', 'django.contrib.contenttypes']
+ available_apps = [
+ 'contenttypes_tests',
+ 'empty_models',
+ 'no_models',
+ 'django.contrib.contenttypes',
+ ]
def setUp(self):
self.before_count = ContentType.objects.count()
@@ -65,9 +70,34 @@ class RemoveStaleContentTypesTests(TestCase):
contenttypes_management.create_contenttypes(self.app_config, interactive=False, verbosity=0, apps=apps)
self.assertEqual(ContentType.objects.count(), self.before_count + 1)
- def test_contenttypes_removed_in_apps_without_models(self):
- ContentType.objects.create(app_label='no_models', model='Fake')
+ @modify_settings(INSTALLED_APPS={'remove': ['empty_models']})
+ def test_contenttypes_removed_in_installed_apps_without_models(self):
+ ContentType.objects.create(app_label='empty_models', model='Fake 1')
+ ContentType.objects.create(app_label='no_models', model='Fake 2')
with mock.patch('builtins.input', return_value='yes'), captured_stdout() as stdout:
call_command('remove_stale_contenttypes', verbosity=2)
- self.assertIn("Deleting stale content type 'no_models | Fake'", stdout.getvalue())
+ self.assertNotIn(
+ "Deleting stale content type 'empty_models | Fake 1'",
+ stdout.getvalue(),
+ )
+ self.assertIn(
+ "Deleting stale content type 'no_models | Fake 2'",
+ stdout.getvalue(),
+ )
+ self.assertEqual(ContentType.objects.count(), self.before_count + 1)
+
+ @modify_settings(INSTALLED_APPS={'remove': ['empty_models']})
+ def test_contenttypes_removed_for_apps_not_in_installed_apps(self):
+ ContentType.objects.create(app_label='empty_models', model='Fake 1')
+ ContentType.objects.create(app_label='no_models', model='Fake 2')
+ with mock.patch('builtins.input', return_value='yes'), captured_stdout() as stdout:
+ call_command('remove_stale_contenttypes', include_stale_apps=True, verbosity=2)
+ self.assertIn(
+ "Deleting stale content type 'empty_models | Fake 1'",
+ stdout.getvalue(),
+ )
+ self.assertIn(
+ "Deleting stale content type 'no_models | Fake 2'",
+ stdout.getvalue(),
+ )
self.assertEqual(ContentType.objects.count(), self.before_count)