INITIAL COMMIT
This commit is contained in:
51
tests/test_coach.py
Normal file
51
tests/test_coach.py
Normal file
@ -0,0 +1,51 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import date
|
||||
|
||||
from garmin_coach_clone.coach import (
|
||||
best_workout_for_date,
|
||||
find_workout_like_objects,
|
||||
task_workout_for_date,
|
||||
)
|
||||
|
||||
|
||||
def test_best_workout_for_date_requires_date_match() -> None:
|
||||
plan = {
|
||||
"phases": [
|
||||
{
|
||||
"scheduledDate": "2026-06-17",
|
||||
"workout": {"workoutSegments": [{"workoutSteps": []}]},
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
assert best_workout_for_date(plan, date(2026, 6, 16)) is None
|
||||
|
||||
|
||||
def test_best_workout_for_date_returns_nested_matched_workout() -> None:
|
||||
workout = {"workoutSegments": [{"workoutSteps": []}]}
|
||||
plan = {"items": [{"date": "2026-06-16", "workout": workout}]}
|
||||
|
||||
assert best_workout_for_date(plan, date(2026, 6, 16)) == workout
|
||||
|
||||
|
||||
def test_find_workout_like_objects_finds_segments_and_steps() -> None:
|
||||
data = {
|
||||
"a": {"workoutSegments": []},
|
||||
"b": [{"workoutSteps": []}],
|
||||
}
|
||||
|
||||
assert len(find_workout_like_objects(data)) == 2
|
||||
|
||||
|
||||
def test_task_workout_for_date_returns_adaptive_task_workout() -> None:
|
||||
workout = {"workoutName": "Sprint", "workoutUuid": "abc"}
|
||||
plan = {
|
||||
"taskList": [
|
||||
{"calendarDate": "2026-06-15", "taskWorkout": {"workoutName": "Base"}},
|
||||
{"calendarDate": "2026-06-16", "taskWorkout": workout},
|
||||
]
|
||||
}
|
||||
|
||||
assert task_workout_for_date(plan, date(2026, 6, 16)) == workout
|
||||
assert task_workout_for_date(plan, date(2026, 6, 17)) is None
|
||||
Reference in New Issue
Block a user