1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- from django.contrib.messages.api import get_messages
- from django.contrib.messages.constants import ERROR, INFO, SUCCESS
- from django.test import Client
- def assert_contains(response, string, status_code=200):
- assert response.status_code == status_code
- fail_message = f'"{string}" not found in response.content'
- assert string in response.content.decode("utf-8"), fail_message
- def assert_not_contains(response, string, status_code=200):
- assert response.status_code == status_code
- fail_message = f'"{string}" was unexpectedly found in response.content'
- assert string not in response.content.decode("utf-8"), fail_message
- def assert_has_error_message(response):
- messages = get_messages(response.wsgi_request)
- levels = [i.level for i in messages]
- assert levels, "No messages were set during the request"
- assert ERROR in levels, "No error messages were set during the request"
- def assert_has_info_message(response):
- messages = get_messages(response.wsgi_request)
- levels = [i.level for i in messages]
- assert levels, "No messages were set during the request"
- assert INFO in levels, "No info messages were set during the request"
- def assert_has_success_message(response):
- messages = get_messages(response.wsgi_request)
- levels = [i.level for i in messages]
- assert levels, "No messages were set during the request"
- assert SUCCESS in levels, "No success messages were set during the request"
- def assert_has_message(response, message, level=None):
- messages = get_messages(response.wsgi_request)
- found = False
- for msg in messages:
- if message in str(msg):
- if level and level != msg.level:
- error = (
- 'Message containing "%s" was set '
- "but didn't have level %s (it had %s)"
- )
- raise AssertionError(error % (message, level, message.level))
- found = True
- if not found:
- raise AssertionError(
- 'Message containing "%s" was not set during the request' % message
- )
- class MisagoClient(Client):
- def post(self, *args, **kwargs):
- if "json" in kwargs:
- return super().post(
- *args,
- data=kwargs.pop("json"),
- content_type="application/json",
- **kwargs,
- )
- return super().post(*args, **kwargs)
|