Coverage for src/tests/fixtures/identity/users.py: 100%
34 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 defining factory fixtures for the user entities."""
3import pytest
5from kwai_bc_identity.users.user import UserEntity
6from kwai_bc_identity.users.user_account import UserAccountEntity
7from kwai_bc_identity.users.user_account_db_repository import (
8 UserAccountDbRepository,
9)
10from kwai_core.db.uow import UnitOfWork
11from kwai_core.domain.value_objects.email_address import EmailAddress
12from kwai_core.domain.value_objects.name import Name
13from kwai_core.domain.value_objects.password import Password
14from kwai_core.domain.value_objects.unique_id import UniqueId
17@pytest.fixture
18def make_user():
19 """Factory fixture for creating a user entity."""
21 def _make_user(
22 uuid: UniqueId | None = None,
23 name: Name | None = None,
24 email: EmailAddress | None = None,
25 ) -> UserEntity:
26 return UserEntity(
27 uuid=uuid or UniqueId.generate(),
28 name=name or Name(first_name="Jigoro", last_name="Kano"),
29 email=email or EmailAddress("jigoro.kano@kwai.com"),
30 )
32 return _make_user
35@pytest.fixture
36def make_user_account(make_user):
37 """Factory fixture for creating a user account for testing."""
39 def _make_user_account(
40 password: Password | None = None,
41 user: UserEntity | None = None,
42 revoked: bool = False,
43 ) -> UserAccountEntity:
44 return UserAccountEntity(
45 password=password or Password.create_from_string("Test1234"),
46 user=user or make_user(),
47 revoked=revoked,
48 )
50 return _make_user_account
53@pytest.fixture
54async def make_user_account_in_db(database, make_user_account):
55 """Factory fixture for creating a user account in a database for testing."""
56 created_entities = []
58 async def _make_user_account_in_db(
59 user_account: UserAccountEntity | None = None,
60 ) -> UserAccountEntity:
61 user_account = user_account or make_user_account()
63 repo = UserAccountDbRepository(database)
64 async with UnitOfWork(database):
65 user_account = await repo.create(user_account)
67 created_entities.append(user_account)
69 return user_account
71 yield _make_user_account_in_db
73 repo = UserAccountDbRepository(database)
74 for entity in created_entities:
75 async with UnitOfWork(database):
76 await repo.delete(entity)