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

11 statements  

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

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

2 

3from dataclasses import dataclass 

4 

5from kwai_core.domain.value_objects.unique_id import UniqueId 

6 

7from kwai_bc_identity.user_invitations.user_invitation_repository import ( 

8 UserInvitationRepository, 

9) 

10 

11 

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

13class DeleteUserInvitationCommand: 

14 """Input for the use case. 

15 

16 [DeleteUserInvitation][kwai_bc_identity.delete_user_invitation.DeleteUserInvitation] 

17 

18 Attributes: 

19 uuid: The unique id of the user invitation. 

20 """ 

21 

22 uuid: str 

23 

24 

25class DeleteUserInvitation: 

26 """Implements the use case 'delete a user invitation'.""" 

27 

28 def __init__(self, user_invitation_repo: UserInvitationRepository): 

29 """Initialize the use case. 

30 

31 Args: 

32 user_invitation_repo: A repository for deleting the user invitation. 

33 """ 

34 self._user_invitation_repo = user_invitation_repo 

35 

36 async def execute(self, command: DeleteUserInvitationCommand): 

37 """Execute the use case. 

38 

39 Args: 

40 command: The input for this use case. 

41 

42 Raises: 

43 UserInvitationNotFoundException: Raised when then invitation is not found. 

44 """ 

45 entity = await self._user_invitation_repo.get_invitation_by_uuid( 

46 UniqueId.create_from_string(command.uuid) 

47 ) 

48 await self._user_invitation_repo.delete(entity)