mirror of
https://github.com/sstent/go-garth.git
synced 2026-01-29 10:32:12 +00:00
sync
This commit is contained in:
90
activities_test.go
Normal file
90
activities_test.go
Normal file
@@ -0,0 +1,90 @@
|
||||
package garth
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestActivityService_List(t *testing.T) {
|
||||
// Create test server
|
||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
w.Write([]byte(`[{
|
||||
"activityId": 123456789,
|
||||
"activityName": "Morning Run",
|
||||
"activityType": "running",
|
||||
"startTime": "2025-08-29T06:00:00Z",
|
||||
"distance": 5000,
|
||||
"duration": 1800,
|
||||
"calories": 350
|
||||
}]`))
|
||||
}))
|
||||
defer ts.Close()
|
||||
|
||||
// Create client
|
||||
apiClient := NewAPIClient(ts.URL, http.DefaultClient)
|
||||
activityService := NewActivityService(apiClient)
|
||||
|
||||
// Test List method with filters
|
||||
startDate := time.Date(2025, time.August, 1, 0, 0, 0, 0, time.UTC)
|
||||
endDate := time.Date(2025, time.August, 31, 0, 0, 0, 0, time.UTC)
|
||||
|
||||
opts := ActivityListOptions{
|
||||
Limit: 10,
|
||||
StartDate: startDate,
|
||||
EndDate: endDate,
|
||||
}
|
||||
activities, err := activityService.List(context.Background(), opts)
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error: %v", err)
|
||||
}
|
||||
|
||||
// Verify activity data
|
||||
if len(activities) != 1 {
|
||||
t.Fatalf("Expected 1 activity, got %d", len(activities))
|
||||
}
|
||||
if activities[0].Name != "Morning Run" {
|
||||
t.Errorf("Expected activity name 'Morning Run', got '%s'", activities[0].Name)
|
||||
}
|
||||
if activities[0].ActivityID != 123456789 {
|
||||
t.Errorf("Expected activity ID 123456789, got %d", activities[0].ActivityID)
|
||||
}
|
||||
}
|
||||
|
||||
func TestActivityService_Get(t *testing.T) {
|
||||
// Create test server
|
||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
w.Write([]byte(`{
|
||||
"activityId": 987654321,
|
||||
"activityName": "Evening Ride",
|
||||
"activityType": "cycling",
|
||||
"startTime": "2025-08-29T18:30:00Z",
|
||||
"distance": 25000,
|
||||
"duration": 3600,
|
||||
"calories": 650
|
||||
}`))
|
||||
}))
|
||||
defer ts.Close()
|
||||
|
||||
// Create client
|
||||
apiClient := NewAPIClient(ts.URL, http.DefaultClient)
|
||||
activityService := NewActivityService(apiClient)
|
||||
|
||||
// Test Get method
|
||||
activity, err := activityService.Get(context.Background(), 987654321)
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error: %v", err)
|
||||
}
|
||||
|
||||
// Verify activity details
|
||||
if activity.Name != "Evening Ride" {
|
||||
t.Errorf("Expected activity name 'Evening Ride', got '%s'", activity.Name)
|
||||
}
|
||||
if activity.ActivityID != 987654321 {
|
||||
t.Errorf("Expected activity ID 987654321, got %d", activity.ActivityID)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user