Files
garmin-coach-to-cal-sync/tests/test_coach.py
2026-06-16 15:14:37 +02:00

52 lines
1.4 KiB
Python

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