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