494c719a5d
Migrate 54 test call sites to construct NormalizedInput{Text: ...}.
Add invariant tests:
- TestNormalizedInputReachesRouteIntact: ingress NormalizedInput reaches Route
- TestTryFastPathReceivesMatchText: TryFastPath gets the same input
- TestMatchTextDoesNotChangeRouting: same Text + different MatchText → same Decision
- TestDecisionUtteranceEqualsInputText: Decision.Utterance == input.Text
56 lines
1.6 KiB
Go
56 lines
1.6 KiB
Go
package router
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
)
|
|
|
|
func feedRouter(t *testing.T) *Router {
|
|
t.Helper()
|
|
r := newTestRouter(t, 0.0)
|
|
r.grammars = append(r.grammars, SystemTimeDateGrammars()...)
|
|
r.grammars = append(r.grammars, AgendaQueryGrammars()...)
|
|
r.grammars = append(r.grammars, FeedQueryGrammar())
|
|
return r
|
|
}
|
|
|
|
// The documented utterance of task 258 step 1 routed system and answered
|
|
// "пока не умею отвечать на этот вопрос.", while the same question worded with
|
|
// "новостях" worked (Vikunja #474).
|
|
func TestFeedQuestionsRouteToQuery(t *testing.T) {
|
|
r := feedRouter(t)
|
|
for _, u := range []string{
|
|
"что нового в лентах?",
|
|
"что в лентах?",
|
|
"расскажи что в новостных лентах",
|
|
"покажи ленту",
|
|
} {
|
|
d, err := r.Route(context.Background(), NormalizedInput{Text: u}, refNow())
|
|
if err != nil {
|
|
t.Fatalf("route(%q): %v", u, err)
|
|
}
|
|
if d.Intent != IntentQuery {
|
|
t.Errorf("route(%q) = %s, want query", u, d.Intent)
|
|
}
|
|
}
|
|
}
|
|
|
|
// The greeting and the statement keep their intents. "что нового?" is the most
|
|
// common opener in the language, and a rule that claimed it would answer hello
|
|
// with a configuration status.
|
|
func TestFeedGrammarLeavesTheGreetingAlone(t *testing.T) {
|
|
r := feedRouter(t)
|
|
for _, u := range []string{
|
|
"что нового?",
|
|
"у меня новая лента в инстаграме",
|
|
} {
|
|
d, err := r.Route(context.Background(), NormalizedInput{Text: u}, refNow())
|
|
if err != nil {
|
|
t.Fatalf("route(%q): %v", u, err)
|
|
}
|
|
if d.Stage == 0 {
|
|
t.Errorf("route(%q) was claimed at stage 0 as %s", u, d.Intent)
|
|
}
|
|
}
|
|
}
|