Coverage for src/tests/modules/club/test_create_coach.py: 100%
29 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 Coach'."""
3import pytest
5from kwai_bc_club.create_coach import CreateCoach, CreateCoachCommand
6from kwai_bc_club.domain.club_coach import ClubCoachEntity
7from kwai_bc_club.repositories.coach_db_repository import CoachDbRepository
8from kwai_bc_club.repositories.coach_repository import CoachAlreadyExistException
9from kwai_bc_club.repositories.member_db_repository import MemberDbRepository
10from kwai_bc_club.repositories.member_repository import MemberNotFoundException
11from kwai_core.db.database import Database
12from kwai_core.domain.presenter import EntityPresenter
13from kwai_core.domain.value_objects.unique_id import UniqueId
16pytestmark = pytest.mark.db
19async def test_create_coach(make_member_in_db, database: Database):
20 """Test creating a coach."""
21 member = await make_member_in_db()
22 command = CreateCoachCommand(
23 diploma="Initiator",
24 description="Head coach",
25 remark="Test",
26 active=True,
27 head=False,
28 member_uuid=str(member.uuid),
29 )
30 presenter = EntityPresenter[ClubCoachEntity]()
31 await CreateCoach(
32 CoachDbRepository(database), MemberDbRepository(database), presenter
33 ).execute(command)
34 assert presenter.entity is not None, "There should be a coach"
37async def test_create_coach_without_member(database: Database):
38 """Test creating a coach with a member that doesn't exist."""
39 command = CreateCoachCommand(
40 diploma="Initiator",
41 description="Head coach",
42 remark="Test",
43 active=True,
44 head=False,
45 member_uuid=str(UniqueId.generate()),
46 )
47 presenter = EntityPresenter[ClubCoachEntity]()
48 with pytest.raises(MemberNotFoundException):
49 await CreateCoach(
50 CoachDbRepository(database), MemberDbRepository(database), presenter
51 ).execute(command)
54async def test_coach_already_exists(make_member_in_db, database: Database):
55 """Test creating a coach twice."""
56 member = await make_member_in_db()
57 command = CreateCoachCommand(
58 diploma="Initiator",
59 description="Head coach",
60 remark="Test",
61 active=True,
62 head=False,
63 member_uuid=str(member.uuid),
64 )
65 presenter = EntityPresenter[ClubCoachEntity]()
66 await CreateCoach(
67 CoachDbRepository(database), MemberDbRepository(database), presenter
68 ).execute(command)
70 with pytest.raises(CoachAlreadyExistException):
71 await CreateCoach(
72 CoachDbRepository(database), MemberDbRepository(database), presenter
73 ).execute(command)