diff options
Diffstat (limited to 'tests/modeladmin')
| -rw-r--r-- | tests/modeladmin/test_has_add_permission_obj_deprecation.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/modeladmin/test_has_add_permission_obj_deprecation.py b/tests/modeladmin/test_has_add_permission_obj_deprecation.py index 18448e94d7..f5489a41db 100644 --- a/tests/modeladmin/test_has_add_permission_obj_deprecation.py +++ b/tests/modeladmin/test_has_add_permission_obj_deprecation.py @@ -1,4 +1,8 @@ +from datetime import date + from django.contrib.admin.options import ModelAdmin, TabularInline +from django.contrib.admin.sites import AdminSite +from django.test import TestCase from django.utils.deprecation import RemovedInDjango30Warning from .models import Band, Song @@ -56,3 +60,45 @@ class HasAddPermissionObjTests(CheckTestCase): ) with self.assertWarnsMessage(RemovedInDjango30Warning, msg): self.assertIsValid(BandAdmin, Band) + + +class MockRequest: + method = 'POST' + FILES = {} + POST = {} + + +class SongInline(TabularInline): + model = Song + + def has_add_permission(self, request): + return True + + +class BandAdmin(ModelAdmin): + inlines = [SongInline] + + +class ModelAdminTests(TestCase): + + def setUp(self): + self.band = Band.objects.create(name='The Doors', bio='', sign_date=date(1965, 1, 1)) + self.song = Song.objects.create(name='test', band=self.band) + self.site = AdminSite() + self.request = MockRequest() + self.request.user = self.MockAddUser() + self.ma = BandAdmin(Band, self.site) + + class MockAddUser: + def has_perm(self, perm): + return perm == 'modeladmin.add_band' + + def test_get_inline_instances(self): + self.assertEqual(len(self.ma.get_inline_instances(self.request)), 1) + + def test_get_inline_formsets(self): + formsets, inline_instances = self.ma._create_formsets(self.request, self.band, change=True) + self.assertEqual(len(self.ma.get_inline_formsets(self.request, formsets, inline_instances)), 1) + + def test_get_formsets_with_inlines(self): + self.assertEqual(len(list(self.ma. get_formsets_with_inlines(self.request, self.band))), 1) |
