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
« 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."""
3import pytest
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
14@pytest.fixture
15def make_team_member(make_member):
16 """A factory fixture for a team member."""
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 )
34 return _make_team_member
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."""
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
53 return _make_team_member_in_db