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
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
1"""Module for defining factory fixtures for applications."""
3import random
4import string
6import pytest
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
16def _generate_string(length):
17 """Generate a random string."""
18 characters = string.ascii_letters
19 return "".join(random.choice(characters) for _ in range(length))
22@pytest.fixture
23def make_application():
24 """A factory fixture for creating an application."""
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 )
38 return _make_application
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 = []
46 async def _make_application_in_db(application: ApplicationEntity | None = None):
47 application = application or make_application()
49 repo = ApplicationDbRepository(database)
50 async with UnitOfWork(database):
51 application = await repo.create(application)
53 created_entities.append(application)
55 return application
57 yield _make_application_in_db
59 repo = ApplicationDbRepository(database)
60 for entity in created_entities:
61 async with UnitOfWork(database):
62 await repo.delete(entity)