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

1"""Module for testing the use case 'Create Coach'.""" 

2 

3import pytest 

4 

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 

14 

15 

16pytestmark = pytest.mark.db 

17 

18 

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" 

35 

36 

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) 

52 

53 

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) 

69 

70 with pytest.raises(CoachAlreadyExistException): 

71 await CreateCoach( 

72 CoachDbRepository(database), MemberDbRepository(database), presenter 

73 ).execute(command)