Coverage for src/tests/modules/club/repositories/test_member_db_repository.py: 95%
43 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 member database repository."""
3from dataclasses import replace
5import pytest
7from kwai_bc_club.domain.file_upload import FileUploadEntity, FileUploadIdentifier
8from kwai_bc_club.repositories.member_db_repository import MemberDbRepository
9from kwai_bc_club.repositories.member_repository import (
10 MemberNotFoundException,
11 MemberRepository,
12)
13from kwai_core.db.database import Database
14from kwai_core.db.uow import UnitOfWork
15from kwai_core.domain.value_objects.owner import Owner
18pytestmark = pytest.mark.db
21@pytest.fixture(scope="module")
22def member_repo(database: Database) -> MemberRepository:
23 """A fixture for a member repository."""
24 return MemberDbRepository(database)
27async def test_create_member(make_member_in_db):
28 """Test create member."""
29 member = await make_member_in_db()
30 assert not member.id.is_empty(), "There should be a member created."
33async def test_update_member(
34 member_repo: MemberRepository, database: Database, make_member_in_db
35):
36 """Test update member."""
37 member = await make_member_in_db()
38 member = replace(member, remark="This is an update.")
39 async with UnitOfWork(database):
40 await member_repo.update(member)
41 member = await member_repo.get(member_repo.create_query().filter_by_id(member.id))
42 assert member.remark == "This is an update.", "The member should be updated."
45async def test_get_all(member_repo: MemberRepository, make_member_in_db):
46 """Test get all."""
47 await make_member_in_db()
48 try:
49 it = member_repo.get_all()
50 await anext(it)
51 except Exception as exc:
52 pytest.fail(f"An exception occurred: {exc}")
55async def test_delete(
56 member_repo: MemberRepository, database: Database, make_member_in_db
57):
58 """Test deleting a member."""
59 member = await make_member_in_db()
60 async with UnitOfWork(database):
61 await member_repo.delete(member)
62 with pytest.raises(MemberNotFoundException):
63 await member_repo.get(member_repo.create_query().filter_by_id(member.id))
66async def test_activate_members(
67 member_repo: MemberRepository, database: Database, owner: Owner
68):
69 """Test activate members."""
70 async with UnitOfWork(database):
71 upload_entity = FileUploadEntity(
72 id=FileUploadIdentifier(1),
73 filename="test.txt",
74 owner=owner,
75 )
76 await member_repo.activate_members(upload_entity)
79async def test_deactivate_members(
80 member_repo: MemberRepository, database: Database, owner: Owner
81):
82 """Test activate members."""
83 async with UnitOfWork(database):
84 upload_entity = FileUploadEntity(
85 id=FileUploadIdentifier(1),
86 filename="test.txt",
87 owner=owner,
88 )
89 await member_repo.deactivate_members(upload_entity)