diff options
Diffstat (limited to 'tests/modeladmin/tests.py')
| -rw-r--r-- | tests/modeladmin/tests.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/modeladmin/tests.py b/tests/modeladmin/tests.py index de216cbb11..d5a03b1a17 100644 --- a/tests/modeladmin/tests.py +++ b/tests/modeladmin/tests.py @@ -712,6 +712,10 @@ class ModelAdminPermissionTests(SimpleTestCase): def has_perm(self, perm): return perm == 'modeladmin.add_band' + class MockAddUserWithInline(MockUser): + def has_perm(self, perm): + return perm == 'modeladmin.add_concert' + class MockChangeUser(MockUser): def has_perm(self, perm): return perm == 'modeladmin.change_band' @@ -771,6 +775,26 @@ class ModelAdminPermissionTests(SimpleTestCase): self.assertEqual(len(inline_instances), 1) self.assertIsInstance(inline_instances[0], ConcertInline) + def test_inline_has_add_permission_without_obj(self): + # This test will be removed in Django 3.1 when `obj` becomes a required + # argument of has_add_permission() (#27991). + class ConcertInline(TabularInline): + model = Concert + + def has_add_permission(self, request): + return super().has_add_permission(request) + + class BandAdmin(ModelAdmin): + inlines = [ConcertInline] + + ma = BandAdmin(Band, AdminSite()) + request = MockRequest() + request.user = self.MockAddUserWithInline() + band = Band(name='The Doors', bio='', sign_date=date(1965, 1, 1)) + inline_instances = ma.get_inline_instances(request, band) + self.assertEqual(len(inline_instances), 1) + self.assertIsInstance(inline_instances[0], ConcertInline) + def test_has_change_permission(self): """ has_change_permission returns True for users who can edit objects and |
