test.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from django.contrib.messages.api import get_messages
  2. from django.contrib.messages.constants import ERROR, INFO, SUCCESS
  3. def assert_contains(response, string, status_code=200):
  4. assert response.status_code == status_code
  5. fail_message = f'"{string}" not found in response.content'
  6. assert string in response.content.decode("utf-8"), fail_message
  7. def assert_not_contains(response, string, status_code=200):
  8. assert response.status_code == status_code
  9. fail_message = f'"{string}" was unexpectedly found in response.content'
  10. assert string not in response.content.decode("utf-8"), fail_message
  11. def assert_has_error_message(response):
  12. messages = get_messages(response.wsgi_request)
  13. levels = [i.level for i in messages]
  14. assert levels, "No messages were set during the request"
  15. assert ERROR in levels, "No error messages were set during the request"
  16. def assert_has_info_message(response):
  17. messages = get_messages(response.wsgi_request)
  18. levels = [i.level for i in messages]
  19. assert levels, "No messages were set during the request"
  20. assert INFO in levels, "No info messages were set during the request"
  21. def assert_has_success_message(response):
  22. messages = get_messages(response.wsgi_request)
  23. levels = [i.level for i in messages]
  24. assert levels, "No messages were set during the request"
  25. assert SUCCESS in levels, "No success messages were set during the request"
  26. def assert_has_message(response, message, level=None):
  27. messages = get_messages(response.wsgi_request)
  28. found = False
  29. for msg in messages:
  30. if message in str(msg):
  31. if level and level != msg.level:
  32. error = (
  33. 'Message containing "%s" was set '
  34. "but didn't have level %s (it had %s)"
  35. )
  36. raise AssertionError(error % (message, level, message.level))
  37. found = True
  38. if not found:
  39. raise AssertionError(
  40. 'Message containing "%s" was not set during the request' % message
  41. )