Coverage for src/tests/fixtures/identity/user_recoveries.py: 100%
28 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 recovery entities."""
3import pytest
5from kwai_bc_identity.user_recoveries.user_recovery import UserRecoveryEntity
6from kwai_bc_identity.user_recoveries.user_recovery_db_repository import (
7 UserRecoveryDbRepository,
8)
9from kwai_bc_identity.users.user import UserEntity
10from kwai_core.db.uow import UnitOfWork
11from kwai_core.domain.value_objects.timestamp import Timestamp
14@pytest.fixture
15def make_user_recovery(make_user):
16 """Factory fixture for a user recovery entity."""
18 def _make_user_recovery(
19 expiration: Timestamp | None = None, user: UserEntity | None = None
20 ) -> UserRecoveryEntity:
21 user_recovery = UserRecoveryEntity(
22 expiration=expiration or Timestamp.create_now(),
23 user=user or make_user(),
24 )
25 return user_recovery
27 return _make_user_recovery
30@pytest.fixture
31async def make_user_recovery_in_db(
32 database, make_user_recovery, make_user_account_in_db
33):
34 """Factory fixture for a user recovery entity in database."""
35 created_entities = []
37 async def _make_user_recovery_in_db(
38 user_recovery: UserRecoveryEntity | None = None,
39 user: UserEntity | None = None,
40 ) -> UserRecoveryEntity:
41 user = user or await make_user_account_in_db()
42 user_recovery = user_recovery or make_user_recovery(user=user)
43 repo = UserRecoveryDbRepository(database)
45 async with UnitOfWork(database):
46 user_recovery = await repo.create(user_recovery)
48 created_entities.append(user_recovery)
50 return user_recovery
52 yield _make_user_recovery_in_db
54 repo = UserRecoveryDbRepository(database)
55 for entity in created_entities:
56 async with UnitOfWork(database):
57 await repo.delete(entity)