Coverage for bc/kwai-bc-club/src/kwai_bc_club/repositories/file_upload_preview_repository.py: 100%

14 statements  

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

1"""Module that defines a file upload repository that can be used for preview.""" 

2 

3from kwai_bc_club.domain.file_upload import FileUploadEntity 

4from kwai_bc_club.domain.member import MemberEntity 

5from kwai_bc_club.repositories.file_upload_repository import ( 

6 DuplicateMemberUploadedException, 

7 FileUploadRepository, 

8) 

9 

10 

11class FileUploadPreviewRepository(FileUploadRepository): 

12 """A file upload repository that can be used for preview. 

13 

14 This implementation doesn't save anything to the database. 

15 """ 

16 

17 def __init__(self) -> None: 

18 self._saved_members: dict[str, MemberEntity] = {} 

19 

20 async def create(self, file_upload: FileUploadEntity) -> FileUploadEntity: 

21 return file_upload 

22 

23 def is_duplicate(self, member: MemberEntity) -> bool: 

24 return member.license.number in self._saved_members 

25 

26 async def save_member(self, file_upload: FileUploadEntity, member: MemberEntity): 

27 if self.is_duplicate(member): 

28 raise DuplicateMemberUploadedException( 

29 f"Member with license {member.license.number} is already uploaded." 

30 ) 

31 self._saved_members[member.license.number] = member