from django.core import mail from django.test import TestCase from django.urls import reverse from ...cache.versions import get_cache_versions from ...conf.dynamicsettings import DynamicSettings from ...conf.test import override_dynamic_settings from ...users.test import create_test_user from ..mail import build_mail, mail_user, mail_users class MailTests(TestCase): def test_building_mail_without_context_raises_value_error(self): user = create_test_user("User", "user@example.com") with self.assertRaises(ValueError): build_mail(user, "Misago Test Mail", "misago/emails/base") def test_building_mail_without_settings_in_context_raises_value_error(self): user = create_test_user("User", "user@example.com") with self.assertRaises(ValueError): build_mail( user, "Misago Test Mail", "misago/emails/base", context={"settings": {}} ) @override_dynamic_settings(forum_address="http://test.com/") def test_mail_user(self): """mail_user sets message in backend""" user = create_test_user("User", "user@example.com") cache_versions = get_cache_versions() settings = DynamicSettings(cache_versions) mail_user( user, "Misago Test Mail", "misago/emails/base", context={"settings": settings}, ) self.assertEqual(mail.outbox[0].subject, "Misago Test Mail") # assert that url to user's avatar is valid html_body = mail.outbox[0].alternatives[0][0] user_avatar_url = reverse( "misago:user-avatar", kwargs={"pk": user.pk, "size": 32} ) self.assertIn(user_avatar_url, html_body) def test_mail_users(self): """mail_users sets messages in backend""" cache_versions = get_cache_versions() settings = DynamicSettings(cache_versions) test_users = [ create_test_user("User1", "User1@example.com"), create_test_user("Use2r", "User2@example.com"), create_test_user("Us3er", "User3@example.com"), create_test_user("U4ser", "User4@example.com"), create_test_user("5User", "User5@example.com"), ] mail_users( test_users, "Misago Test Spam", "misago/emails/base", context={"settings": settings}, ) spams_sent = 0 for message in mail.outbox: if message.subject == "Misago Test Spam": spams_sent += 1 self.assertEqual(spams_sent, len(test_users))