From 6f7befc358e75ce242db0611f4c131ec238775bf Mon Sep 17 00:00:00 2001 From: Misha Tomilov Date: Wed, 26 Mar 2025 15:13:09 +0100 Subject: [PATCH] Rename tasks/mailer.py to tasks/email.py --- h/jinja_extensions/navbar_data_admin.py | 6 +-- h/routes.py | 8 ++-- h/services/user_signup.py | 6 +-- h/subscribers.py | 6 +-- h/tasks/celery.py | 2 +- h/tasks/{mailer.py => email.py} | 2 +- .../{mailer.html.jinja2 => email.html.jinja2} | 8 ++-- h/views/accounts.py | 4 +- h/views/admin/{mailer.py => email.py} | 24 +++++----- h/views/api/flags.py | 8 ++-- .../h/views/admin/permissions_test.py | 2 +- .../navbar_data_admin_test.py | 2 +- tests/unit/h/routes_test.py | 8 ++-- tests/unit/h/services/user_signup_test.py | 18 ++++---- tests/unit/h/subscribers_test.py | 44 +++++++++---------- .../h/tasks/{mailer_test.py => email_test.py} | 12 ++--- tests/unit/h/views/accounts_test.py | 14 +++--- .../admin/{mailer_test.py => email_test.py} | 44 +++++++++---------- tests/unit/h/views/api/flags_test.py | 24 +++++----- 19 files changed, 121 insertions(+), 121 deletions(-) rename h/tasks/{mailer.py => email.py} (97%) rename h/templates/admin/{mailer.html.jinja2 => email.html.jinja2} (82%) rename h/views/admin/{mailer.py => email.py} (73%) rename tests/unit/h/tasks/{mailer_test.py => email_test.py} (80%) rename tests/unit/h/views/admin/{mailer_test.py => email_test.py} (68%) diff --git a/h/jinja_extensions/navbar_data_admin.py b/h/jinja_extensions/navbar_data_admin.py index cd9790ce814..d7c4dda40c3 100644 --- a/h/jinja_extensions/navbar_data_admin.py +++ b/h/jinja_extensions/navbar_data_admin.py @@ -68,10 +68,10 @@ def navbar_data_admin(request): ], }, { - "id": "mailer", + "id": "email", "permission": Permission.AdminPage.LOW_RISK, - "title": "Mailer", - "route": "admin.mailer", + "title": "Email", + "route": "admin.email", }, { "id": "nipsa", diff --git a/h/routes.py b/h/routes.py index 2bb4a831979..054cbc20e73 100644 --- a/h/routes.py +++ b/h/routes.py @@ -52,11 +52,11 @@ def includeme(config): # noqa: PLR0915 factory="h.traversal.GroupRequiredRoot", traverse="/{id}", ) - config.add_route("admin.mailer", "/admin/mailer") - config.add_route("admin.mailer_test", "/admin/mailer/test") + config.add_route("admin.email", "/admin/email") + config.add_route("admin.email_test", "/admin/email/test") config.add_route( - "admin.mailer.preview.mention_notification", - "/admin/mailer/preview/mention-notification", + "admin.email.preview.mention_notification", + "/admin/email/preview/mention-notification", ) config.add_route("admin.nipsa", "/admin/nipsa") config.add_route("admin.oauthclients", "/admin/oauthclients") diff --git a/h/services/user_signup.py b/h/services/user_signup.py index fc0ad0a3ee5..5291361d9bd 100644 --- a/h/services/user_signup.py +++ b/h/services/user_signup.py @@ -10,7 +10,7 @@ from h.services.email import EmailTag, LogData from h.services.exceptions import ConflictError from h.services.user_password import UserPasswordService -from h.tasks import mailer as tasks_mailer +from h.tasks import email log = logging.getLogger(__name__) @@ -125,7 +125,7 @@ def _require_activation(self, user): self.session.flush() # Send the activation email - email = signup.generate( + email_data = signup.generate( request=self.request, user_id=user.id, email=user.email, @@ -136,7 +136,7 @@ def _require_activation(self, user): sender_id=user.id, recipient_ids=[user.id], ) - tasks_mailer.send.delay(asdict(email), asdict(log_data)) + email.send.delay(asdict(email_data), asdict(log_data)) def user_signup_service_factory(_context, request): diff --git a/h/subscribers.py b/h/subscribers.py index d6f679d01aa..07660866aeb 100644 --- a/h/subscribers.py +++ b/h/subscribers.py @@ -13,7 +13,7 @@ from h.services import NotificationService from h.services.annotation_read import AnnotationReadService from h.services.email import LogData -from h.tasks import annotations, mailer +from h.tasks import annotations, email logger = logging.getLogger(__name__) @@ -117,7 +117,7 @@ def send_reply_notifications(event): extra={"annotation_id": annotation.id}, ) try: - mailer.send.delay(asdict(email_data), asdict(log_data)) + email.send.delay(asdict(email_data), asdict(log_data)) except OperationalError as err: # pragma: no cover # We could not connect to rabbit! So carry on report_exception(err) @@ -161,7 +161,7 @@ def send_mention_notifications(event): extra={"annotation_id": annotation.id}, ) try: - mailer.send.delay(asdict(email_data), asdict(log_data)) + email.send.delay(asdict(email_data), asdict(log_data)) except OperationalError as err: # pragma: no cover # We could not connect to rabbit! So carry on report_exception(err) diff --git a/h/tasks/celery.py b/h/tasks/celery.py index 50ce259e072..69819e17073 100644 --- a/h/tasks/celery.py +++ b/h/tasks/celery.py @@ -81,7 +81,7 @@ "h.tasks.cleanup", "h.tasks.indexer", "h.tasks.job_queue", - "h.tasks.mailer", + "h.tasks.email", "h.tasks.url_migration", ), task_routes={ diff --git a/h/tasks/mailer.py b/h/tasks/email.py similarity index 97% rename from h/tasks/mailer.py rename to h/tasks/email.py index 877767f0b3e..9e06910dce5 100644 --- a/h/tasks/mailer.py +++ b/h/tasks/email.py @@ -2,7 +2,7 @@ A module for sending email. This module defines a Celery task for sending emails in a worker process. -""" +""" # noqa: A005 from typing import Any diff --git a/h/templates/admin/mailer.html.jinja2 b/h/templates/admin/email.html.jinja2 similarity index 82% rename from h/templates/admin/mailer.html.jinja2 rename to h/templates/admin/email.html.jinja2 index 7ad777c1f91..a9ba794add8 100644 --- a/h/templates/admin/mailer.html.jinja2 +++ b/h/templates/admin/email.html.jinja2 @@ -1,7 +1,7 @@ {% extends "h:templates/layouts/admin.html.jinja2" %} -{% set page_id = 'mailer' %} -{% set page_title = 'Mailer' %} +{% set page_id = 'email' %} +{% set page_title = 'Email' %} {% block content %} @@ -17,7 +17,7 @@

Send a test email

-
+
@@ -35,7 +35,7 @@
diff --git a/h/views/accounts.py b/h/views/accounts.py index 5eaf54e7dcc..4e34e31b397 100644 --- a/h/views/accounts.py +++ b/h/views/accounts.py @@ -31,7 +31,7 @@ ) from h.services import SubscriptionService from h.services.email import LogData -from h.tasks import mailer +from h.tasks import email from h.util.view import json_view _ = i18n.TranslationString @@ -216,7 +216,7 @@ def _send_forgot_password_email(self, user): log_data = LogData( tag=email_data.tag, sender_id=user.id, recipient_ids=[user.id] ) - mailer.send.delay(asdict(email_data), asdict(log_data)) + email.send.delay(asdict(email_data), asdict(log_data)) @view_defaults( diff --git a/h/views/admin/mailer.py b/h/views/admin/email.py similarity index 73% rename from h/views/admin/mailer.py rename to h/views/admin/email.py index 84edaf600df..3dc973993ba 100644 --- a/h/views/admin/mailer.py +++ b/h/views/admin/email.py @@ -1,4 +1,4 @@ -from dataclasses import asdict +from dataclasses import asdict # noqa: A005 from pyramid.httpexceptions import HTTPSeeOther from pyramid.view import view_config @@ -6,30 +6,30 @@ from h.emails import test from h.security import Permission from h.services.email import LogData -from h.tasks import mailer +from h.tasks import email @view_config( - route_name="admin.mailer", + route_name="admin.email", request_method="GET", - renderer="h:templates/admin/mailer.html.jinja2", + renderer="h:templates/admin/email.html.jinja2", permission=Permission.AdminPage.LOW_RISK, ) -def mailer_index(request): - """Show the mailer test tools.""" +def email_index(request): + """Show the email test tools.""" return {"taskid": request.params.get("taskid")} @view_config( - route_name="admin.mailer_test", + route_name="admin.email_test", request_method="POST", permission=Permission.AdminPage.LOW_RISK, require_csrf=True, ) -def mailer_test(request): +def email_test(request): """Send a test email.""" if "recipient" not in request.params: - index = request.route_path("admin.mailer") + index = request.route_path("admin.email") return HTTPSeeOther(location=index) email_data = test.generate(request, request.params["recipient"]) @@ -37,13 +37,13 @@ def mailer_test(request): tag=email_data.tag, sender_id=request.user.id, ) - result = mailer.send.delay(asdict(email_data), asdict(log_data)) - index = request.route_path("admin.mailer", _query={"taskid": result.task_id}) + result = email.send.delay(asdict(email_data), asdict(log_data)) + index = request.route_path("admin.email", _query={"taskid": result.task_id}) return HTTPSeeOther(location=index) @view_config( - route_name="admin.mailer.preview.mention_notification", + route_name="admin.email.preview.mention_notification", request_method="GET", permission=Permission.AdminPage.LOW_RISK, renderer="h:templates/emails/mention_notification.html.jinja2", diff --git a/h/views/api/flags.py b/h/views/api/flags.py index cfa293cc37e..919069ed335 100644 --- a/h/views/api/flags.py +++ b/h/views/api/flags.py @@ -7,7 +7,7 @@ from h.security import Permission from h.security.permission_map import GROUP_MODERATE_PREDICATES from h.services.email import LogData -from h.tasks import mailer +from h.tasks import email from h.views.api.config import api_config @@ -39,12 +39,12 @@ def _email_group_moderators(request, annotation): ) for membership in memberships: - if email := membership.user.email: - email_data = flag_notification.generate(request, email, incontext_link) + if user_email := membership.user.email: + email_data = flag_notification.generate(request, user_email, incontext_link) log_data = LogData( tag=email_data.tag, sender_id=request.user.id, recipient_ids=[membership.user.id], extra={"annotation_id": annotation.id}, ) - mailer.send.delay(asdict(email_data), asdict(log_data)) + email.send.delay(asdict(email_data), asdict(log_data)) diff --git a/tests/functional/h/views/admin/permissions_test.py b/tests/functional/h/views/admin/permissions_test.py index 52ce2a6e69f..e0f2247477a 100644 --- a/tests/functional/h/views/admin/permissions_test.py +++ b/tests/functional/h/views/admin/permissions_test.py @@ -9,7 +9,7 @@ class TestAdminPermissions: ("/admin/badge", False), ("/admin/features", False), ("/admin/groups", True), - ("/admin/mailer", True), + ("/admin/email", True), ("/admin/nipsa", False), ("/admin/oauthclients", False), ("/admin/organizations", True), diff --git a/tests/unit/h/jinja2_extensions/navbar_data_admin_test.py b/tests/unit/h/jinja2_extensions/navbar_data_admin_test.py index 60ea05d889e..a80adb32f11 100644 --- a/tests/unit/h/jinja2_extensions/navbar_data_admin_test.py +++ b/tests/unit/h/jinja2_extensions/navbar_data_admin_test.py @@ -4,7 +4,7 @@ from h.jinja_extensions import navbar_data_admin -STAFF_TABS = ["index", "groups", "mailer", "organizations", "users"] +STAFF_TABS = ["index", "groups", "email", "organizations", "users"] class TestNavbarDataAdmin: diff --git a/tests/unit/h/routes_test.py b/tests/unit/h/routes_test.py index b726b6a9814..3858149a80f 100644 --- a/tests/unit/h/routes_test.py +++ b/tests/unit/h/routes_test.py @@ -59,11 +59,11 @@ def test_includeme(): factory="h.traversal.GroupRequiredRoot", traverse="/{id}", ), - call("admin.mailer", "/admin/mailer"), - call("admin.mailer_test", "/admin/mailer/test"), + call("admin.email", "/admin/email"), + call("admin.email_test", "/admin/email/test"), call( - "admin.mailer.preview.mention_notification", - "/admin/mailer/preview/mention-notification", + "admin.email.preview.mention_notification", + "/admin/email/preview/mention-notification", ), call("admin.nipsa", "/admin/nipsa"), call("admin.oauthclients", "/admin/oauthclients"), diff --git a/tests/unit/h/services/user_signup_test.py b/tests/unit/h/services/user_signup_test.py index afc0b269b76..6b0485cc998 100644 --- a/tests/unit/h/services/user_signup_test.py +++ b/tests/unit/h/services/user_signup_test.py @@ -7,7 +7,7 @@ from h.models import Activation, User from h.services.exceptions import ConflictError from h.services.user_signup import UserSignupService, user_signup_service_factory -from h.tasks import mailer +from h.tasks import email class TestUserSignupService: @@ -94,9 +94,9 @@ def test_signup_sets_password_using_password_service( user_password_service.update_password.assert_called_once_with(user, "wibble") def test_signup_sends_email( - self, svc, signup, tasks_mailer, pyramid_request, asdict, LogData + self, svc, signup, tasks_email, pyramid_request, asdict, LogData ): - signup.generate.return_value = sentinel.email + signup.generate.return_value = sentinel.email_data user = svc.signup(username="foo", email="foo@bar.com") @@ -110,17 +110,17 @@ def test_signup_sends_email( asdict.assert_has_calls( [call(signup.generate.return_value), call(LogData.return_value)] ) - tasks_mailer.send.delay.assert_called_once_with( + tasks_email.send.delay.assert_called_once_with( sentinel.email_data, sentinel.log_data ) def test_signup_does_not_send_email_when_activation_not_required( - self, svc, signup, tasks_mailer + self, svc, signup, tasks_email ): svc.signup(require_activation=False, username="foo", email="foo@bar.com") signup.generate.assert_not_called() - tasks_mailer.send.delay.assert_not_called() + tasks_email.send.delay.assert_not_called() def test_signup_creates_subscriptions(self, svc, subscription_service, factories): subscription = factories.Subscriptions(active=False) @@ -181,9 +181,9 @@ def svc(self, pyramid_request, user_password_service, subscription_service): ) @pytest.fixture(autouse=True) - def tasks_mailer(self, patch): - mock = patch("h.services.user_signup.tasks_mailer") - mock.send.delay = create_autospec(mailer.send.run) + def tasks_email(self, patch): + mock = patch("h.services.user_signup.email") + mock.send.delay = create_autospec(email.send.run) return mock @pytest.fixture(autouse=True) diff --git a/tests/unit/h/subscribers_test.py b/tests/unit/h/subscribers_test.py index 5505a61ff99..216d3f82cce 100644 --- a/tests/unit/h/subscribers_test.py +++ b/tests/unit/h/subscribers_test.py @@ -9,7 +9,7 @@ from h.events import AnnotationEvent from h.exceptions import RealtimeMessageQueueError from h.models.notification import NotificationType -from h.tasks import mailer +from h.tasks import email @pytest.mark.usefixtures("routes") @@ -121,7 +121,7 @@ def test_it_sends_emails( reply, mention, emails, - tasks_mailer, + tasks_email, asdict, LogData, ): @@ -154,7 +154,7 @@ def test_it_sends_emails( email_data = emails.reply_notification.generate.return_value asdict.assert_has_calls([call(email_data), call(LogData.return_value)]) - tasks_mailer.send.delay.assert_called_once_with( + tasks_email.send.delay.assert_called_once_with( sentinel.email_data, sentinel.log_data ) @@ -165,22 +165,22 @@ def test_it_sends_emails( ) def test_it_does_nothing_if_no_notification_is_required( - self, event, reply, tasks_mailer + self, event, reply, tasks_email ): reply.get_notification.return_value = None subscribers.send_reply_notifications(event) - tasks_mailer.send.delay.assert_not_called() + tasks_email.send.delay.assert_not_called() - def test_it_fails_gracefully_if_the_task_does_not_queue(self, event, tasks_mailer): - tasks_mailer.send.side_effect = OperationalError + def test_it_fails_gracefully_if_the_task_does_not_queue(self, event, tasks_email): + tasks_email.send.side_effect = OperationalError # No explosions please subscribers.send_reply_notifications(event) def test_it_does_nothing_if_the_reply_user_is_mentioned( - self, event, reply, tasks_mailer, mention + self, event, reply, tasks_email, mention ): reply_notification = mock.MagicMock() reply.get_notification.return_value = reply_notification @@ -191,16 +191,16 @@ def test_it_does_nothing_if_the_reply_user_is_mentioned( subscribers.send_reply_notifications(event) - tasks_mailer.send.delay.assert_not_called() + tasks_email.send.delay.assert_not_called() def test_it_does_nothing_if_notifications_arent_allowed( - self, event, tasks_mailer, notification_service + self, event, tasks_email, notification_service ): notification_service.allow_notifications.return_value = False subscribers.send_reply_notifications(event) - tasks_mailer.send.delay.assert_not_called() + tasks_email.send.delay.assert_not_called() @pytest.fixture def event(self, pyramid_request): @@ -222,7 +222,7 @@ def test_it_sends_emails( notification_service, mention, emails, - tasks_mailer, + tasks_email, asdict, LogData, ): @@ -252,7 +252,7 @@ def test_it_sends_emails( email_data = emails.mention_notification.generate.return_value asdict.assert_has_calls([call(email_data), call(LogData.return_value)]) - tasks_mailer.send.delay.assert_called_once_with( + tasks_email.send.delay.assert_called_once_with( sentinel.email_data, sentinel.log_data ) @@ -263,28 +263,28 @@ def test_it_sends_emails( ) def test_it_does_nothing_if_no_notification_is_required( - self, event, mention, tasks_mailer + self, event, mention, tasks_email ): mention.get_notifications.return_value = [] subscribers.send_mention_notifications(event) - tasks_mailer.send.delay.assert_not_called() + tasks_email.send.delay.assert_not_called() - def test_it_fails_gracefully_if_the_task_does_not_queue(self, event, tasks_mailer): - tasks_mailer.send.side_effect = OperationalError + def test_it_fails_gracefully_if_the_task_does_not_queue(self, event, tasks_email): + tasks_email.send.side_effect = OperationalError # No explosions please subscribers.send_mention_notifications(event) def test_it_does_nothing_if_notifications_arent_allowed( - self, event, tasks_mailer, notification_service + self, event, tasks_email, notification_service ): notification_service.allow_notifications.return_value = False subscribers.send_mention_notifications(event) - tasks_mailer.send.delay.assert_not_called() + tasks_email.send.delay.assert_not_called() @pytest.fixture def event(self, pyramid_request): @@ -340,9 +340,9 @@ def mention(patch): @pytest.fixture(autouse=True) -def tasks_mailer(patch): - mock = patch("h.subscribers.mailer") - mock.send.delay = create_autospec(mailer.send.run) +def tasks_email(patch): + mock = patch("h.subscribers.email") + mock.send.delay = create_autospec(email.send.run) return mock diff --git a/tests/unit/h/tasks/mailer_test.py b/tests/unit/h/tasks/email_test.py similarity index 80% rename from tests/unit/h/tasks/mailer_test.py rename to tests/unit/h/tasks/email_test.py index 2dd2132c57b..f3c18433de4 100644 --- a/tests/unit/h/tasks/mailer_test.py +++ b/tests/unit/h/tasks/email_test.py @@ -3,11 +3,11 @@ import pytest from h.services.email import EmailData, EmailTag, LogData -from h.tasks import mailer +from h.tasks import email def test_send(email_data, log_data, email_service): - mailer.send(email_data, log_data) + email.send(email_data, log_data) email_service.send.assert_called_once_with( EmailData(**email_data), LogData(**log_data) @@ -16,13 +16,13 @@ def test_send(email_data, log_data, email_service): def test_send_retries_if_mailing_fails(email_data, log_data, email_service): email_service.send.side_effect = Exception() - mailer.send.retry = mock.Mock(wraps=mailer.send.retry) + email.send.retry = mock.Mock(wraps=email.send.retry) with pytest.raises(Exception) as exc_info: # noqa: PT011 - mailer.send(email_data, log_data) + email.send(email_data, log_data) assert exc_info.type is Exception - assert mailer.send.retry.called + assert email.send.retry.called @pytest.fixture @@ -48,6 +48,6 @@ def pyramid_request(pyramid_request): @pytest.fixture(autouse=True) def celery(patch, pyramid_request): - celery = patch("h.tasks.mailer.celery") + celery = patch("h.tasks.email.celery") celery.request = pyramid_request return celery diff --git a/tests/unit/h/views/accounts_test.py b/tests/unit/h/views/accounts_test.py index 89886c43c18..969c0e79263 100644 --- a/tests/unit/h/views/accounts_test.py +++ b/tests/unit/h/views/accounts_test.py @@ -11,7 +11,7 @@ from h.models import Subscriptions from h.services.email import EmailData, EmailTag, LogData -from h.tasks import mailer +from h.tasks import email from h.views import accounts as views @@ -230,7 +230,7 @@ def routes(self, pyramid_config): @pytest.mark.usefixtures( - "activation_model", "tasks_mailer", "reset_password_email", "routes" + "activation_model", "tasks_email", "reset_password_email", "routes" ) class TestForgotPasswordController: def test_post_returns_form_when_validation_fails( @@ -272,7 +272,7 @@ def test_post_generates_mail( def test_post_sends_mail( self, form_validating_to, - tasks_mailer, + tasks_email, pyramid_request, user, ): @@ -294,7 +294,7 @@ def test_post_sends_mail( sender_id=user.id, recipient_ids=[user.id], ) - tasks_mailer.send.delay.assert_called_once_with( + tasks_email.send.delay.assert_called_once_with( asdict(email_data), asdict(log_data) ) @@ -1047,9 +1047,9 @@ def ActivationEvent(patch): @pytest.fixture -def tasks_mailer(patch): - mock = patch("h.views.accounts.mailer") - mock.send.delay = create_autospec(mailer.send.run) +def tasks_email(patch): + mock = patch("h.views.accounts.email") + mock.send.delay = create_autospec(email.send.run) return mock diff --git a/tests/unit/h/views/admin/mailer_test.py b/tests/unit/h/views/admin/email_test.py similarity index 68% rename from tests/unit/h/views/admin/mailer_test.py rename to tests/unit/h/views/admin/email_test.py index 7c43ac7f079..08f04a8e8a6 100644 --- a/tests/unit/h/views/admin/mailer_test.py +++ b/tests/unit/h/views/admin/email_test.py @@ -5,41 +5,41 @@ from pyramid.httpexceptions import HTTPSeeOther from h.services.email import EmailData, EmailTag, LogData -from h.tasks import mailer -from h.views.admin.mailer import mailer_index, mailer_test, preview_mention_notification +from h.tasks import email +from h.views.admin.email import email_index, email_test, preview_mention_notification -class TestMailerIndex: +class TestEmailIndex: def test_when_no_taskid(self, pyramid_request): - result = mailer_index(pyramid_request) + result = email_index(pyramid_request) assert result == {"taskid": None} def test_with_taskid(self, pyramid_request): pyramid_request.params["taskid"] = "abcd1234" - result = mailer_index(pyramid_request) + result = email_index(pyramid_request) assert result == {"taskid": "abcd1234"} -@pytest.mark.usefixtures("tasks_mailer", "testmail", "routes") -class TestMailerTest: - def test_doesnt_mail_when_no_recipient(self, tasks_mailer, pyramid_request): - mailer_test(pyramid_request) +@pytest.mark.usefixtures("tasks_email", "testmail", "routes") +class TestEmailTest: + def test_doesnt_mail_when_no_recipient(self, tasks_email, pyramid_request): + email_test(pyramid_request) - assert not tasks_mailer.send.delay.called + assert not tasks_email.send.delay.called def test_redirects_when_no_recipient(self, pyramid_request): - result = mailer_test(pyramid_request) + result = email_test(pyramid_request) assert isinstance(result, HTTPSeeOther) - assert result.location == "/adm/mailer" + assert result.location == "/adm/email" - def test_sends_mail(self, tasks_mailer, pyramid_request, user): + def test_sends_mail(self, tasks_email, pyramid_request, user): pyramid_request.params["recipient"] = "meerkat@example.com" - mailer_test(pyramid_request) + email_test(pyramid_request) email_data = EmailData( recipients=["meerkat@example.com"], @@ -49,17 +49,17 @@ def test_sends_mail(self, tasks_mailer, pyramid_request, user): html="html", ) log_data = LogData(tag=email_data.tag, sender_id=user.id) - tasks_mailer.send.delay.assert_called_once_with( + tasks_email.send.delay.assert_called_once_with( asdict(email_data), asdict(log_data) ) def test_redirects(self, pyramid_request): pyramid_request.params["recipient"] = "meerkat@example.com" - result = mailer_test(pyramid_request) + result = email_test(pyramid_request) assert isinstance(result, HTTPSeeOther) - assert result.location == "/adm/mailer?taskid=a1b2c3" + assert result.location == "/adm/email?taskid=a1b2c3" @pytest.fixture def user(self, factories, db_session): @@ -96,15 +96,15 @@ def __init__(self): @pytest.fixture -def tasks_mailer(patch): - mock = patch("h.views.admin.mailer.mailer") - mock.send.delay = create_autospec(mailer.send.run, return_value=FakeResult()) +def tasks_email(patch): + mock = patch("h.views.admin.email.email") + mock.send.delay = create_autospec(email.send.run, return_value=FakeResult()) return mock @pytest.fixture def testmail(patch): - test = patch("h.views.admin.mailer.test") + test = patch("h.views.admin.email.test") test.generate.side_effect = lambda _, r: EmailData( recipients=[r], subject="TEST", body="text", tag=EmailTag.TEST, html="html" ) @@ -113,4 +113,4 @@ def testmail(patch): @pytest.fixture def routes(pyramid_config): - pyramid_config.add_route("admin.mailer", "/adm/mailer") + pyramid_config.add_route("admin.email", "/adm/email") diff --git a/tests/unit/h/views/api/flags_test.py b/tests/unit/h/views/api/flags_test.py index b132ef1712c..6cfe4f3fa17 100644 --- a/tests/unit/h/views/api/flags_test.py +++ b/tests/unit/h/views/api/flags_test.py @@ -5,7 +5,7 @@ from h.models import GroupMembership, GroupMembershipRoles from h.services.email import EmailData, EmailTag -from h.tasks import mailer +from h.tasks import email from h.traversal import AnnotationContext from h.views.api import flags @@ -20,7 +20,7 @@ def test_it( flag_service, links, group_members_service, - tasks_mailer, + tasks_email, flag_notification, moderators, ): @@ -41,10 +41,10 @@ def test_it( for user in moderators ] - assert tasks_mailer.send.delay.call_args_list == [ + assert tasks_email.send.delay.call_args_list == [ call( { - "recipients": sentinel.email1, + "recipients": [sentinel.email1], "subject": sentinel.subject1, "body": sentinel.text1, "tag": EmailTag.FLAG_NOTIFICATION, @@ -59,7 +59,7 @@ def test_it( ), call( { - "recipients": sentinel.email2, + "recipients": [sentinel.email2], "subject": sentinel.subject2, "body": sentinel.text2, "tag": EmailTag.FLAG_NOTIFICATION, @@ -101,14 +101,14 @@ def test_when_there_are_no_moderators( pyramid_request, group_members_service, flag_notification, - tasks_mailer, + tasks_email, ): group_members_service.get_memberships.return_value = [] flags.create(context, pyramid_request) flag_notification.generate.assert_not_called() - tasks_mailer.send.delay.assert_not_called() + tasks_email.send.delay.assert_not_called() @pytest.fixture(autouse=True) def moderators(self, factories, group_members_service, db_session): @@ -153,14 +153,14 @@ def flag_notification(mocker): ) flag_notification.generate.side_effect = [ EmailData( - recipients=sentinel.email1, + recipients=[sentinel.email1], subject=sentinel.subject1, body=sentinel.text1, tag=EmailTag.FLAG_NOTIFICATION, html=sentinel.html1, ), EmailData( - recipients=sentinel.email2, + recipients=[sentinel.email2], subject=sentinel.subject2, body=sentinel.text2, tag=EmailTag.FLAG_NOTIFICATION, @@ -171,7 +171,7 @@ def flag_notification(mocker): @pytest.fixture(autouse=True) -def tasks_mailer(patch): - mock = patch("h.views.api.flags.mailer") - mock.send.delay = create_autospec(mailer.send.run) +def tasks_email(patch): + mock = patch("h.views.api.flags.email") + mock.send.delay = create_autospec(email.send.run) return mock