aboutsummaryrefslogtreecommitdiff
path: root/web/server_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'web/server_test.go')
-rw-r--r--web/server_test.go71
1 files changed, 35 insertions, 36 deletions
diff --git a/web/server_test.go b/web/server_test.go
index 0514dfc..ebedcd6 100644
--- a/web/server_test.go
+++ b/web/server_test.go
@@ -20,7 +20,6 @@ import (
"github.com/martinlehoux/biking_home/mountain_pass"
"github.com/martinlehoux/biking_home/official_climb"
"github.com/martinlehoux/biking_home/ride"
- "github.com/martinlehoux/biking_home/rides"
"github.com/martinlehoux/biking_home/strava"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -73,7 +72,7 @@ const officialClimbTrackGPX = `<?xml version="1.0"?><gpx xmlns="http://www.topog
func TestHandlerRendersRidesPage(t *testing.T) {
server, db := newWebTestServer(t)
- require.NoError(t, rides.Save(db, rides.Ride{
+ require.NoError(t, ride.Save(db, ride.StoredRide{
ExternalID: "strava:1234",
GPXPath: testGPXPath(t, "long.gpx"),
Name: "Long Ride",
@@ -81,7 +80,7 @@ func TestHandlerRendersRidesPage(t *testing.T) {
StartDate: time.Date(2026, 8, 1, 7, 0, 0, 0, time.UTC),
DistanceM: 20_000,
}))
- require.NoError(t, rides.Save(db, rides.Ride{
+ require.NoError(t, ride.Save(db, ride.StoredRide{
ExternalID: "strava:5678",
GPXPath: testGPXPath(t, "short.gpx"),
Name: "Short Ride",
@@ -106,7 +105,7 @@ func TestHandlerRendersRidesPage(t *testing.T) {
func TestHandlerRendersRideDetailWithEmbeddedRoute(t *testing.T) {
server, db := newWebTestServer(t)
- require.NoError(t, rides.Save(db, rides.Ride{
+ require.NoError(t, ride.Save(db, ride.StoredRide{
ExternalID: "strava:550e8400-e29b-41d4-a716-446655440000",
GPXPath: testGPXPath(t, "detail.gpx"),
Name: "Detailed Ride",
@@ -122,7 +121,7 @@ func TestHandlerRendersRideDetailWithEmbeddedRoute(t *testing.T) {
2, "Distant pass", 500, 43.2, 5.2,
)
require.NoError(t, err)
- item, found, err := rides.GetByExternalID(db, "strava:550e8400-e29b-41d4-a716-446655440000")
+ item, found, err := ride.GetByExternalID(db, "strava:550e8400-e29b-41d4-a716-446655440000")
require.NoError(t, err)
require.True(t, found)
@@ -268,7 +267,7 @@ func TestHandlerCreatesOfficialClimbFromRoutePoints(t *testing.T) {
server, db := newWebTestServer(t)
routePath := filepath.Join(t.TempDir(), "official-climb.gpx")
require.NoError(t, os.WriteFile(routePath, []byte(officialClimbTrackGPX), 0o600))
- require.NoError(t, rides.Save(db, rides.Ride{
+ require.NoError(t, ride.Save(db, ride.StoredRide{
ExternalID: "strava:550e8400-e29b-41d4-a716-446655440000",
GPXPath: routePath,
Name: "Climb Candidate",
@@ -276,7 +275,7 @@ func TestHandlerCreatesOfficialClimbFromRoutePoints(t *testing.T) {
StartDate: time.Date(2026, 8, 1, 7, 0, 0, 0, time.UTC),
DistanceM: 2_000,
}))
- item, found, err := rides.GetByExternalID(db, "strava:550e8400-e29b-41d4-a716-446655440000")
+ item, found, err := ride.GetByExternalID(db, "strava:550e8400-e29b-41d4-a716-446655440000")
require.NoError(t, err)
require.True(t, found)
@@ -325,15 +324,15 @@ func TestHandlerCreatesOfficialClimbFromRoutePoints(t *testing.T) {
func TestHandlerRendersRideDetailWithoutRoute(t *testing.T) {
server, db := newWebTestServer(t)
- item := rides.Ride{
+ item := ride.StoredRide{
ExternalID: "strava:14701658670",
Name: "Indoor Ride",
Type: "VirtualRide",
StartDate: time.Date(2026, 8, 1, 7, 0, 0, 0, time.UTC),
DistanceM: 20_000,
}
- require.NoError(t, rides.Save(db, item))
- stored, found, err := rides.GetByExternalID(db, item.ExternalID)
+ require.NoError(t, ride.Save(db, item))
+ stored, found, err := ride.GetByExternalID(db, item.ExternalID)
require.NoError(t, err)
require.True(t, found)
@@ -350,22 +349,22 @@ func TestHandlerRendersRideDetailWithoutRoute(t *testing.T) {
func TestHandlerRendersAnalyticsChart(t *testing.T) {
server, db := newWebTestServer(t)
- first := rides.Ride{
+ first := ride.StoredRide{
ExternalID: "strava:550e8400-e29b-41d4-a716-446655440001",
Name: "Fastish Ride",
Type: "Ride",
StartDate: time.Date(2026, 8, 1, 7, 0, 0, 0, time.UTC),
DistanceM: 40_000,
}
- second := rides.Ride{
+ second := ride.StoredRide{
ExternalID: "strava:550e8400-e29b-41d4-a716-446655440002",
Name: "Climbing Ride",
Type: "Ride",
StartDate: time.Date(2026, 8, 2, 7, 0, 0, 0, time.UTC),
DistanceM: 40_000,
}
- require.NoError(t, rides.Save(db, first))
- require.NoError(t, rides.Save(db, second))
+ require.NoError(t, ride.Save(db, first))
+ require.NoError(t, ride.Save(db, second))
_, err := db.Exec(`
UPDATE rides
SET cotacol_score = CASE external_id WHEN ? THEN 20 ELSE 120 END,
@@ -392,22 +391,22 @@ func TestHandlerRendersAnalyticsChart(t *testing.T) {
func TestHandlerFiltersAnalyticsByDistance(t *testing.T) {
server, db := newWebTestServer(t)
- short := rides.Ride{
+ short := ride.StoredRide{
ExternalID: "strava:550e8400-e29b-41d4-a716-446655440003",
Name: "Short Ride",
Type: "Ride",
StartDate: time.Date(2026, 8, 1, 7, 0, 0, 0, time.UTC),
DistanceM: 40_000,
}
- long := rides.Ride{
+ long := ride.StoredRide{
ExternalID: "strava:550e8400-e29b-41d4-a716-446655440004",
Name: "Long Ride",
Type: "Ride",
StartDate: time.Date(2026, 8, 2, 7, 0, 0, 0, time.UTC),
DistanceM: 100_000,
}
- require.NoError(t, rides.Save(db, short))
- require.NoError(t, rides.Save(db, long))
+ require.NoError(t, ride.Save(db, short))
+ require.NoError(t, ride.Save(db, long))
_, err := db.Exec(`
UPDATE rides
SET cotacol_score = CASE external_id WHEN ? THEN 20 ELSE 120 END,
@@ -448,7 +447,7 @@ func TestHandlerShowsErrorForUnavailableRideRoute(t *testing.T) {
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
`, "strava:6ba7b810-9dad-41d1-80b4-00c04fd430c8", "missing.gpx", "Unavailable Route", "Ride", "2026-08-01T07:00:00Z", 20_000, 0, 0, 0, 0)
require.NoError(t, err)
- item, found, err := rides.GetByExternalID(db, "strava:6ba7b810-9dad-41d1-80b4-00c04fd430c8")
+ item, found, err := ride.GetByExternalID(db, "strava:6ba7b810-9dad-41d1-80b4-00c04fd430c8")
require.NoError(t, err)
require.True(t, found)
@@ -567,10 +566,10 @@ func TestSyncRidesContinuesAfterInvalidActivity(t *testing.T) {
require.NoError(t, err)
assert.Equal(t, SyncProgress{Total: 2, Completed: 2, Imported: 1, Skipped: 1}, progress)
assert.Len(t, updates, 3)
- _, found, err := rides.GetByExternalID(db, "strava:14701658670")
+ _, found, err := ride.GetByExternalID(db, "strava:14701658670")
require.NoError(t, err)
assert.False(t, found)
- _, found, err = rides.GetByExternalID(db, "strava:14701658671")
+ _, found, err = ride.GetByExternalID(db, "strava:14701658671")
require.NoError(t, err)
assert.True(t, found)
assert.NoFileExists(t, filepath.Join(gpxDir, "activity_14701658670.gpx"))
@@ -599,14 +598,14 @@ func TestSyncRidesSavesActivityWithoutRoute(t *testing.T) {
require.NoError(t, err)
assert.Equal(t, SyncProgress{Total: 2, Completed: 2, Imported: 2}, progress)
- indoor, found, err := rides.GetByExternalID(db, "strava:14701658670")
+ indoor, found, err := ride.GetByExternalID(db, "strava:14701658670")
require.NoError(t, err)
require.True(t, found)
assert.Empty(t, indoor.GPXPath)
_, ready := indoor.CotacolScore()
assert.False(t, ready)
assert.NoFileExists(t, staleGPXPath)
- _, found, err = rides.GetByExternalID(db, "strava:14701658671")
+ _, found, err = ride.GetByExternalID(db, "strava:14701658671")
require.NoError(t, err)
assert.True(t, found)
}
@@ -712,7 +711,7 @@ func TestRideSortHeadersToggleDirection(t *testing.T) {
func TestBuildRideViewsUsesStoredCotacol(t *testing.T) {
_, db := newWebTestServer(t)
- ride := rides.Ride{
+ stored := ride.StoredRide{
ExternalID: "strava:550e8400-e29b-41d4-a716-446655440000",
GPXPath: testGPXPath(t, "stored.gpx"),
Name: "Stored Ride",
@@ -720,10 +719,10 @@ func TestBuildRideViewsUsesStoredCotacol(t *testing.T) {
StartDate: time.Date(2026, 8, 1, 7, 0, 0, 0, time.UTC),
DistanceM: 20_000,
}
- require.NoError(t, rides.Save(db, ride))
- _, err := db.Exec("UPDATE rides SET gpx_path = ? WHERE external_id = ?", "missing.gpx", ride.ExternalID)
+ require.NoError(t, ride.Save(db, stored))
+ _, err := db.Exec("UPDATE rides SET gpx_path = ? WHERE external_id = ?", "missing.gpx", stored.ExternalID)
require.NoError(t, err)
- items, err := rides.List(db)
+ items, err := ride.List(db)
require.NoError(t, err)
views := buildRideViews(items)
@@ -733,7 +732,7 @@ func TestBuildRideViewsUsesStoredCotacol(t *testing.T) {
func TestBuildRideViewMovingTimePrefersCanonical(t *testing.T) {
_, db := newWebTestServer(t)
- ride := rides.Ride{
+ stored := ride.StoredRide{
ExternalID: "strava:550e8400-e29b-41d4-a716-446655440000",
GPXPath: testGPXPath(t, "moving.gpx"),
Name: "Moving Ride",
@@ -742,8 +741,8 @@ func TestBuildRideViewMovingTimePrefersCanonical(t *testing.T) {
DistanceM: 20_000,
ExternalMovingTimeS: 7_200,
}
- require.NoError(t, rides.Save(db, ride))
- items, err := rides.List(db)
+ require.NoError(t, ride.Save(db, stored))
+ items, err := ride.List(db)
require.NoError(t, err)
require.Len(t, items, 1)
@@ -752,7 +751,7 @@ func TestBuildRideViewMovingTimePrefersCanonical(t *testing.T) {
func TestHandlerSortsRidesByDistance(t *testing.T) {
server, db := newWebTestServer(t)
- require.NoError(t, rides.Save(db, rides.Ride{
+ require.NoError(t, ride.Save(db, ride.StoredRide{
ExternalID: "strava:550e8400-e29b-41d4-a716-446655440000",
GPXPath: testGPXPath(t, "near.gpx"),
Name: "Near Ride",
@@ -760,7 +759,7 @@ func TestHandlerSortsRidesByDistance(t *testing.T) {
StartDate: time.Date(2026, 8, 1, 7, 0, 0, 0, time.UTC),
DistanceM: 20_000,
}))
- require.NoError(t, rides.Save(db, rides.Ride{
+ require.NoError(t, ride.Save(db, ride.StoredRide{
ExternalID: "strava:6ba7b810-9dad-41d1-80b4-00c04fd430c8",
GPXPath: testGPXPath(t, "far.gpx"),
Name: "Far Ride",
@@ -781,7 +780,7 @@ func TestHandlerSortsRidesByDistance(t *testing.T) {
func TestHandlerSortsRidesByCotacol(t *testing.T) {
server, db := newWebTestServer(t)
- first := rides.Ride{
+ first := ride.StoredRide{
ExternalID: "strava:550e8400-e29b-41d4-a716-446655440000",
GPXPath: testGPXPath(t, "first.gpx"),
Name: "Low Cotacol",
@@ -789,7 +788,7 @@ func TestHandlerSortsRidesByCotacol(t *testing.T) {
StartDate: time.Date(2026, 8, 1, 7, 0, 0, 0, time.UTC),
DistanceM: 20_000,
}
- second := rides.Ride{
+ second := ride.StoredRide{
ExternalID: "strava:6ba7b810-9dad-41d1-80b4-00c04fd430c8",
GPXPath: testGPXPath(t, "second.gpx"),
Name: "High Cotacol",
@@ -797,8 +796,8 @@ func TestHandlerSortsRidesByCotacol(t *testing.T) {
StartDate: time.Date(2026, 8, 2, 7, 0, 0, 0, time.UTC),
DistanceM: 40_000,
}
- require.NoError(t, rides.Save(db, first))
- require.NoError(t, rides.Save(db, second))
+ require.NoError(t, ride.Save(db, first))
+ require.NoError(t, ride.Save(db, second))
_, err := db.Exec(`
UPDATE rides
SET cotacol_score = CASE external_id WHEN ? THEN 1 ELSE 4 END