summaryrefslogtreecommitdiff
path: root/strava/sync_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'strava/sync_test.go')
-rw-r--r--strava/sync_test.go37
1 files changed, 36 insertions, 1 deletions
diff --git a/strava/sync_test.go b/strava/sync_test.go
index 04f3c64..f810206 100644
--- a/strava/sync_test.go
+++ b/strava/sync_test.go
@@ -1,12 +1,14 @@
package strava
import (
+ "bytes"
"fmt"
"net/http"
"net/http/httptest"
"testing"
"time"
+ "github.com/martinlehoux/biking_home/ride"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/tkrajina/gpxgo/gpx"
@@ -60,7 +62,8 @@ func TestGet(t *testing.T) {
_, err := w.Write([]byte(`{"id":42,"name":"Ride A","type":"Ride","sport_type":"Ride","start_date":"2026-01-01T10:00:00Z","distance":42195,"moving_time":7200,"elapsed_time":7800,"total_elevation_gain":850,"average_speed":5.86}`))
require.NoError(t, err)
case "/activities/42/streams":
- _, err := w.Write([]byte(`{"latlng":{"data":[[43.0,5.0],[43.1,5.1]]},"altitude":{"data":[100,120]},"time":{"data":[0,10]}}`))
+ assert.Equal(t, "latlng,altitude,time,heartrate,cadence,watts", r.URL.Query().Get("keys"))
+ _, err := w.Write([]byte(`{"latlng":{"data":[[43.0,5.0],[43.1,5.1]]},"altitude":{"data":[100,120]},"time":{"data":[0,10]},"heartrate":{"data":[90,91]},"cadence":{"data":[70,null]},"watts":{"data":[200,0]}}`))
require.NoError(t, err)
default:
http.NotFound(w, r)
@@ -76,4 +79,36 @@ func TestGet(t *testing.T) {
parsed, err := gpx.ParseBytes(gpxData)
require.NoError(t, err)
require.Len(t, parsed.Tracks[0].Segments[0].Points, 2)
+ const garminNamespace = "http://www.garmin.com/xmlschemas/TrackPointExtension/v1"
+ firstExtension, found := parsed.Tracks[0].Segments[0].Points[0].Extensions.GetNode(gpx.NamespaceURL(garminNamespace), "TrackPointExtension")
+ require.True(t, found)
+ heartRate, found := firstExtension.GetNode("hr")
+ require.True(t, found)
+ assert.Equal(t, "90", heartRate.Data)
+ cadence, found := firstExtension.GetNode("cad")
+ require.True(t, found)
+ assert.Equal(t, "70", cadence.Data)
+ power, found := firstExtension.GetNode("watts")
+ require.True(t, found)
+ assert.Equal(t, "200", power.Data)
+
+ secondExtension, found := parsed.Tracks[0].Segments[0].Points[1].Extensions.GetNode(gpx.NamespaceURL(garminNamespace), "TrackPointExtension")
+ require.True(t, found)
+ _, found = secondExtension.GetNode("cad")
+ assert.False(t, found)
+ power, found = secondExtension.GetNode("watts")
+ require.True(t, found)
+ assert.Equal(t, "0", power.Data)
+
+ parsedRide, err := (ride.GPXRideParser{}).Parse(bytes.NewReader(gpxData))
+ require.NoError(t, err)
+ assert.Equal(t, 2, parsedRide.Len())
+ heartRateValue, found := parsedRide.HeartRateBpm(1)
+ require.True(t, found)
+ assert.Equal(t, 91.0, heartRateValue)
+ _, found = parsedRide.CadenceRpm(0)
+ assert.False(t, found)
+ powerValue, found := parsedRide.PowerW(1)
+ require.True(t, found)
+ assert.Equal(t, 0.0, powerValue)
}