Coverage for src/tests/fixtures/club/coaches.py: 100%

28 statements  

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

1"""Module for defining fixtures for coaches.""" 

2 

3import pytest 

4 

5from kwai_bc_club.domain.club_coach import ClubCoachEntity 

6from kwai_bc_club.domain.member import MemberEntity 

7from kwai_bc_club.repositories.coach_db_repository import CoachDbRepository 

8from kwai_core.db.database import Database 

9from kwai_core.db.uow import UnitOfWork 

10 

11 

12@pytest.fixture 

13def make_coach(make_member): 

14 """A factory fixture for a coach.""" 

15 

16 def _make_coach( 

17 member: MemberEntity | None = None, 

18 active: bool = True, 

19 ) -> ClubCoachEntity: 

20 member = member or make_member() 

21 return ClubCoachEntity(member=member or make_member(), active=active) 

22 

23 return _make_coach 

24 

25 

26@pytest.fixture 

27async def make_coach_in_db(database: Database, make_coach, make_member_in_db): 

28 """A factory fixture for a coach in a database.""" 

29 created_entities = [] 

30 

31 async def _make_coach_in_db( 

32 coach: ClubCoachEntity | None = None, member: MemberEntity | None = None 

33 ): 

34 member = member or await make_member_in_db() 

35 coach = coach or make_coach(member=member) 

36 

37 repo = CoachDbRepository(database) 

38 async with UnitOfWork(database): 

39 coach_in_db = await repo.create(coach) 

40 

41 created_entities.append(coach_in_db) 

42 

43 return coach_in_db 

44 

45 yield _make_coach_in_db 

46 

47 repo = CoachDbRepository(database) 

48 for entity in created_entities: 

49 async with UnitOfWork(database): 

50 await repo.delete(entity)