mirror of
https://github.com/sstent/go-garth-cli.git
synced 2025-12-05 23:52:02 +00:00
71 lines
1.7 KiB
Go
71 lines
1.7 KiB
Go
package data
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"go-garth/internal/api/client"
|
|
"go-garth/internal/models"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestVO2MaxData_Get(t *testing.T) {
|
|
// Setup
|
|
runningVO2 := 45.0
|
|
cyclingVO2 := 50.0
|
|
settings := &client.UserSettings{
|
|
ID: 12345,
|
|
UserData: client.UserData{
|
|
VO2MaxRunning: &runningVO2,
|
|
VO2MaxCycling: &cyclingVO2,
|
|
},
|
|
}
|
|
|
|
vo2Data := NewVO2MaxData()
|
|
|
|
// Mock the get function
|
|
vo2Data.GetFunc = func(day time.Time, c *client.Client) (interface{}, error) {
|
|
vo2Profile := &models.VO2MaxProfile{
|
|
UserProfilePK: settings.ID,
|
|
LastUpdated: time.Now(),
|
|
}
|
|
|
|
if settings.UserData.VO2MaxRunning != nil && *settings.UserData.VO2MaxRunning > 0 {
|
|
vo2Profile.Running = &models.VO2MaxEntry{
|
|
Value: *settings.UserData.VO2MaxRunning,
|
|
ActivityType: "running",
|
|
Date: day,
|
|
Source: "user_settings",
|
|
}
|
|
}
|
|
|
|
if settings.UserData.VO2MaxCycling != nil && *settings.UserData.VO2MaxCycling > 0 {
|
|
vo2Profile.Cycling = &models.VO2MaxEntry{
|
|
Value: *settings.UserData.VO2MaxCycling,
|
|
ActivityType: "cycling",
|
|
Date: day,
|
|
Source: "user_settings",
|
|
}
|
|
}
|
|
return vo2Profile, nil
|
|
}
|
|
|
|
// Test
|
|
result, err := vo2Data.Get(time.Now(), nil) // client is not used in this mocked get
|
|
|
|
// Assertions
|
|
assert.NoError(t, err)
|
|
assert.NotNil(t, result)
|
|
|
|
profile, ok := result.(*models.VO2MaxProfile)
|
|
assert.True(t, ok)
|
|
assert.Equal(t, 12345, profile.UserProfilePK)
|
|
assert.NotNil(t, profile.Running)
|
|
assert.Equal(t, 45.0, profile.Running.Value)
|
|
assert.Equal(t, "running", profile.Running.ActivityType)
|
|
assert.NotNil(t, profile.Cycling)
|
|
assert.Equal(t, 50.0, profile.Cycling.Value)
|
|
assert.Equal(t, "cycling", profile.Cycling.ActivityType)
|
|
}
|