Coverage for src/tests/fixtures/portal/applications.py: 100%

30 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2024-01-01 00:00 +0000

1"""Module for defining factory fixtures for applications.""" 

2 

3import random 

4import string 

5 

6import pytest 

7 

8from kwai_bc_portal.applications.application_db_repository import ( 

9 ApplicationDbRepository, 

10) 

11from kwai_bc_portal.domain.application import ApplicationEntity 

12from kwai_core.db.database import Database 

13from kwai_core.db.uow import UnitOfWork 

14 

15 

16def _generate_string(length): 

17 """Generate a random string.""" 

18 characters = string.ascii_letters 

19 return "".join(random.choice(characters) for _ in range(length)) 

20 

21 

22@pytest.fixture 

23def make_application(): 

24 """A factory fixture for creating an application.""" 

25 

26 def _make_application( 

27 *, 

28 name: str | None = None, 

29 title: str | None = None, 

30 short_description: str | None = None, 

31 ) -> ApplicationEntity: 

32 return ApplicationEntity( 

33 name=name or _generate_string(8), 

34 title=title or "Test Application", 

35 short_description=short_description or "This is a test application", 

36 ) 

37 

38 return _make_application 

39 

40 

41@pytest.fixture 

42async def make_application_in_db(database: Database, make_application): 

43 """A factory fixture for creating an application in the database.""" 

44 created_entities = [] 

45 

46 async def _make_application_in_db(application: ApplicationEntity | None = None): 

47 application = application or make_application() 

48 

49 repo = ApplicationDbRepository(database) 

50 async with UnitOfWork(database): 

51 application = await repo.create(application) 

52 

53 created_entities.append(application) 

54 

55 return application 

56 

57 yield _make_application_in_db 

58 

59 repo = ApplicationDbRepository(database) 

60 for entity in created_entities: 

61 async with UnitOfWork(database): 

62 await repo.delete(entity)