Coverage for src/tests/modules/teams/repositories/test_member_db_repository.py: 100%

37 statements  

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

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

2 

3import pytest 

4 

5from kwai_bc_club.domain.value_objects import Birthdate 

6from kwai_bc_teams.repositories.member_db_repository import ( 

7 MemberDbRepository, 

8) 

9from kwai_core.db.database import Database 

10from kwai_core.domain.value_objects.date import Date 

11 

12 

13pytestmark = pytest.mark.db 

14 

15 

16async def test_get_all(database: Database, make_member_in_db): 

17 """Test getting all members.""" 

18 member = await make_member_in_db() 

19 repo = MemberDbRepository(database) 

20 members = {member.id: member async for member in repo.get_all()} 

21 assert members is not None 

22 assert member.id in members, "The member should be returned." 

23 

24 

25async def test_get_by_id(database: Database, make_member_in_db): 

26 """Test get member by its ids.""" 

27 member = await make_member_in_db() 

28 repo = MemberDbRepository(database) 

29 query = repo.create_query() 

30 query.filter_by_id(member.id) 

31 member = await repo.get(query) 

32 assert member is not None 

33 

34 

35async def test_get_by_birthdate( 

36 database: Database, 

37 make_member, 

38 make_member_in_db, 

39 make_person_in_db, 

40 make_person, 

41 make_contact_in_db, 

42 make_country_in_db, 

43 country_japan, 

44): 

45 """Test get a member by its birthdate.""" 

46 birthdate = Birthdate(Date.create(year=2000, month=12, day=31)) 

47 await make_member_in_db( 

48 make_member( 

49 person=await make_person_in_db( 

50 make_person( 

51 birthdate=birthdate, 

52 contact=await make_contact_in_db(), 

53 nationality=await make_country_in_db(country_japan), 

54 ) 

55 ) 

56 ) 

57 ) 

58 

59 repo = MemberDbRepository(database) 

60 query = repo.create_query() 

61 query.filter_by_birthdate(birthdate.date) 

62 member = await repo.get(query) 

63 assert member is not None 

64 

65 

66async def test_get_by_birthdate_between_dates( 

67 database: Database, 

68 make_member, 

69 make_member_in_db, 

70 make_person_in_db, 

71 make_person, 

72 make_contact_in_db, 

73 make_country_in_db, 

74 country_japan, 

75): 

76 """Test get a member by its birthdate between two dates.""" 

77 birthdate = Birthdate(Date.create(year=1990, month=1, day=1)) 

78 await make_member_in_db( 

79 make_member( 

80 person=await make_person_in_db( 

81 make_person( 

82 birthdate=birthdate, 

83 contact=await make_contact_in_db(), 

84 nationality=await make_country_in_db(country_japan), 

85 ) 

86 ) 

87 ) 

88 ) 

89 repo = MemberDbRepository(database) 

90 query = repo.create_query() 

91 start_date = Date.create(year=1990, month=1, day=1) 

92 end_date = Date.create(year=1990, month=12, day=31) 

93 query.filter_by_birthdate(start_date, end_date) 

94 member = await repo.get(query) 

95 assert member is not None