Files

37 lines
1.4 KiB
Go

package prompt
import (
"strings"
"testing"
"ai-operator/internal/dialogue/state"
)
func TestPromptBuilder(t *testing.T) {
p := BuildSystemPromptFragment(PromptContext{State: state.StateLanguageSelection})
if !strings.Contains(p, "Zhanna") || !strings.Contains(p, "Do not use IVR-style") {
t.Fatalf("bad language prompt: %s", p)
}
p = BuildSystemPromptFragment(PromptContext{State: state.StateRegionSelection})
if !strings.Contains(p, "Ask for city or oblast naturally") {
t.Fatalf("bad region prompt: %s", p)
}
p = BuildSystemPromptFragment(PromptContext{State: state.StateReadyToHelp, Language: state.LanguageRU, RegionCode: "almaty_city"})
if !strings.Contains(p, "almaty_city") || strings.Contains(p, "SECRET") {
t.Fatalf("bad ready prompt: %s", p)
}
}
func TestLanguageSelectionPromptGuardrails(t *testing.T) {
p := BuildSystemPromptFragment(PromptContext{State: state.StateLanguageSelection})
for _, want := range []string{"Zhanna", "QazAimaqGas", "Infer language from speech", "General questions may use global KB"} {
if !strings.Contains(p, want) {
t.Fatalf("prompt missing %q: %s", want, p)
}
}
p = BuildSystemPromptFragment(PromptContext{State: state.StateReadyToHelp, Language: state.LanguageRU, RegionCode: "almaty_city"})
if !strings.Contains(p, "For regional branch/address/contact questions") {
t.Fatalf("ready prompt missing regional guardrail: %s", p)
}
}