Coverage for src/tests/fixtures/teams/team_members.py: 100%

22 statements  

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

1"""Module for defining factory fixtures for team members.""" 

2 

3import pytest 

4 

5from kwai_bc_club.domain.member import MemberEntity as ClubMemberEntity 

6from kwai_bc_teams.domain.team import TeamEntity 

7from kwai_bc_teams.domain.team_member import MemberEntity, TeamMember 

8from kwai_bc_teams.repositories.team_db_repository import TeamDbRepository 

9from kwai_core.db.database import Database 

10from kwai_core.domain.value_objects.traceable_time import TraceableTime 

11 

12 

13@pytest.fixture 

14def make_team_member(make_member): 

15 """A factory fixture for a team member.""" 

16 

17 def _make_team_member(member: ClubMemberEntity | None = None) -> TeamMember: 

18 member = member or make_member() 

19 return TeamMember( 

20 active=True, 

21 member=MemberEntity( 

22 id=member.id, 

23 uuid=member.uuid, 

24 name=member.name, 

25 license=member.license, 

26 birthdate=member.person.birthdate, 

27 nationality=member.person.nationality, 

28 gender=member.person.gender, 

29 ), 

30 traceable_time=TraceableTime(), 

31 ) 

32 

33 return _make_team_member 

34 

35 

36@pytest.fixture 

37def make_team_member_in_db( 

38 database: Database, make_team_member, make_member_in_db, make_team_in_db 

39): 

40 """A factory fixture for a team member in a database.""" 

41 

42 async def _make_team_member_in_db( 

43 member: MemberEntity | None = None, team: TeamEntity | None = None 

44 ) -> TeamMember: 

45 member = member or make_team_member(await make_member_in_db()) 

46 team = team or await make_team_in_db() 

47 if team is not None: 

48 await TeamDbRepository(database).add_team_member(team, member) 

49 return member 

50 

51 return _make_team_member_in_db