Coverage for src/tests/modules/training/trainings/test_training_db_query.py: 100%
56 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 TrainingDbQuery."""
3from datetime import time
5import pytest
7from kwai_bc_training.coaches.coach import CoachEntity
8from kwai_bc_training.teams.team import TeamEntity
9from kwai_bc_training.trainings.training import TrainingIdentifier
10from kwai_bc_training.trainings.training_db_query import TrainingDbQuery
11from kwai_bc_training.trainings.training_schedule import (
12 TrainingScheduleEntity,
13 TrainingScheduleIdentifier,
14)
15from kwai_core.db.database import Database
16from kwai_core.domain.value_objects.identifier import IntIdentifier
17from kwai_core.domain.value_objects.name import Name
18from kwai_core.domain.value_objects.owner import Owner
19from kwai_core.domain.value_objects.time_period import TimePeriod
20from kwai_core.domain.value_objects.timestamp import Timestamp
21from kwai_core.domain.value_objects.unique_id import UniqueId
22from kwai_core.domain.value_objects.weekday import Weekday
25pytestmark = pytest.mark.db
28async def test_filter_by_id(database: Database):
29 """Test filtering on id."""
30 query = TrainingDbQuery(database)
31 query.filter_by_id(TrainingIdentifier(1))
33 count = await query.count()
34 assert count >= 0, "There should be 0 or more trainings."
37async def test_filter_by_year(database: Database):
38 """Test filtering on id."""
39 query = TrainingDbQuery(database)
40 query.filter_by_year_month(2022)
42 count = await query.count()
43 assert count >= 0, "There should be 0 or more trainings."
46async def test_filter_by_year_month(database: Database):
47 """Test filtering on id."""
48 query = TrainingDbQuery(database)
49 query.filter_by_year_month(2022, 1)
51 count = await query.count()
52 assert count >= 0, "There should be 0 or more trainings."
55async def test_filter_by_dates(database: Database):
56 """Test filtering on dates."""
57 query = TrainingDbQuery(database)
58 query.filter_by_dates(Timestamp.create_now(), Timestamp.create_with_delta(days=1))
59 count = await query.count()
60 assert count >= 0, "There should be 0 or more trainings."
63async def test_filter_by_coach(database: Database):
64 """Test filtering on coach."""
65 query = TrainingDbQuery(database)
66 query.filter_by_coach(
67 CoachEntity(
68 id=IntIdentifier(1),
69 name=Name(first_name="Jigoro", last_name="Kano"),
70 active=True,
71 )
72 )
73 count = await query.count()
74 assert count >= 0, "There should be 0 or more trainings."
77async def test_filter_by_team(database: Database):
78 """Test filtering on team."""
79 query = TrainingDbQuery(database)
80 query.filter_by_team(TeamEntity(id=IntIdentifier(1), name="U18"))
81 count = await query.count()
82 assert count >= 0, "There should be 0 or more trainings."
85async def test_filter_by_schema(database: Database):
86 """Test filtering on a training schema."""
87 query = TrainingDbQuery(database)
88 query.filter_by_training_schedule(
89 TrainingScheduleEntity(
90 id=TrainingScheduleIdentifier(1),
91 name="Test",
92 description="Test",
93 weekday=Weekday.MONDAY,
94 owner=Owner(
95 id=IntIdentifier(1),
96 uuid=UniqueId.generate(),
97 name=Name(first_name="Jigoro", last_name="Kano"),
98 ),
99 period=TimePeriod(start=time(hour=20), end=time(hour=21)),
100 )
101 )
102 count = await query.count()
103 assert count >= 0, "There should be 0 or more trainings."
106async def test_filter_active(database: Database):
107 """Test filtering only active trainings."""
108 query = TrainingDbQuery(database)
109 query.filter_active()
111 count = await query.count()
112 assert count >= 0, "There should be 0 or more trainings."