40 lines
1.9 KiB
Go
40 lines
1.9 KiB
Go
package ai
|
|
|
|
import "testing"
|
|
|
|
func TestBindHangupGroups(t *testing.T) {
|
|
task, providers := currentFixture(t, "full_ai")
|
|
task = changeCurrentAgent(t, task, func(agent map[string]any) {
|
|
agent["conversation"].(map[string]any)["hangup_keywords"] = []any{
|
|
map[string]any{"name": "挂机1", "triggers": []string{"不需要", "再见"}, "closingRemark": "好的,祝您生活愉快。"},
|
|
}
|
|
})
|
|
if _, err := Bind(task, providers); err != nil {
|
|
t.Fatalf("new hangup groups must be accepted: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestBindRejectsInvalidHangupGroups(t *testing.T) {
|
|
for name, groups := range map[string]any{
|
|
"legacy": []string{"再见"},
|
|
"missing-name": []any{map[string]any{"triggers": []string{"再见"}, "closingRemark": "再见。"}},
|
|
"blank-name": []any{map[string]any{"name": " ", "triggers": []string{"再见"}, "closingRemark": "再见。"}},
|
|
"empty-triggers": []any{map[string]any{"name": "挂机1", "triggers": []string{}, "closingRemark": "再见。"}},
|
|
"blank-trigger": []any{map[string]any{"name": "挂机1", "triggers": []string{" "}, "closingRemark": "再见。"}},
|
|
"missing-remark": []any{map[string]any{"name": "挂机1", "triggers": []string{"再见"}}},
|
|
"blank-remark": []any{map[string]any{"name": "挂机1", "triggers": []string{"再见"}, "closingRemark": " \n"}},
|
|
"wrong-casing": []any{map[string]any{"name": "挂机1", "triggers": []string{"再见"}, "closing_remark": "再见。"}},
|
|
"unknown-field": []any{map[string]any{"name": "挂机1", "triggers": []string{"再见"}, "closingRemark": "再见。", "fallback": true}},
|
|
} {
|
|
t.Run(name, func(t *testing.T) {
|
|
task, providers := currentFixture(t, "full_ai")
|
|
task = changeCurrentAgent(t, task, func(agent map[string]any) {
|
|
agent["conversation"].(map[string]any)["hangup_keywords"] = groups
|
|
})
|
|
if _, err := Bind(task, providers); err == nil {
|
|
t.Fatal("invalid or removed hangup configuration accepted")
|
|
}
|
|
})
|
|
}
|
|
}
|