Coverage for bc/kwai-bc-identity/src/kwai_bc_identity/user_invitations/user_invitation_mailer.py: 100%

17 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2024-01-01 00:00 +0000

1"""Module that defines a mailer for a user invitation.""" 

2 

3from kwai_core.domain.mailer_service import MailerService 

4from kwai_core.mail.mailer import Mailer 

5from kwai_core.mail.message import Message 

6from kwai_core.mail.recipient import Recipient, Recipients 

7from kwai_core.template.mail_template import MailTemplate 

8 

9from kwai_bc_identity.user_invitations.user_invitation import UserInvitationEntity 

10 

11 

12class UserInvitationMailer(MailerService): 

13 """Send a user invitation mail.""" 

14 

15 def __init__( 

16 self, 

17 mailer: Mailer, 

18 recipients: Recipients, 

19 mail_template: MailTemplate, 

20 user_invitation: UserInvitationEntity, 

21 ): 

22 self._mailer = mailer 

23 self._recipients = recipients 

24 self._mail_template = mail_template 

25 self._user_invitation = user_invitation 

26 

27 def send(self) -> Message: 

28 template_vars = { 

29 "uuid": str(self._user_invitation.uuid), 

30 "name": str(self._user_invitation.name), 

31 "expires": 2, 

32 } 

33 

34 mail = self._mail_template.create_mail( 

35 self._recipients.with_to( 

36 Recipient( 

37 email=self._user_invitation.email, 

38 name=str(self._user_invitation.user.name), 

39 ) 

40 ), 

41 "User invitation", 

42 **template_vars, 

43 ) 

44 

45 self._mailer.send(mail) 

46 

47 return mail