Files
audita/internal/validators/registry_test.go

80 lines
2.0 KiB
Go

package validators
import (
"testing"
)
func TestBuiltInRegistryRegistersAllKeys(t *testing.T) {
r := NewBuiltInRegistry()
for _, key := range []string{
KeyConfidenceThreshold,
KeyOriginalTextPresence,
KeyNonEmptyCorrectedText,
KeyNoEffect,
KeyProtectedTerms,
KeySpokenFormPlausibility,
KeyMeaningReversalReview,
KeyEditorialReview,
KeyGrammarReview,
KeySpokenWordReview,
} {
def, ok := r.Lookup(key)
if !ok {
t.Fatalf("expected validator key %q to be registered", key)
}
v, err := def.Build()
if err != nil {
t.Fatalf("build validator %q: %v", key, err)
}
if v.Name() != key {
t.Fatalf("expected validator name %q, got %q", key, v.Name())
}
}
}
func TestBuiltInRegistryUnknownKeyFails(t *testing.T) {
r := NewBuiltInRegistry()
if _, err := r.MustBuild("missing"); err == nil {
t.Fatalf("expected unknown validator key error")
}
}
func TestBuiltInChainKeysResolveForProductionModules(t *testing.T) {
for _, moduleKey := range []string{"glossary", "homophones", "spoken_word", "grammar"} {
keys, err := BuiltInChainKeys(moduleKey)
if err != nil {
t.Fatalf("resolve keys for %q: %v", moduleKey, err)
}
if len(keys) == 0 {
t.Fatalf("expected non-empty chain for %q", moduleKey)
}
}
}
func TestResolveBuiltInChainUsesRegisteredKeys(t *testing.T) {
r := NewBuiltInRegistry()
for _, moduleKey := range []string{"glossary", "homophones", "spoken_word", "grammar"} {
chain, err := ResolveBuiltInChain(moduleKey, r)
if err != nil {
t.Fatalf("resolve chain for %q: %v", moduleKey, err)
}
if len(chain) == 0 {
t.Fatalf("expected non-empty chain for %q", moduleKey)
}
for _, v := range chain {
if v == nil {
t.Fatalf("nil validator in %q chain", moduleKey)
}
}
}
}
func TestBuiltInChainUnknownModuleFails(t *testing.T) {
if _, err := BuiltInChainKeys("unknown"); err == nil {
t.Fatalf("expected unknown module chain failure")
}
if _, err := ResolveBuiltInChain("unknown", NewBuiltInRegistry()); err == nil {
t.Fatalf("expected unknown module chain failure")
}
}