1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- # -*- coding: utf-8 -*-
- from unittest import mock
- from django.contrib import admin
- from django.http import HttpRequest
- from django.test import TestCase
- from django_changelist_inline import (
- ChangelistInline,
- ChangelistInlineAdminMixin,
- ChangelistInlineModelAdmin,
- )
- from testing.factories import ThingFactory, UserFactory
- from testing.models import RelatedThing, Thing
- class RelatedThingChangelistInline(ChangelistInline):
- model = RelatedThing
- class ChangelistModelAdmin(ChangelistInlineModelAdmin):
- pass
- class ThingAdmin(ChangelistInlineAdminMixin, admin.ModelAdmin):
- inlines = [RelatedThingChangelistInline]
- class ChangelistInlineAdminMixinTestCase(TestCase):
- def setUp(self):
- self.fake_user = UserFactory()
- self.fake_request = mock.Mock(spec=HttpRequest)
- self.fake_request.user = self.fake_user
- self.thing = ThingFactory()
- def test_get_inline_instances_no_obj(self):
- # Given
- thing_admin = ThingAdmin(Thing, admin.site)
- with mock.patch.object(self.fake_user, 'has_perm') as mock_has_perm:
- with mock.patch.object(RelatedThingChangelistInline, 'bind') as mock_bind:
- mock_has_perm.return_value = True
- # When
- result = thing_admin.get_inline_instances(
- self.fake_request, obj=None,
- )
- # Then
- self.assertEqual(len(result), 0)
- self.assertFalse(mock_bind.called)
- def test_get_inline_instances(self):
- # Given
- thing_admin = ThingAdmin(Thing, admin.site)
- with mock.patch.object(self.fake_user, 'has_perm') as mock_has_perm:
- with mock.patch.object(RelatedThingChangelistInline, 'bind') as mock_bind:
- mock_has_perm.return_value = True
- # When
- result = thing_admin.get_inline_instances(
- self.fake_request, obj=self.thing,
- )
- # Then
- self.assertEqual(len(result), 1)
- self.assertIsInstance(result[0], RelatedThingChangelistInline)
- mock_bind.assert_called_with(self.fake_request, self.thing)
|