diff options
Diffstat (limited to 'tests/modeladmin/tests.py')
| -rw-r--r-- | tests/modeladmin/tests.py | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/tests/modeladmin/tests.py b/tests/modeladmin/tests.py index 25b9dfed69..67bed3d697 100644 --- a/tests/modeladmin/tests.py +++ b/tests/modeladmin/tests.py @@ -7,14 +7,17 @@ from django.contrib.admin.options import ( get_content_type_for_model, ) from django.contrib.admin.sites import AdminSite -from django.contrib.admin.widgets import AdminDateWidget, AdminRadioSelect +from django.contrib.admin.widgets import ( + AdminDateWidget, AdminRadioSelect, AutocompleteSelect, + AutocompleteSelectMultiple, +) from django.contrib.auth.models import User from django.db import models from django.forms.widgets import Select from django.test import SimpleTestCase, TestCase from django.test.utils import isolate_apps -from .models import Band, Concert +from .models import Band, Concert, Song class MockRequest: @@ -638,6 +641,31 @@ class ModelAdminTests(TestCase): self.assertEqual(fetched.change_message, str(message)) self.assertEqual(fetched.object_repr, str(self.band)) + def test_get_autocomplete_fields(self): + class NameAdmin(ModelAdmin): + search_fields = ['name'] + + class SongAdmin(ModelAdmin): + autocomplete_fields = ['featuring'] + fields = ['featuring', 'band'] + + class OtherSongAdmin(SongAdmin): + def get_autocomplete_fields(self, request): + return ['band'] + + self.site.register(Band, NameAdmin) + try: + # Uses autocomplete_fields if not overridden. + model_admin = SongAdmin(Song, self.site) + form = model_admin.get_form(request)() + self.assertIsInstance(form.fields['featuring'].widget.widget, AutocompleteSelectMultiple) + # Uses overridden get_autocomplete_fields + model_admin = OtherSongAdmin(Song, self.site) + form = model_admin.get_form(request)() + self.assertIsInstance(form.fields['band'].widget.widget, AutocompleteSelect) + finally: + self.site.unregister(Band) + class ModelAdminPermissionTests(SimpleTestCase): |
