Skip to content

Commit 3f4341d

Browse files
committed
Aadd tests
1 parent 5b535e5 commit 3f4341d

File tree

3 files changed

+40
-2
lines changed

3 files changed

+40
-2
lines changed

backend/notifications/models.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,6 @@ class EmailTemplate(TimeStampedModel):
162162
EmailTemplateIdentifier.visa_invitation_letter_download: [
163163
*BASE_PLACEHOLDERS,
164164
"invitation_letter_download_url",
165-
"conference_name",
166165
],
167166
}
168167

backend/visa/tasks.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,6 @@ def send_invitation_letter_via_email(*, invitation_letter_request_id: int):
257257
recipient_email=invitation_letter_request.email,
258258
placeholders={
259259
"invitation_letter_download_url": invitation_letter_download_url,
260-
"conference_name": conference.name.localize("en"),
261260
},
262261
)
263262

backend/visa/tests/test_tasks.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1+
from django.urls import reverse
2+
from django.core.signing import Signer
3+
4+
from unittest.mock import patch
15
from uuid import uuid4
26
import requests
7+
from notifications.models import EmailTemplateIdentifier
38
from grants.tests.factories import GrantFactory
49
from grants.models import Grant
510
from visa.models import (
@@ -12,6 +17,7 @@
1217
notify_new_invitation_letter_request_on_slack,
1318
process_invitation_letter_request,
1419
process_invitation_letter_request_failed,
20+
send_invitation_letter_via_email,
1521
)
1622
from visa.tests.factories import (
1723
InvitationLetterAssetFactory,
@@ -375,3 +381,37 @@ def test_notify_new_invitation_letter_request_on_slack(mocker):
375381
kwargs = mock_slack.mock_calls[0][2]
376382
assert kwargs["oauth_token"] == "token123"
377383
assert kwargs["channel_id"] == "S123"
384+
385+
386+
def test_send_invitation_letter_via_email():
387+
invitation_letter_request = InvitationLetterRequestFactory()
388+
389+
with patch("visa.tasks.EmailTemplate") as mock_email_template:
390+
send_invitation_letter_via_email(
391+
invitation_letter_request_id=invitation_letter_request.id
392+
)
393+
394+
mock_email_template.objects.for_conference.assert_called_once_with(
395+
invitation_letter_request.conference
396+
)
397+
mock_email_template.objects.for_conference().get_by_identifier.assert_called_once_with(
398+
EmailTemplateIdentifier.visa_invitation_letter_download
399+
)
400+
401+
signer = Signer()
402+
url_path = reverse(
403+
"download-invitation-letter", args=[invitation_letter_request.id]
404+
)
405+
signed_url = signer.sign(url_path)
406+
signature = signed_url.split(signer.sep)[-1]
407+
408+
mock_email_template.objects.for_conference().get_by_identifier().send_email.assert_called_once_with(
409+
recipient_email=invitation_letter_request.email,
410+
placeholders={
411+
"invitation_letter_download_url": f"https://admin.pycon.it{url_path}?sig={signature}",
412+
},
413+
)
414+
415+
invitation_letter_request.refresh_from_db()
416+
417+
assert invitation_letter_request.status == InvitationLetterRequestStatus.SENT

0 commit comments

Comments
 (0)