46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
import os
|
|
|
|
import pytest
|
|
|
|
from garmin.workout_manager import WorkoutManager
|
|
|
|
|
|
@pytest.fixture
|
|
def temp_workout_dir(tmp_path):
|
|
d = tmp_path / "workouts"
|
|
d.mkdir()
|
|
return str(d)
|
|
|
|
@pytest.fixture
|
|
def manager(temp_workout_dir):
|
|
return WorkoutManager(storage_dir=temp_workout_dir)
|
|
|
|
def test_list_local_workouts_empty(manager):
|
|
assert manager.list_local_workouts() == []
|
|
|
|
def test_save_and_load_local_workout(manager):
|
|
workout = {"workoutName": "Test"}
|
|
filename = manager.save_local_workout("test_run", workout)
|
|
|
|
# Check return val
|
|
assert filename == "test_run.json"
|
|
|
|
# Check file exists
|
|
assert os.path.exists(os.path.join(manager.storage_dir, "test_run.json"))
|
|
|
|
# Check list
|
|
assert "test_run.json" in manager.list_local_workouts()
|
|
|
|
# Check load
|
|
loaded = manager.load_local_workout("test_run")
|
|
assert loaded["workoutName"] == "Test"
|
|
|
|
def test_load_non_existent(manager):
|
|
with pytest.raises(FileNotFoundError):
|
|
manager.load_local_workout("fake")
|
|
|
|
|
|
# API Tests
|
|
# We rely on integration tests for full API coverage.
|
|
|