37 lines
1.4 KiB
Go
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)
|
|
}
|
|
}
|