Coverage for bc/kwai-bc-teams/src/kwai_bc_teams/create_team.py: 100%

13 statements  

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

1"""Module that defines the use case 'Create Team'.""" 

2 

3from dataclasses import dataclass 

4 

5from kwai_core.domain.presenter import Presenter 

6 

7from kwai_bc_teams.domain.team import TeamEntity 

8from kwai_bc_teams.repositories.team_repository import TeamRepository 

9 

10 

11@dataclass(kw_only=True, frozen=True, slots=True) 

12class CreateTeamCommand: 

13 """Input for the use case 'Create Team'.""" 

14 

15 name: str 

16 active: bool 

17 remark: str 

18 

19 

20class CreateTeam: 

21 """Use case 'Create Team'.""" 

22 

23 def __init__(self, team_repo: TeamRepository, presenter: Presenter[TeamEntity]): 

24 """Initialize the use case. 

25 

26 Args: 

27 team_repo: A repository that creates the team. 

28 presenter: A presenter for a team entity. 

29 """ 

30 self._team_repo = team_repo 

31 self._presenter = presenter 

32 

33 async def execute(self, command: CreateTeamCommand) -> None: 

34 """Executes the use case.""" 

35 team = TeamEntity( 

36 name=command.name, active=command.active, remark=command.remark 

37 ) 

38 self._presenter.present(await self._team_repo.create(team))