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

33 statements  

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

1"""Module for testing the use case 'Create Team Member.""" 

2 

3from typing import Self 

4 

5import pytest 

6 

7from kwai_bc_teams.create_team_member import ( 

8 CreateTeamMember, 

9 CreateTeamMemberCommand, 

10) 

11from kwai_bc_teams.domain.team import TeamEntity 

12from kwai_bc_teams.domain.team_member import TeamMember 

13from kwai_bc_teams.repositories.member_db_repository import MemberDbRepository 

14from kwai_bc_teams.repositories.team_db_repository import TeamDbRepository 

15from kwai_core.db.database import Database 

16from kwai_core.domain.presenter import Presenter 

17 

18 

19pytestmark = pytest.mark.db 

20 

21 

22class DummyPresenter(Presenter[tuple[TeamMember, TeamEntity]]): 

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

24 

25 def __init__(self): 

26 super().__init__() 

27 self._team_member = None 

28 self._team = None 

29 

30 @property 

31 def team(self) -> TeamEntity: 

32 """Return the team entity.""" 

33 return self._team 

34 

35 @property 

36 def team_member(self) -> TeamMember: 

37 """Return the team member.""" 

38 return self._team_member 

39 

40 def present(self, use_case_result: tuple[TeamMember, TeamEntity]) -> Self: 

41 """Handle use case result.""" 

42 self._team_member = use_case_result[0] 

43 self._team = use_case_result[1] 

44 return self 

45 

46 

47async def test_create_team_member( 

48 database: Database, make_team_in_db, make_team_member_in_db 

49) -> None: 

50 """Test the use case 'Create Team Member'.""" 

51 presenter = DummyPresenter() 

52 team = await make_team_in_db() 

53 team_member = await make_team_member_in_db() 

54 

55 command = CreateTeamMemberCommand( 

56 team_id=team.id.value, member_id=str(team_member.member.uuid) 

57 ) 

58 await CreateTeamMember( 

59 TeamDbRepository(database), MemberDbRepository(database), presenter 

60 ).execute(command) 

61 assert presenter.team is not None, "The team should be available" 

62 assert presenter.team_member is not None, "There should be a member"