Coverage for src/tests/modules/club/repositories/test_member_db_repository.py: 95%

43 statements  

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

1"""Module for testing the member database repository.""" 

2 

3from dataclasses import replace 

4 

5import pytest 

6 

7from kwai_bc_club.domain.file_upload import FileUploadEntity, FileUploadIdentifier 

8from kwai_bc_club.repositories.member_db_repository import MemberDbRepository 

9from kwai_bc_club.repositories.member_repository import ( 

10 MemberNotFoundException, 

11 MemberRepository, 

12) 

13from kwai_core.db.database import Database 

14from kwai_core.db.uow import UnitOfWork 

15from kwai_core.domain.value_objects.owner import Owner 

16 

17 

18pytestmark = pytest.mark.db 

19 

20 

21@pytest.fixture(scope="module") 

22def member_repo(database: Database) -> MemberRepository: 

23 """A fixture for a member repository.""" 

24 return MemberDbRepository(database) 

25 

26 

27async def test_create_member(make_member_in_db): 

28 """Test create member.""" 

29 member = await make_member_in_db() 

30 assert not member.id.is_empty(), "There should be a member created." 

31 

32 

33async def test_update_member( 

34 member_repo: MemberRepository, database: Database, make_member_in_db 

35): 

36 """Test update member.""" 

37 member = await make_member_in_db() 

38 member = replace(member, remark="This is an update.") 

39 async with UnitOfWork(database): 

40 await member_repo.update(member) 

41 member = await member_repo.get(member_repo.create_query().filter_by_id(member.id)) 

42 assert member.remark == "This is an update.", "The member should be updated." 

43 

44 

45async def test_get_all(member_repo: MemberRepository, make_member_in_db): 

46 """Test get all.""" 

47 await make_member_in_db() 

48 try: 

49 it = member_repo.get_all() 

50 await anext(it) 

51 except Exception as exc: 

52 pytest.fail(f"An exception occurred: {exc}") 

53 

54 

55async def test_delete( 

56 member_repo: MemberRepository, database: Database, make_member_in_db 

57): 

58 """Test deleting a member.""" 

59 member = await make_member_in_db() 

60 async with UnitOfWork(database): 

61 await member_repo.delete(member) 

62 with pytest.raises(MemberNotFoundException): 

63 await member_repo.get(member_repo.create_query().filter_by_id(member.id)) 

64 

65 

66async def test_activate_members( 

67 member_repo: MemberRepository, database: Database, owner: Owner 

68): 

69 """Test activate members.""" 

70 async with UnitOfWork(database): 

71 upload_entity = FileUploadEntity( 

72 id=FileUploadIdentifier(1), 

73 filename="test.txt", 

74 owner=owner, 

75 ) 

76 await member_repo.activate_members(upload_entity) 

77 

78 

79async def test_deactivate_members( 

80 member_repo: MemberRepository, database: Database, owner: Owner 

81): 

82 """Test activate members.""" 

83 async with UnitOfWork(database): 

84 upload_entity = FileUploadEntity( 

85 id=FileUploadIdentifier(1), 

86 filename="test.txt", 

87 owner=owner, 

88 ) 

89 await member_repo.deactivate_members(upload_entity)