feat: more stuff
This commit is contained in:
@ -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(
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user