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

1"""Module for defining factory fixtures for the user recovery entities.""" 

2 

3import pytest 

4 

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 

12 

13 

14@pytest.fixture 

15def make_user_recovery(make_user): 

16 """Factory fixture for a user recovery entity.""" 

17 

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 

26 

27 return _make_user_recovery 

28 

29 

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 = [] 

36 

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) 

44 

45 async with UnitOfWork(database): 

46 user_recovery = await repo.create(user_recovery) 

47 

48 created_entities.append(user_recovery) 

49 

50 return user_recovery 

51 

52 yield _make_user_recovery_in_db 

53 

54 repo = UserRecoveryDbRepository(database) 

55 for entity in created_entities: 

56 async with UnitOfWork(database): 

57 await repo.delete(entity)