Coverage for src/tests/modules/identity/test_mail_user_invitation.py: 100%
25 statements
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
1"""Module for testing the use case mail a user invitation."""
3import pytest
5from kwai_bc_identity.mail_user_invitation import (
6 MailUserInvitation,
7 MailUserInvitationCommand,
8)
9from kwai_bc_identity.user_invitations.user_invitation_db_repository import (
10 UserInvitationDbRepository,
11)
12from kwai_bc_identity.user_invitations.user_invitation_repository import (
13 UserInvitationRepository,
14)
15from kwai_core.db.database import Database
16from kwai_core.domain.exceptions import UnprocessableException
17from kwai_core.mail.mailer import Mailer
18from kwai_core.mail.recipient import Recipients
19from kwai_core.template.mail_template import MailTemplate
22pytestmark = [pytest.mark.db, pytest.mark.mail]
25@pytest.fixture(scope="module")
26def repo(database: Database) -> UserInvitationRepository:
27 """Create a user invitation repository."""
28 return UserInvitationDbRepository(database)
31async def test_mail_user_invitation(
32 repo: UserInvitationRepository,
33 make_user_invitation_in_db,
34 mailer: Mailer,
35 recipients: Recipients,
36 user_invitation_mail_template: MailTemplate,
37):
38 """Test use case mail user invitation."""
39 user_invitation = await make_user_invitation_in_db()
40 command = MailUserInvitationCommand(uuid=str(user_invitation.uuid))
41 updated_user_invitation = await MailUserInvitation(
42 repo, mailer, recipients, user_invitation_mail_template
43 ).execute(command)
45 assert updated_user_invitation.mailed is not None, "mailed should be set."
48async def test_mail_user_invitation_already_mailed(
49 repo: UserInvitationRepository,
50 make_user_invitation_in_db,
51 mailer: Mailer,
52 recipients: Recipients,
53 user_invitation_mail_template: MailTemplate,
54):
55 """Test when a user invitation is already sent."""
56 user_invitation = await make_user_invitation_in_db()
57 user_invitation = user_invitation.mail_sent()
58 await repo.update(user_invitation)
60 command = MailUserInvitationCommand(uuid=str(user_invitation.uuid))
61 with pytest.raises(UnprocessableException):
62 await MailUserInvitation(
63 repo, mailer, recipients, user_invitation_mail_template
64 ).execute(command)