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

26 statements  

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

1"""Module for defining factory fixtures for teams.""" 

2 

3import pytest 

4 

5from kwai_bc_teams.domain.team import TeamEntity, TeamMembers 

6from kwai_bc_teams.repositories.team_db_repository import TeamDbRepository 

7from kwai_core.db.database import Database 

8from kwai_core.db.uow import UnitOfWork 

9 

10 

11@pytest.fixture 

12def make_team(): 

13 """A factory fixture for creating a team.""" 

14 

15 def _make_team( 

16 name: str | None = None, members: TeamMembers | None = None 

17 ) -> TeamEntity: 

18 members = members or TeamMembers() 

19 return TeamEntity(name=name or "U11", members=members) 

20 

21 return _make_team 

22 

23 

24@pytest.fixture 

25async def make_team_in_db(request, database: Database, make_team): 

26 """A factory fixture for creating a team in database.""" 

27 created_entities = [] 

28 

29 async def _make_team_in_db(team: TeamEntity | None = None) -> TeamEntity: 

30 team = team or make_team() 

31 

32 repo = TeamDbRepository(database) 

33 async with UnitOfWork(database): 

34 team = await repo.create(team) 

35 created_entities.append(team) 

36 

37 return team 

38 

39 yield _make_team_in_db 

40 

41 repo = TeamDbRepository(database) 

42 for entity in created_entities: 

43 async with UnitOfWork(database): 

44 await repo.delete(entity)