Part of per-user profile isolation: profile rows are no longer a global singleton, so every read/write requires the caller's userID. This also requires scoping ListActivities, ListWorkoutKinds, UpsertActivity, CreateWorkoutKind, GetSyncState, UpdateSyncState, and ResetAllSyncedData to userID, plus updating all related tests in the store package.
36 lines
943 B
Go
36 lines
943 B
Go
package store
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
)
|
|
|
|
func TestSyncState_DefaultsAndUpdate(t *testing.T) {
|
|
db := openTestDB(t)
|
|
ctx := context.Background()
|
|
userID, err := db.ProvisionUser(ctx, "test-sub", "Test User")
|
|
if err != nil {
|
|
t.Fatalf("ProvisionUser: %v", err)
|
|
}
|
|
|
|
state, err := db.GetSyncState(ctx, userID)
|
|
if err != nil {
|
|
t.Fatalf("GetSyncState: %v", err)
|
|
}
|
|
if state.EarliestSyncedDate != nil || state.BackfillComplete {
|
|
t.Fatalf("expected fresh DB to have no watermark, got %+v", state)
|
|
}
|
|
|
|
if err := db.UpdateSyncState(ctx, userID, "2023-01-01", true); err != nil {
|
|
t.Fatalf("UpdateSyncState: %v", err)
|
|
}
|
|
|
|
state, err = db.GetSyncState(ctx, userID)
|
|
if err != nil {
|
|
t.Fatalf("GetSyncState after update: %v", err)
|
|
}
|
|
if state.EarliestSyncedDate == nil || *state.EarliestSyncedDate != "2023-01-01" || !state.BackfillComplete {
|
|
t.Fatalf("state after update = %+v, want earliest=2023-01-01 complete=true", state)
|
|
}
|
|
}
|