summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAnton Samarchyan <anton.samarchyan@savoirfairelinux.com>2017-06-02 18:44:34 -0400
committerTim Graham <timograham@gmail.com>2017-06-02 18:47:07 -0400
commit2b53c8377dcb7270d95db0b3ea8b2cb28550c5a8 (patch)
tree548b035895c3796bdca4c077bfe9d99330af34c7 /tests
parent7c9a83330169df1118f6bd690aed131e7c59638d (diff)
Improved test coverage of contrib/admin/checks.py.
Diffstat (limited to 'tests')
-rw-r--r--tests/admin_checks/tests.py41
-rw-r--r--tests/modeladmin/test_checks.py23
2 files changed, 64 insertions, 0 deletions
diff --git a/tests/admin_checks/tests.py b/tests/admin_checks/tests.py
index 5419fc1009..eb394f794f 100644
--- a/tests/admin_checks/tests.py
+++ b/tests/admin_checks/tests.py
@@ -64,6 +64,10 @@ class SystemChecksTestCase(SimpleTestCase):
]
self.assertEqual(errors, expected)
+ @override_settings(TEMPLATES=[])
+ def test_no_template_engines(self):
+ self.assertEqual(admin.checks.check_dependencies(), [])
+
@override_settings(
INSTALLED_APPS=[
'django.contrib.admin',
@@ -138,6 +142,31 @@ class SystemChecksTestCase(SimpleTestCase):
]
self.assertEqual(errors, expected)
+ def test_list_editable_not_a_list_or_tuple(self):
+ class SongAdmin(admin.ModelAdmin):
+ list_editable = 'test'
+
+ self.assertEqual(SongAdmin(Song, AdminSite()).check(), [
+ checks.Error(
+ "The value of 'list_editable' must be a list or tuple.",
+ obj=SongAdmin,
+ id='admin.E120',
+ )
+ ])
+
+ def test_list_editable_missing_field(self):
+ class SongAdmin(admin.ModelAdmin):
+ list_editable = ('test',)
+
+ self.assertEqual(SongAdmin(Song, AdminSite()).check(), [
+ checks.Error(
+ "The value of 'list_editable[0]' refers to 'test', which is "
+ "not an attribute of 'admin_checks.Song'.",
+ obj=SongAdmin,
+ id='admin.E121',
+ )
+ ])
+
def test_readonly_and_editable(self):
class SongAdmin(admin.ModelAdmin):
readonly_fields = ["original_release"]
@@ -572,6 +601,18 @@ class SystemChecksTestCase(SimpleTestCase):
]
self.assertEqual(errors, expected)
+ def test_readonly_fields_not_list_or_tuple(self):
+ class SongAdmin(admin.ModelAdmin):
+ readonly_fields = 'test'
+
+ self.assertEqual(SongAdmin(Song, AdminSite()).check(), [
+ checks.Error(
+ "The value of 'readonly_fields' must be a list or tuple.",
+ obj=SongAdmin,
+ id='admin.E034',
+ )
+ ])
+
def test_extra(self):
class SongAdmin(admin.ModelAdmin):
def awesome_song(self, instance):
diff --git a/tests/modeladmin/test_checks.py b/tests/modeladmin/test_checks.py
index decddee591..acca6b18a2 100644
--- a/tests/modeladmin/test_checks.py
+++ b/tests/modeladmin/test_checks.py
@@ -366,6 +366,17 @@ class RadioFieldsCheckTests(CheckTestCase):
class PrepopulatedFieldsCheckTests(CheckTestCase):
+ def test_not_list_or_tuple(self):
+ class TestModelAdmin(ModelAdmin):
+ prepopulated_fields = {'slug': 'test'}
+
+ self.assertIsInvalid(
+ TestModelAdmin, ValidationTestModel,
+ 'The value of \'prepopulated_fields["slug"]\' must be a list '
+ 'or tuple.',
+ 'admin.E029'
+ )
+
def test_not_dictionary(self):
class TestModelAdmin(ModelAdmin):
prepopulated_fields = ()
@@ -1130,3 +1141,15 @@ class ListDisplayEditableTests(CheckTestCase):
"'list_display_links' is set.",
id='admin.E124',
)
+
+ def test_both_list_editable_and_list_display_links(self):
+ class ProductAdmin(ModelAdmin):
+ list_editable = ('name',)
+ list_display = ('name',)
+ list_display_links = ('name',)
+ self.assertIsInvalid(
+ ProductAdmin, ValidationTestModel,
+ "The value of 'name' cannot be in both 'list_editable' and "
+ "'list_display_links'.",
+ id='admin.E123',
+ )