74 lines
1.9 KiB
Go
74 lines
1.9 KiB
Go
package memory
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"git.threesix.ai/jordan/slate-v3-1770514618/services/preferences-api/internal/domain"
|
|
)
|
|
|
|
func TestPreferencesRepository_GetMissing(t *testing.T) {
|
|
repo := NewPreferencesRepository()
|
|
_, err := repo.Get(context.Background(), "nonexistent")
|
|
if err != domain.ErrPreferencesNotFound {
|
|
t.Errorf("expected ErrPreferencesNotFound, got %v", err)
|
|
}
|
|
}
|
|
|
|
func TestPreferencesRepository_UpsertAndGet(t *testing.T) {
|
|
repo := NewPreferencesRepository()
|
|
ctx := context.Background()
|
|
|
|
prefs := domain.NewDefaultPreferences("user-1")
|
|
prefs.Theme = "dark"
|
|
|
|
if err := repo.Upsert(ctx, "user-1", prefs); err != nil {
|
|
t.Fatalf("unexpected error on upsert: %v", err)
|
|
}
|
|
|
|
got, err := repo.Get(ctx, "user-1")
|
|
if err != nil {
|
|
t.Fatalf("unexpected error on get: %v", err)
|
|
}
|
|
if got.Theme != "dark" {
|
|
t.Errorf("expected theme 'dark', got '%s'", got.Theme)
|
|
}
|
|
if got.UserID != "user-1" {
|
|
t.Errorf("expected user_id 'user-1', got '%s'", got.UserID)
|
|
}
|
|
}
|
|
|
|
func TestPreferencesRepository_UpsertOverwrites(t *testing.T) {
|
|
repo := NewPreferencesRepository()
|
|
ctx := context.Background()
|
|
|
|
prefs1 := domain.NewDefaultPreferences("user-1")
|
|
prefs1.Theme = "dark"
|
|
_ = repo.Upsert(ctx, "user-1", prefs1)
|
|
|
|
prefs2 := domain.NewDefaultPreferences("user-1")
|
|
prefs2.Theme = "light"
|
|
_ = repo.Upsert(ctx, "user-1", prefs2)
|
|
|
|
got, _ := repo.Get(ctx, "user-1")
|
|
if got.Theme != "light" {
|
|
t.Errorf("expected theme 'light' after overwrite, got '%s'", got.Theme)
|
|
}
|
|
}
|
|
|
|
func TestPreferencesRepository_ReturnsCopy(t *testing.T) {
|
|
repo := NewPreferencesRepository()
|
|
ctx := context.Background()
|
|
|
|
prefs := domain.NewDefaultPreferences("user-1")
|
|
_ = repo.Upsert(ctx, "user-1", prefs)
|
|
|
|
got, _ := repo.Get(ctx, "user-1")
|
|
got.Theme = "modified"
|
|
|
|
got2, _ := repo.Get(ctx, "user-1")
|
|
if got2.Theme != "system" {
|
|
t.Errorf("expected stored theme 'system' unchanged, got '%s'", got2.Theme)
|
|
}
|
|
}
|