From 1e63f5c91f0e5ff7dfc582b67d262d5939cc34bc Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Fri, 21 Aug 2026 19:02:05 +0200 Subject: Add global analytics page shell and split server.go by concern --- web/server_test.go | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'web/server_test.go') diff --git a/web/server_test.go b/web/server_test.go index 299575e..42b85b1 100644 --- a/web/server_test.go +++ b/web/server_test.go @@ -348,6 +348,48 @@ func TestHandlerRendersRideDetailWithoutRoute(t *testing.T) { assert.NotContains(t, body, `id="ride-map"`) } +func TestHandlerRendersAnalyticsChart(t *testing.T) { + server, db := newWebTestServer(t) + first := rides.Ride{ + 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{ + 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)) + _, err := db.Exec(` + UPDATE rides + SET cotacol_score = CASE external_id WHEN ? THEN 20 ELSE 120 END, + cotacol_algo_version = ?, + average_speed_mps = CASE external_id WHEN ? THEN 7.0 ELSE 4.0 END + `, first.ExternalID, ride.CotacolAlgorithmVersion, second.ExternalID) + require.NoError(t, err) + + req := httptest.NewRequest(http.MethodGet, "/analytics", nil) + response := httptest.NewRecorder() + server.Handler().ServeHTTP(response, req) + + body := response.Body.String() + assert.Equal(t, http.StatusOK, response.Code) + assert.Contains(t, body, "Ride analytics") + assert.Contains(t, body, `id="analytics-chart"`) + assert.Contains(t, body, `id="analytics-points"`) + assert.Contains(t, body, `"speedKmh":25.2`) + assert.Contains(t, body, `"cotacolPer100Km":50`) + assert.NotContains(t, body, "No eligible rides yet") + assert.Contains(t, body, ``) + assert.Contains(t, body, `href="/analytics"`) +} + func TestHandlerReturnsNotFoundForUnknownRide(t *testing.T) { server, _ := newWebTestServer(t) req := httptest.NewRequest(http.MethodGet, "/rides/999999", nil) -- cgit v1.3