Coverage for src/tests/modules/club/test_import_members.py: 100%
33 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 Import Members."""
3from pathlib import Path
5import pytest
7from kwai_bc_club.import_members import (
8 ImportMembers,
9 ImportMembersCommand,
10 MemberImportResult,
11)
12from kwai_bc_club.repositories.country_db_repository import CountryDbRepository
13from kwai_bc_club.repositories.file_upload_db_repository import (
14 FileUploadDbRepository,
15)
16from kwai_bc_club.repositories.file_upload_preview_repository import (
17 FileUploadPreviewRepository,
18)
19from kwai_bc_club.repositories.file_upload_repository import (
20 DuplicateMemberUploadedException,
21)
22from kwai_bc_club.repositories.flemish_member_importer import FlemishMemberImporter
23from kwai_bc_club.repositories.member_db_repository import MemberDbRepository
24from kwai_core.db.database import Database
25from kwai_core.domain.presenter import CountIterableAsyncPresenter
26from kwai_core.domain.value_objects.owner import Owner
29async def test_import_members(database: Database, owner: Owner):
30 """Test the use case Import Members."""
31 filename = (
32 Path(__file__).parent / "repositories" / "data" / "flemish_members_test.csv"
33 )
35 importer = FlemishMemberImporter(
36 str(filename), owner, CountryDbRepository(database)
37 )
39 command = ImportMembersCommand(preview=False)
40 presenter = CountIterableAsyncPresenter[MemberImportResult]()
41 await ImportMembers(
42 importer,
43 FileUploadDbRepository(database),
44 MemberDbRepository(database),
45 presenter,
46 ).execute(command)
48 assert presenter.count > 0, "There should be a member uploaded."
51async def test_import_preview_members(database: Database, owner: Owner):
52 """Test the use case Import Members with preview."""
53 filename = (
54 Path(__file__).parent / "repositories" / "data" / "flemish_members_test.csv"
55 )
57 importer = FlemishMemberImporter(
58 str(filename), owner, CountryDbRepository(database)
59 )
61 command = ImportMembersCommand(preview=True)
62 presenter = CountIterableAsyncPresenter[MemberImportResult]()
63 await ImportMembers(
64 importer,
65 FileUploadPreviewRepository(),
66 MemberDbRepository(database),
67 presenter,
68 ).execute(command)
70 assert presenter.count > 0, "There should be a member uploaded."
73async def test_import_duplicate_members(database: Database, owner: Owner):
74 """Test the use case Import Members."""
75 filename = (
76 Path(__file__).parent
77 / "repositories"
78 / "data"
79 / "flemish_members_duplicate_test.csv"
80 )
82 importer = FlemishMemberImporter(
83 str(filename), owner, CountryDbRepository(database)
84 )
86 command = ImportMembersCommand()
87 presenter = CountIterableAsyncPresenter[MemberImportResult]()
88 with pytest.raises(DuplicateMemberUploadedException):
89 await ImportMembers(
90 importer,
91 FileUploadDbRepository(database),
92 MemberDbRepository(database),
93 presenter,
94 ).execute(command)