diff options
Diffstat (limited to 'web/server_test.go')
| -rw-r--r-- | web/server_test.go | 42 |
1 files changed, 42 insertions, 0 deletions
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, `<script type="module" src="/static/analytics.js"></script>`) + assert.Contains(t, body, `href="/analytics"`) +} + func TestHandlerReturnsNotFoundForUnknownRide(t *testing.T) { server, _ := newWebTestServer(t) req := httptest.NewRequest(http.MethodGet, "/rides/999999", nil) |
