test_mail.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. from django.core import mail
  2. from django.test import TestCase
  3. from django.urls import reverse
  4. from ...cache.versions import get_cache_versions
  5. from ...conf.dynamicsettings import DynamicSettings
  6. from ...users.test import create_test_user
  7. from ..mail import build_mail, mail_user, mail_users
  8. class MailTests(TestCase):
  9. def test_building_mail_without_context_raises_value_error(self):
  10. user = create_test_user("User", "user@example.com")
  11. with self.assertRaises(ValueError):
  12. build_mail(user, "Misago Test Mail", "misago/emails/base")
  13. def test_building_mail_without_settings_in_context_raises_value_error(self):
  14. user = create_test_user("User", "user@example.com")
  15. with self.assertRaises(ValueError):
  16. build_mail(
  17. user, "Misago Test Mail", "misago/emails/base", context={"settings": {}}
  18. )
  19. def test_mail_user(self):
  20. """mail_user sets message in backend"""
  21. user = create_test_user("User", "user@example.com")
  22. cache_versions = get_cache_versions()
  23. settings = DynamicSettings(cache_versions)
  24. mail_user(
  25. user,
  26. "Misago Test Mail",
  27. "misago/emails/base",
  28. context={"settings": settings},
  29. )
  30. self.assertEqual(mail.outbox[0].subject, "Misago Test Mail")
  31. # assert that url to user's avatar is valid
  32. html_body = mail.outbox[0].alternatives[0][0]
  33. user_avatar_url = reverse(
  34. "misago:user-avatar", kwargs={"pk": user.pk, "size": 32}
  35. )
  36. self.assertIn(user_avatar_url, html_body)
  37. def test_mail_users(self):
  38. """mail_users sets messages in backend"""
  39. cache_versions = get_cache_versions()
  40. settings = DynamicSettings(cache_versions)
  41. test_users = [
  42. create_test_user("User1", "User1@example.com"),
  43. create_test_user("Use2r", "User2@example.com"),
  44. create_test_user("Us3er", "User3@example.com"),
  45. create_test_user("U4ser", "User4@example.com"),
  46. create_test_user("5User", "User5@example.com"),
  47. ]
  48. mail_users(
  49. test_users,
  50. "Misago Test Spam",
  51. "misago/emails/base",
  52. context={"settings": settings},
  53. )
  54. spams_sent = 0
  55. for message in mail.outbox:
  56. if message.subject == "Misago Test Spam":
  57. spams_sent += 1
  58. self.assertEqual(spams_sent, len(test_users))