From cf43a1ee909ab5dbca5b6a40247cd093a3e2ac8d Mon Sep 17 00:00:00 2001 From: Justin Caratzas Date: Mon, 22 Sep 2014 17:29:44 -0400 Subject: Fixed #23539 -- Added get_extra(), get_max_num(), and get_min_num() hooks to GenericInlineModelAdmin. --- tests/generic_inline_admin/tests.py | 57 +++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'tests') diff --git a/tests/generic_inline_admin/tests.py b/tests/generic_inline_admin/tests.py index dafd5d3334..bd80ec3460 100644 --- a/tests/generic_inline_admin/tests.py +++ b/tests/generic_inline_admin/tests.py @@ -222,6 +222,63 @@ class GenericInlineAdminParametersTest(TestCase): self.assertEqual(formset.total_form_count(), 5) self.assertEqual(formset.initial_form_count(), 1) + def test_get_extra(self): + + class GetExtraInline(GenericTabularInline): + model = Media + extra = 4 + + def get_extra(self, request, obj): + return 2 + + modeladmin = admin.ModelAdmin(Episode, admin_site) + modeladmin.inlines = [GetExtraInline] + e = self._create_object(Episode) + request = self.factory.get('/generic_inline_admin/admin/generic_inline_admin/episode/%s/' % e.pk) + request.user = User(username='super', is_superuser=True) + response = modeladmin.changeform_view(request, object_id=str(e.pk)) + formset = response.context_data['inline_admin_formsets'][0].formset + + self.assertEqual(formset.extra, 2) + + def test_get_min_num(self): + + class GetMinNumInline(GenericTabularInline): + model = Media + min_num = 5 + + def get_min_num(self, request, obj): + return 2 + + modeladmin = admin.ModelAdmin(Episode, admin_site) + modeladmin.inlines = [GetMinNumInline] + e = self._create_object(Episode) + request = self.factory.get('/generic_inline_admin/admin/generic_inline_admin/episode/%s/' % e.pk) + request.user = User(username='super', is_superuser=True) + response = modeladmin.changeform_view(request, object_id=str(e.pk)) + formset = response.context_data['inline_admin_formsets'][0].formset + + self.assertEqual(formset.min_num, 2) + + def test_get_max_num(self): + + class GetMaxNumInline(GenericTabularInline): + model = Media + extra = 5 + + def get_max_num(self, request, obj): + return 2 + + modeladmin = admin.ModelAdmin(Episode, admin_site) + modeladmin.inlines = [GetMaxNumInline] + e = self._create_object(Episode) + request = self.factory.get('/generic_inline_admin/admin/generic_inline_admin/episode/%s/' % e.pk) + request.user = User(username='super', is_superuser=True) + response = modeladmin.changeform_view(request, object_id=str(e.pk)) + formset = response.context_data['inline_admin_formsets'][0].formset + + self.assertEqual(formset.max_num, 2) + @override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), ROOT_URLCONF="generic_inline_admin.urls") -- cgit v1.2.1