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
« 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."""
3from typing import Self
5import pytest
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
19pytestmark = pytest.mark.db
22class DummyPresenter(Presenter[tuple[TeamMember, TeamEntity]]):
23 """A dummy presenter for checking the use case result."""
25 def __init__(self):
26 super().__init__()
27 self._team_member = None
28 self._team = None
30 @property
31 def team(self) -> TeamEntity:
32 """Return the team entity."""
33 return self._team
35 @property
36 def team_member(self) -> TeamMember:
37 """Return the team member."""
38 return self._team_member
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
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()
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"