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

13 statements  

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

1"""Implement the use case: get a user invitation.""" 

2 

3from dataclasses import dataclass 

4 

5from kwai_core.domain.presenter import Presenter 

6from kwai_core.domain.value_objects.unique_id import UniqueId 

7 

8from kwai_bc_identity.user_invitations.user_invitation import UserInvitationEntity 

9from kwai_bc_identity.user_invitations.user_invitation_repository import ( 

10 UserInvitationRepository, 

11) 

12 

13 

14@dataclass(kw_only=True, frozen=True, slots=True) 

15class GetUserInvitationCommand: 

16 """Input for the use case. 

17 

18 [GetUserInvitation][kwai_bc_identity.get_user_invitation.GetUserInvitation] 

19 

20 Attributes: 

21 uuid: The unique id of the user invitation. 

22 """ 

23 

24 uuid: str 

25 

26 

27class GetUserInvitation: 

28 """Implements the use case 'get a user invitation'.""" 

29 

30 def __init__( 

31 self, 

32 user_invitation_repo: UserInvitationRepository, 

33 presenter: Presenter[UserInvitationEntity], 

34 ): 

35 """Initialize the use case. 

36 

37 Args: 

38 user_invitation_repo: A repository for getting the user invitation. 

39 presenter: A presenter for a user invitation. 

40 """ 

41 self._user_invitation_repo = user_invitation_repo 

42 self._presenter = presenter 

43 

44 async def execute(self, command: GetUserInvitationCommand) -> None: 

45 """Execute the use case. 

46 

47 Args: 

48 command: The input for this use case. 

49 

50 Raises: 

51 UserInvitationNotFoundException: Raised when then invitation is not found. 

52 """ 

53 self._presenter.present( 

54 await self._user_invitation_repo.get_invitation_by_uuid( 

55 UniqueId.create_from_string(command.uuid) 

56 ) 

57 )