Files
goclaw/internal/http/provider_embedding_validation_test.go
Kai (Tam Nhu) Tran 65d0d62acf fix(memory): guard provider embedding dimensions to 1536 schema (#563)
- Reject incompatible explicit provider embedding dimensions on create/update
- Ignore previously saved incompatible dimensions at runtime, fall back to 1536
- Share RequiredMemoryEmbeddingDimensions constant from store package
- Remove dimensions input from provider UI (always 1536 per pgvector schema)
- Add HTTP, runtime, and validation unit tests

Closes #548
Supersedes #410
2026-03-30 21:36:09 +07:00

49 lines
1.3 KiB
Go

package http
import (
"encoding/json"
"testing"
"github.com/nextlevelbuilder/goclaw/internal/store"
)
func embeddingProvider(dims int) *store.LLMProviderData {
settings := map[string]any{
"embedding": map[string]any{
"enabled": true,
"model": "test-model",
"dimensions": dims,
},
}
raw, _ := json.Marshal(settings)
return &store.LLMProviderData{Settings: raw}
}
func TestValidateProviderEmbeddingSettings(t *testing.T) {
tests := []struct {
name string
p *store.LLMProviderData
wantErr bool
}{
{"nil settings", &store.LLMProviderData{}, false},
{"embedding disabled", &store.LLMProviderData{
Settings: json.RawMessage(`{"embedding":{"enabled":false}}`),
}, false},
{"dimensions omitted (0)", &store.LLMProviderData{
Settings: json.RawMessage(`{"embedding":{"enabled":true,"model":"m"}}`),
}, false},
{"dimensions 1536", embeddingProvider(1536), false},
{"dimensions 2048", embeddingProvider(2048), true},
{"dimensions 1024", embeddingProvider(1024), true},
{"dimensions negative", embeddingProvider(-1), true},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
err := validateProviderEmbeddingSettings(tt.p)
if (err != nil) != tt.wantErr {
t.Fatalf("validateProviderEmbeddingSettings() error = %v, wantErr %v", err, tt.wantErr)
}
})
}
}