Coverage for src/tests/modules/club/test_get_members.py: 100%
39 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 'Get Members'."""
3import pytest
5from kwai_bc_club.domain.member import MemberEntity
6from kwai_bc_club.domain.value_objects import License
7from kwai_bc_club.get_members import GetMembers, GetMembersCommand
8from kwai_bc_club.repositories.member_db_repository import MemberDbRepository
9from kwai_bc_club.repositories.member_repository import MemberRepository
10from kwai_core.db.database import Database
11from kwai_core.domain.presenter import AsyncPresenter, IterableResult
12from kwai_core.domain.value_objects.date import Date
15class DummyPresenter(AsyncPresenter[IterableResult[MemberEntity]]):
16 """A dummy presenter for checking the use case result."""
18 def __init__(self):
19 super().__init__()
20 self._count = 0
22 @property
23 def count(self):
24 """Return count."""
25 return self._count
27 async def present(self, use_case_result: IterableResult[MemberEntity]) -> None:
28 """Process the result of the use case."""
29 self._count += 1
32@pytest.fixture
33def member_repo(database: Database) -> MemberRepository:
34 """A fixture for a member repository."""
35 return MemberDbRepository(database)
38async def test_get_members(member_repo: MemberRepository, make_member_in_db):
39 """Test get members."""
40 await make_member_in_db()
41 command = GetMembersCommand()
42 presenter = DummyPresenter()
43 await GetMembers(member_repo, presenter).execute(command)
44 assert presenter.count > 0, "There should be at least one member"
47async def test_get_members_with_license_date(
48 member_repo: MemberRepository, make_member, make_member_in_db, make_person_in_db
49):
50 """Test get members with a license date."""
51 await make_member_in_db(
52 make_member(
53 license=License(number="0123456789", end_date=Date.create(2023, 2, 28)),
54 person=await make_person_in_db(),
55 )
56 )
57 command = GetMembersCommand(license_end_year=2023, license_end_month=2)
58 presenter = DummyPresenter()
59 await GetMembers(member_repo, presenter).execute(command)
60 assert presenter.count == 1, "There should only be one member"
63async def test_get_all_members(
64 member_repo: MemberRepository, make_member, make_member_in_db, make_person_in_db
65):
66 """Test get members to include inactive members."""
67 await make_member_in_db(
68 make_member(
69 active=False,
70 person=await make_person_in_db(),
71 )
72 )
73 command = GetMembersCommand(active=False)
74 presenter = DummyPresenter()
75 await GetMembers(member_repo, presenter).execute(command)
76 assert presenter.count > 0, "There should be at least one inactive member"