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

24 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.db.uow import UnitOfWork 

11from kwai_core.domain.value_objects.traceable_time import TraceableTime 

12 

13 

14@pytest.fixture 

15def make_team_member(make_member): 

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

17 

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

19 member = member or make_member() 

20 return TeamMember( 

21 active=True, 

22 member=MemberEntity( 

23 id=member.id, 

24 uuid=member.uuid, 

25 name=member.name, 

26 license=member.license, 

27 birthdate=member.person.birthdate, 

28 nationality=member.person.nationality, 

29 gender=member.person.gender, 

30 ), 

31 traceable_time=TraceableTime(), 

32 ) 

33 

34 return _make_team_member 

35 

36 

37@pytest.fixture 

38def make_team_member_in_db( 

39 database: Database, make_team_member, make_member_in_db, make_team_in_db 

40): 

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

42 

43 async def _make_team_member_in_db( 

44 member: TeamMember | None = None, team: TeamEntity | None = None 

45 ) -> TeamMember: 

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

47 team = team or await make_team_in_db() 

48 team.add_member(member) 

49 async with UnitOfWork(database): 

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

51 return member 

52 

53 return _make_team_member_in_db