test_mail.py 2.6 KB

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