|
@@ -1,8 +1,11 @@
|
|
|
from unittest import mock
|
|
|
|
|
|
-from django.contrib.messages import Message, constants
|
|
|
+from django.contrib.messages import Message, add_message, constants
|
|
|
from django.contrib.messages.storage import base
|
|
|
-from django.test import SimpleTestCase, override_settings
|
|
|
+from django.contrib.messages.test import MessagesTestMixin
|
|
|
+from django.test import RequestFactory, SimpleTestCase, override_settings
|
|
|
+
|
|
|
+from .utils import DummyStorage
|
|
|
|
|
|
|
|
|
class MessageTests(SimpleTestCase):
|
|
@@ -59,3 +62,98 @@ class TestLevelTags(SimpleTestCase):
|
|
|
@override_settings(MESSAGE_TAGS=message_tags)
|
|
|
def test_override_settings_level_tags(self):
|
|
|
self.assertEqual(base.LEVEL_TAGS, self.message_tags)
|
|
|
+
|
|
|
+
|
|
|
+class FakeResponse:
|
|
|
+ def __init__(self):
|
|
|
+ request = RequestFactory().get("/")
|
|
|
+ request._messages = DummyStorage()
|
|
|
+ self.wsgi_request = request
|
|
|
+
|
|
|
+
|
|
|
+class AssertMessagesTest(MessagesTestMixin, SimpleTestCase):
|
|
|
+ def test_assertion(self):
|
|
|
+ response = FakeResponse()
|
|
|
+ add_message(response.wsgi_request, constants.DEBUG, "DEBUG message.")
|
|
|
+ add_message(response.wsgi_request, constants.INFO, "INFO message.")
|
|
|
+ add_message(response.wsgi_request, constants.SUCCESS, "SUCCESS message.")
|
|
|
+ add_message(response.wsgi_request, constants.WARNING, "WARNING message.")
|
|
|
+ add_message(response.wsgi_request, constants.ERROR, "ERROR message.")
|
|
|
+ self.assertMessages(
|
|
|
+ response,
|
|
|
+ [
|
|
|
+ Message(constants.DEBUG, "DEBUG message."),
|
|
|
+ Message(constants.INFO, "INFO message."),
|
|
|
+ Message(constants.SUCCESS, "SUCCESS message."),
|
|
|
+ Message(constants.WARNING, "WARNING message."),
|
|
|
+ Message(constants.ERROR, "ERROR message."),
|
|
|
+ ],
|
|
|
+ )
|
|
|
+
|
|
|
+ def test_with_tags(self):
|
|
|
+ response = FakeResponse()
|
|
|
+ add_message(
|
|
|
+ response.wsgi_request,
|
|
|
+ constants.INFO,
|
|
|
+ "INFO message.",
|
|
|
+ extra_tags="extra-info",
|
|
|
+ )
|
|
|
+ add_message(
|
|
|
+ response.wsgi_request,
|
|
|
+ constants.SUCCESS,
|
|
|
+ "SUCCESS message.",
|
|
|
+ extra_tags="extra-success",
|
|
|
+ )
|
|
|
+ add_message(
|
|
|
+ response.wsgi_request,
|
|
|
+ constants.WARNING,
|
|
|
+ "WARNING message.",
|
|
|
+ extra_tags="extra-warning",
|
|
|
+ )
|
|
|
+ add_message(
|
|
|
+ response.wsgi_request,
|
|
|
+ constants.ERROR,
|
|
|
+ "ERROR message.",
|
|
|
+ extra_tags="extra-error",
|
|
|
+ )
|
|
|
+ self.assertMessages(
|
|
|
+ response,
|
|
|
+ [
|
|
|
+ Message(constants.INFO, "INFO message.", "extra-info"),
|
|
|
+ Message(constants.SUCCESS, "SUCCESS message.", "extra-success"),
|
|
|
+ Message(constants.WARNING, "WARNING message.", "extra-warning"),
|
|
|
+ Message(constants.ERROR, "ERROR message.", "extra-error"),
|
|
|
+ ],
|
|
|
+ )
|
|
|
+
|
|
|
+ @override_settings(MESSAGE_TAGS={42: "CUSTOM"})
|
|
|
+ def test_custom_levelname(self):
|
|
|
+ response = FakeResponse()
|
|
|
+ add_message(response.wsgi_request, 42, "CUSTOM message.")
|
|
|
+ self.assertMessages(response, [Message(42, "CUSTOM message.")])
|
|
|
+
|
|
|
+ def test_ordered(self):
|
|
|
+ response = FakeResponse()
|
|
|
+ add_message(response.wsgi_request, constants.INFO, "First message.")
|
|
|
+ add_message(response.wsgi_request, constants.WARNING, "Second message.")
|
|
|
+ expected_messages = [
|
|
|
+ Message(constants.WARNING, "Second message."),
|
|
|
+ Message(constants.INFO, "First message."),
|
|
|
+ ]
|
|
|
+ self.assertMessages(response, expected_messages, ordered=False)
|
|
|
+ with self.assertRaisesMessage(AssertionError, "Lists differ: "):
|
|
|
+ self.assertMessages(response, expected_messages)
|
|
|
+
|
|
|
+ def test_mismatching_length(self):
|
|
|
+ response = FakeResponse()
|
|
|
+ add_message(response.wsgi_request, constants.INFO, "INFO message.")
|
|
|
+ msg = (
|
|
|
+ "Lists differ: [Message(level=20, message='INFO message.')] != []\n\n"
|
|
|
+ "First list contains 1 additional elements.\n"
|
|
|
+ "First extra element 0:\n"
|
|
|
+ "Message(level=20, message='INFO message.')\n\n"
|
|
|
+ "- [Message(level=20, message='INFO message.')]\n"
|
|
|
+ "+ []"
|
|
|
+ )
|
|
|
+ with self.assertRaisesMessage(AssertionError, msg):
|
|
|
+ self.assertMessages(response, [])
|