39 lines
1.7 KiB
Go
39 lines
1.7 KiB
Go
package domain_test
|
|
|
|
import (
|
|
"git.cin.su/m/Assistant/contracts/interaction"
|
|
"git.cin.su/m/Assistant/modules/interaction/domain"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestGen2ContextUsesRetrievalProjectionAndKeepsV1Fallback(t *testing.T) {
|
|
got := domain.BuildGen2Context([]interaction.HumanUtterance{{ID: "u", Content: "Я сейчас в Москве", ReceivedAtUnixMillis: 1}})
|
|
if got.Source != "retrieval:interaction-utterances" || got.UsedPersonalMemoryFallback {
|
|
t.Fatalf("got %#v", got)
|
|
}
|
|
empty := domain.BuildGen2Context(nil)
|
|
if !empty.UsedPersonalMemoryFallback {
|
|
t.Fatalf("fallback missing: %#v", empty)
|
|
}
|
|
}
|
|
|
|
func TestGen2ContextDoesNotProjectAnotherPrincipal(t *testing.T) {
|
|
got := domain.BuildScopedGen2Context([]interaction.HumanUtterance{
|
|
{ID: "mine", PrincipalID: "principal-1", Content: "Я сейчас в Москве", ReceivedAtUnixMillis: 2},
|
|
{ID: "other", PrincipalID: "principal-2", Content: "Я сейчас в Казани", ReceivedAtUnixMillis: 3},
|
|
}, "principal-1")
|
|
if got.Text == "" || strings.Contains(got.Text, "Казани") || !strings.Contains(got.Text, "Москве") {
|
|
t.Fatalf("scoped context=%#v", got)
|
|
}
|
|
}
|
|
|
|
func TestGen2ContextProjectsExplicitRememberedAssertion(t *testing.T) {
|
|
got := domain.BuildScopedGen2Context([]interaction.HumanUtterance{
|
|
{ID: "assertion", PrincipalID: "principal-1", Content: "Для этого разговора запомни: мой тестовый цвет — синий.", ReceivedAtUnixMillis: 1},
|
|
}, "principal-1")
|
|
if got.Source != "retrieval:interaction-utterances" || got.UsedPersonalMemoryFallback || !strings.Contains(got.Text, "тестовый цвет — синий") {
|
|
t.Fatalf("remembered assertion was not projected: %#v", got)
|
|
}
|
|
}
|