slate-v3-1770514618/services/preferences-api/internal/adapter/memory/preferences_test.go
rdev-worker 1afe983cd6
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
build: /implement-feature user-preferences
2026-02-08 02:02:18 +00:00

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)
}
}