aboutsummaryrefslogtreecommitdiff
path: root/ride/store_test.go
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2026-08-27 11:21:17 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2026-08-27 11:21:17 +0200
commit825cf388b55a6c8441e02149749bb6e2968477c0 (patch)
treee3394cef97aa43df9775a1465d3c99f386ce3a9b /ride/store_test.go
parent366e7b0d671395c2ad32f85ee7706a592db69d15 (diff)
Extract climb detection into a dedicated climb package
Move climb detection, slope, and Cotacol scoring out of ride into a new climb package that operates on a geometry-only Route (distances, elevations, coords). Ride embeds climb.Route and keeps its timing and telemetry columns. - climb.Detect returns []DetectedClimb (Climb + ride-absolute Start). - Climb owns its sliced geometry; indices are local, with Start reported at the detection boundary for absolute position. - Detected bounds use core.Interval; freeRegions claim suppression fixed. - ride no longer builds slices: ClimbFromDist/ClimbFromIndexes/climbFrom and ride.Climb/Interval/Range are removed; rideanalysis, mountain_pass MatchClimb, and web views are rewired to climb types. - New internal/routetest builds climb.Route from the ride DSL; ridetest reuses it and adds timestamps and telemetry. - Tests moved to climb (synthetic detection and difficulty) and kept in ride for GPX-example integration; ride.comparison detection coverage retained. - mountain_pass.nearestCrossing now reuses geo.Nearest.
Diffstat (limited to 'ride/store_test.go')
-rw-r--r--ride/store_test.go11
1 files changed, 6 insertions, 5 deletions
diff --git a/ride/store_test.go b/ride/store_test.go
index 89c4830..1ee3c69 100644
--- a/ride/store_test.go
+++ b/ride/store_test.go
@@ -7,6 +7,7 @@ import (
"testing"
"time"
+ "github.com/martinlehoux/biking_home/climb"
"github.com/martinlehoux/biking_home/internal/dbtest"
"github.com/martinlehoux/kagamigo/kcore"
"github.com/stretchr/testify/assert"
@@ -53,7 +54,7 @@ func TestUpsertAndGet(t *testing.T) {
score, found := got.CotacolScore()
require.True(t, found)
assert.Greater(t, score, 0.0)
- assert.Equal(t, CotacolAlgorithmVersion, got.CotacolAlgorithmVersion())
+ assert.Equal(t, climb.CotacolAlgorithmVersion, got.CotacolAlgorithmVersion())
_, ok, err = GetByExternalID(db, "strava:9999")
require.NoError(t, err)
@@ -89,7 +90,7 @@ func TestSaveComputesCotacol(t *testing.T) {
score, found := got.CotacolScore()
require.True(t, found)
assert.Greater(t, score, 0.0)
- assert.Equal(t, CotacolAlgorithmVersion, got.CotacolAlgorithmVersion())
+ assert.Equal(t, climb.CotacolAlgorithmVersion, got.CotacolAlgorithmVersion())
}
func TestSaveComputesMovingTimeAndPreservesExternal(t *testing.T) {
@@ -190,7 +191,7 @@ func TestBackfill(t *testing.T) {
require.True(t, ok)
_, found := got.CotacolScore()
assert.True(t, found)
- assert.Equal(t, CotacolAlgorithmVersion, got.CotacolAlgorithmVersion())
+ assert.Equal(t, climb.CotacolAlgorithmVersion, got.CotacolAlgorithmVersion())
count, err = Backfill(db)
require.NoError(t, err)
@@ -277,7 +278,7 @@ func TestListSortedByCotacolKeepsStaleLast(t *testing.T) {
UPDATE rides
SET cotacol_score = CASE external_id WHEN ? THEN 4 ELSE 6 END,
cotacol_algo_version = ?
- `, first.ExternalID, CotacolAlgorithmVersion)
+ `, first.ExternalID, climb.CotacolAlgorithmVersion)
require.NoError(t, err)
items, err := ListSorted(db, SortCotacol, false)
@@ -307,7 +308,7 @@ func TestListSortedByCotacolPer100Km(t *testing.T) {
UPDATE rides
SET cotacol_score = CASE external_id WHEN ? THEN 4 ELSE 6 END,
cotacol_algo_version = ?
- `, first.ExternalID, CotacolAlgorithmVersion)
+ `, first.ExternalID, climb.CotacolAlgorithmVersion)
require.NoError(t, err)
items, err := ListSorted(db, SortCotacolKm, false)