feat: more stuff

This commit is contained in:
2026-06-16 19:32:37 +02:00
parent d7ac74a5e1
commit 2e25e7eb34
4 changed files with 193 additions and 17 deletions

View File

@ -17,6 +17,7 @@ from garmin_coach_clone.workouts import (
generated_workouts_older_than,
generated_workouts,
validate_workout_payload,
workout_steps_equal,
)
@ -44,6 +45,21 @@ def test_clone_payload_strips_ids_and_sets_prefix() -> None:
assert validate_workout_payload(cloned) == []
def test_workout_steps_equal_ignores_ids_but_compares_steps() -> None:
left = build_dummy_cycling_workout("Left")
right = build_dummy_cycling_workout("Right")
left["workoutId"] = 1
right["workoutId"] = 2
left["workoutSegments"][0]["workoutSteps"][0]["stepId"] = 100
right["workoutSegments"][0]["workoutSteps"][0]["stepId"] = 200
assert workout_steps_equal(left, right)
right["workoutSegments"][0]["workoutSteps"][0]["endConditionValue"] = 123
assert not workout_steps_equal(left, right)
def test_existing_clone_names_filters_by_prefix_and_date() -> None:
names = existing_clone_names(
[
@ -116,6 +132,18 @@ def test_generated_calendar_entries_handle_nested_workout_names() -> None:
assert calendar_entry_name(generated_entry) == "GCClone 2026-06-16 Ride"
def test_generated_calendar_entries_accept_id_as_calendar_entry_id() -> None:
generated_entry = {
"id": 99,
"scheduledDate": "2026-06-16",
"workout": {"workoutName": "GCClone 2026-06-16 Ride"},
}
data = {"calendarItems": [generated_entry]}
assert generated_calendar_entries(data, "GCClone") == [generated_entry]
assert calendar_entry_id(generated_entry) == "99"
def test_validate_workout_payload_rejects_missing_segments() -> None:
errors = validate_workout_payload(
{