summaryrefslogtreecommitdiff
path: root/tests/modeladmin/tests.py
diff options
context:
space:
mode:
authorJohannes Hoppe <info@johanneshoppe.com>2017-05-10 14:48:57 +0200
committerTim Graham <timograham@gmail.com>2017-09-18 13:48:02 -0400
commit94cd8efc50c717cd00244f4b2233f971a53b205e (patch)
treeab1f13a12121907a561962181eaceeab793cb838 /tests/modeladmin/tests.py
parent01a294f8f014a32e288958701540ea47dcb9fc14 (diff)
Fixed #14370 -- Allowed using a Select2 widget for ForeignKey and ManyToManyField in the admin.
Thanks Florian Apolloner and Tim Graham for review and contributing to the patch.
Diffstat (limited to 'tests/modeladmin/tests.py')
-rw-r--r--tests/modeladmin/tests.py32
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):