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