feat: initial commit
This commit is contained in:
commit
e8291f4bef
33 changed files with 10300 additions and 0 deletions
74
tests/unit/conftest.py
Normal file
74
tests/unit/conftest.py
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
import pytest
|
||||
from polyfactory.factories.pydantic_factory import ModelFactory
|
||||
from polyfactory.pytest_plugin import register_fixture
|
||||
|
||||
from secretsanta.domain import Group, IRepo
|
||||
from secretsanta.service import (
|
||||
CreateGroupService,
|
||||
GetGroupParticipantsService,
|
||||
GetPairService,
|
||||
)
|
||||
from secretsanta.settings import get_config
|
||||
|
||||
|
||||
class TestRepo(IRepo):
|
||||
def __init__(self):
|
||||
self.data = {}
|
||||
|
||||
async def get(self, group_uuid: str) -> Group | None:
|
||||
return self.data.get(group_uuid)
|
||||
|
||||
async def create(self, group: Group) -> Group:
|
||||
self.data[group.uuid] = group
|
||||
return group
|
||||
|
||||
|
||||
@register_fixture
|
||||
class GroupFactory(ModelFactory[Group]):
|
||||
__model__ = Group
|
||||
|
||||
@classmethod
|
||||
def participants(cls) -> list[str]:
|
||||
number_of_participants = cls.__random__.randint(2, 10)
|
||||
return [cls.__faker__.name() for _ in range(number_of_participants)]
|
||||
|
||||
pairs = None
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def group(group_factory):
|
||||
return group_factory.build()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def repo():
|
||||
return TestRepo()
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def repo_with_data(repo, group):
|
||||
group.pairs = group.pair(group.participants)
|
||||
repo.data[group.uuid] = group
|
||||
return repo
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def config():
|
||||
return get_config(
|
||||
s3_bucket_name="foo", s3_secret_access_key="foo", s3_access_key_id="foo"
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def create_group_service(repo, config):
|
||||
return CreateGroupService(repo=repo, config=config)
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def get_participants_service(repo, config):
|
||||
return GetGroupParticipantsService(repo=repo, config=config)
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def get_pair_service(repo, config):
|
||||
return GetPairService(repo=repo, config=config)
|
||||
Loading…
Add table
Add a link
Reference in a new issue