Coverage for src/tests/modules/training/trainings/test_training_db_repository.py: 89%
38 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 testing the training database repository."""
3from dataclasses import replace
5import pytest
7from kwai_bc_training.trainings.training_db_repository import TrainingDbRepository
8from kwai_bc_training.trainings.training_repository import (
9 TrainingRepository,
10)
11from kwai_core.db.database import Database
12from kwai_core.db.exceptions import QueryException
15pytestmark = pytest.mark.db
18@pytest.fixture(scope="module")
19def repo(database: Database) -> TrainingRepository:
20 """Fixture for a training repository."""
21 return TrainingDbRepository(database)
24async def test_create(make_training_in_db):
25 """Test create a training."""
26 training = await make_training_in_db()
27 assert training is not None, "There should be a training."
30async def test_update(repo: TrainingRepository, make_training_in_db):
31 """Test update of a training."""
32 training = await make_training_in_db()
33 updated_training = replace(training, remark="This training is updated.")
34 try:
35 await repo.update(updated_training)
36 except QueryException as qe:
37 pytest.fail(str(qe))
40async def test_get_all(repo: TrainingRepository, make_training_in_db):
41 """Test get all trainings."""
42 training = await make_training_in_db()
43 trainings = {entity.id: entity async for entity in repo.get_all()}
44 assert training.id in trainings, "The training should be returned in the list"
47async def test_get_by_id(repo: TrainingRepository, make_training_in_db):
48 """Test get training by id."""
49 training = await make_training_in_db()
50 training = await repo.get_by_id(training.id)
51 assert training is not None, "There should be a result"
54async def test_delete(repo: TrainingRepository, make_training_in_db):
55 """Test delete of a training."""
56 training = await make_training_in_db()
57 try:
58 await repo.delete(training)
59 except QueryException as qe:
60 pytest.fail(str(qe))
63async def test_reset_schedule(database: Database, make_training_schedule_in_db):
64 """Test reset training schema."""
65 training_schedule = await make_training_schedule_in_db()
66 repo = TrainingDbRepository(database)
67 await repo.reset_schedule(training_schedule, False)