Coverage for src/tests/modules/teams/test_get_members.py: 100%

32 statements  

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

1"""Module for testing the use case 'Get Team Members'.""" 

2 

3import pytest 

4 

5from kwai_bc_teams.domain.team_member import MemberEntity 

6from kwai_bc_teams.get_members import GetMembers, GetMembersCommand 

7from kwai_bc_teams.repositories.member_db_repository import MemberDbRepository 

8from kwai_core.db.database import Database 

9from kwai_core.domain.presenter import AsyncPresenter, IterableResult 

10 

11 

12pytestmark = pytest.mark.db 

13 

14 

15class DummyPresenter(AsyncPresenter[IterableResult[MemberEntity]]): 

16 """A dummy presenter for checking the use case result.""" 

17 

18 def __init__(self): 

19 super().__init__() 

20 self._count = 0 

21 

22 @property 

23 def count(self): 

24 """Return the count.""" 

25 return self._count 

26 

27 async def present(self, use_case_result: IterableResult[MemberEntity]) -> None: 

28 """Count the number of members.""" 

29 async for _ in use_case_result.iterator: 

30 self._count += 1 

31 

32 

33@pytest.fixture 

34def team_member_presenter() -> DummyPresenter: 

35 """A fixture for a team member presenter.""" 

36 return DummyPresenter() 

37 

38 

39async def test_get_members_not_in_team( 

40 database: Database, make_team_in_db, make_member_in_db, team_member_presenter 

41): 

42 """Test get team members.""" 

43 team = await make_team_in_db() 

44 await make_member_in_db() 

45 command = GetMembersCommand(team_id=team.id.value, in_team=False) 

46 await GetMembers(MemberDbRepository(database), team_member_presenter).execute( 

47 command 

48 ) 

49 assert team_member_presenter.count > 0 

50 

51 

52async def test_get_members_in_team( 

53 database: Database, make_team_in_db, make_team_member_in_db, team_member_presenter 

54): 

55 """Test get team members from a team.""" 

56 team = await make_team_in_db() 

57 await make_team_member_in_db(team=team) 

58 command = GetMembersCommand(team_id=team.id.value) 

59 await GetMembers(MemberDbRepository(database), team_member_presenter).execute( 

60 command 

61 ) 

62 assert team_member_presenter.count == 1