summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPreston Holmes <preston@ptone.com>2012-11-17 22:53:31 +0100
committerPreston Holmes <preston@ptone.com>2012-11-19 16:03:09 -0800
commitedf7ad36faab8d45aafe1f96feaf46794de22fc1 (patch)
treecbafab6d93982161f9d1520e4781a7452c0e9987 /tests
parent8b659e439b51953064a7a79924b4066e08d7127d (diff)
Fixed #18658 -- Improved ModelAdmin.message_user API
Thanks to Lowe Thiderman for the patch and tests
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/admin_views/admin.py25
-rw-r--r--tests/regressiontests/admin_views/models.py4
-rw-r--r--tests/regressiontests/admin_views/tests.py58
3 files changed, 86 insertions, 1 deletions
diff --git a/tests/regressiontests/admin_views/admin.py b/tests/regressiontests/admin_views/admin.py
index 6bb6ba59b0..40e800419e 100644
--- a/tests/regressiontests/admin_views/admin.py
+++ b/tests/regressiontests/admin_views/admin.py
@@ -27,7 +27,7 @@ from .models import (Article, Chapter, Account, Media, Child, Parent, Picture,
Album, Question, Answer, ComplexSortedPerson, PrePopulatedPostLargeSlug,
AdminOrderedField, AdminOrderedModelMethod, AdminOrderedAdminMethod,
AdminOrderedCallable, Report, Color2, UnorderedObject, MainPrepopulated,
- RelatedPrepopulated, UndeletableObject, Simple)
+ RelatedPrepopulated, UndeletableObject, UserMessenger, Simple)
def callable_year(dt_value):
@@ -592,6 +592,28 @@ def callable_on_unknown(obj):
class AttributeErrorRaisingAdmin(admin.ModelAdmin):
list_display = [callable_on_unknown, ]
+class MessageTestingAdmin(admin.ModelAdmin):
+ actions = ["message_debug", "message_info", "message_success",
+ "message_warning", "message_error", "message_extra_tags"]
+
+ def message_debug(self, request, selected):
+ self.message_user(request, "Test debug", level="debug")
+
+ def message_info(self, request, selected):
+ self.message_user(request, "Test info", level="info")
+
+ def message_success(self, request, selected):
+ self.message_user(request, "Test success", level="success")
+
+ def message_warning(self, request, selected):
+ self.message_user(request, "Test warning", level="warning")
+
+ def message_error(self, request, selected):
+ self.message_user(request, "Test error", level="error")
+
+ def message_extra_tags(self, request, selected):
+ self.message_user(request, "Test tags", extra_tags="extra_tag")
+
site = admin.AdminSite(name="admin")
site.register(Article, ArticleAdmin)
@@ -667,6 +689,7 @@ site.register(AdminOrderedAdminMethod, AdminOrderedAdminMethodAdmin)
site.register(AdminOrderedCallable, AdminOrderedCallableAdmin)
site.register(Color2, CustomTemplateFilterColorAdmin)
site.register(Simple, AttributeErrorRaisingAdmin)
+site.register(UserMessenger, MessageTestingAdmin)
# Register core models we need in our tests
from django.contrib.auth.models import User, Group
diff --git a/tests/regressiontests/admin_views/models.py b/tests/regressiontests/admin_views/models.py
index 2b143004d9..6f2ddc23a2 100644
--- a/tests/regressiontests/admin_views/models.py
+++ b/tests/regressiontests/admin_views/models.py
@@ -651,6 +651,10 @@ class UndeletableObject(models.Model):
"""
name = models.CharField(max_length=255)
+class UserMessenger(models.Model):
+ """
+ Dummy class for testing message_user functions on ModelAdmin
+ """
class Simple(models.Model):
"""
diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py
index b5e0f407e5..313809ec1c 100644
--- a/tests/regressiontests/admin_views/tests.py
+++ b/tests/regressiontests/admin_views/tests.py
@@ -3697,3 +3697,61 @@ class AdminViewLogoutTest(TestCase):
self.assertEqual(response.template_name, 'admin/login.html')
self.assertEqual(response.request['PATH_INFO'], '/test_admin/admin/')
self.assertContains(response, '<input type="hidden" name="next" value="/test_admin/admin/" />')
+
+
+@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
+class AdminUserMessageTest(TestCase):
+ urls = "regressiontests.admin_views.urls"
+ fixtures = ['admin-views-users.xml']
+
+ def setUp(self):
+ self.client.login(username='super', password='secret')
+
+ def tearDown(self):
+ self.client.logout()
+
+ def send_message(self, level):
+ """
+ Helper that sends a post to the dummy test methods and asserts that a
+ message with the level has appeared in the response.
+ """
+ action_data = {
+ ACTION_CHECKBOX_NAME: [1],
+ 'action': 'message_%s' % level,
+ 'index': 0,
+ }
+
+ response = self.client.post('/test_admin/admin/admin_views/usermessenger/',
+ action_data, follow=True)
+ self.assertContains(response,
+ '<li class="%s">Test %s</li>' % (level, level),
+ html=True)
+
+ @override_settings(MESSAGE_LEVEL=10) # Set to DEBUG for this request
+ def test_message_debug(self):
+ self.send_message('debug')
+
+ def test_message_info(self):
+ self.send_message('info')
+
+ def test_message_success(self):
+ self.send_message('success')
+
+ def test_message_warning(self):
+ self.send_message('warning')
+
+ def test_message_error(self):
+ self.send_message('error')
+
+ def test_message_extra_tags(self):
+ action_data = {
+ ACTION_CHECKBOX_NAME: [1],
+ 'action': 'message_extra_tags',
+ 'index': 0,
+ }
+
+ response = self.client.post('/test_admin/admin/admin_views/usermessenger/',
+ action_data, follow=True)
+ self.assertContains(response,
+ '<li class="extra_tag info">Test tags</li>',
+ html=True)