haixunMaster/haixun-backend/internal/library/knowledge/brave_collect_test.go

105 lines
2.9 KiB
Go
Raw Permalink Normal View History

2026-06-24 16:48:56 +00:00
package knowledge
import "testing"
func TestUniqueSourceCount(t *testing.T) {
count := uniqueSourceCount([]BraveSource{
{URL: "https://a.example"},
{URL: "https://a.example"},
{URL: "https://b.example"},
{URL: ""},
})
if count != 2 {
t.Fatalf("expected 2 unique urls, got %d", count)
}
}
func TestPlanQueriesHybridBudget(t *testing.T) {
queries := PlanQueries(PlanInput{
Seed: "敏感肌",
TargetAudience: "孕婦",
Questions: []string{"q1", "q2", "q3", "q4"},
Pillars: []string{"p1", "p2", "p3"},
L1Labels: []string{"a", "b", "c", "d"},
Strategy: ExpandStrategyHybrid,
})
if len(queries) > 4 {
t.Fatalf("hybrid should cap at 4 queries, got %d: %v", len(queries), queries)
}
if len(queries) == 0 {
t.Fatal("expected some queries")
}
}
func TestPlanQueriesPrioritizesPatrolKeywords(t *testing.T) {
queries := PlanQueries(PlanInput{
Seed: "敏感肌",
PatrolKeywords: []string{"化療 沐浴乳", "無香沐浴乳 推薦"},
Questions: []string{"很長的受眾提問一", "很長的受眾提問二"},
Strategy: ExpandStrategyBrave,
})
if len(queries) == 0 {
t.Fatal("expected queries")
}
if queries[0] != "化療 沐浴乳" {
t.Fatalf("expected patrol keyword first, got %q", queries[0])
}
}
func TestQueriesExcept(t *testing.T) {
remaining := QueriesExcept(
[]string{"a", "b", "c", "d"},
[]string{"a", "c"},
)
if len(remaining) != 2 || remaining[0] != "b" || remaining[1] != "d" {
t.Fatalf("unexpected remaining: %v", remaining)
}
}
func TestPlanBootstrapQueriesSkipsResearchMapFields(t *testing.T) {
full := PlanQueries(PlanInput{
Seed: "敏感肌",
Questions: []string{"q1"},
Pillars: []string{"p1"},
Strategy: ExpandStrategyBrave,
})
bootstrap := PlanBootstrapQueries(PlanInput{
Seed: "敏感肌",
Questions: []string{"q1"},
Pillars: []string{"p1"},
Strategy: ExpandStrategyBrave,
})
if len(bootstrap) == 0 {
t.Fatal("expected bootstrap queries")
}
for _, q := range bootstrap {
if q == "q1" || q == "p1 請問" {
t.Fatalf("bootstrap should not include research map query %q", q)
}
}
if len(full) <= len(bootstrap) {
t.Fatalf("full plan should include more queries than bootstrap: full=%v bootstrap=%v", full, bootstrap)
}
}
func TestMergeBraveSourcesDedupesURLs(t *testing.T) {
merged := MergeBraveSources(
[]BraveSource{{URL: "https://a.example", Query: "q1"}},
[]BraveSource{{URL: "https://a.example", Query: "q2"}, {URL: "https://b.example", Query: "q3"}},
)
if len(merged) != 2 {
t.Fatalf("expected 2 merged sources, got %d", len(merged))
}
}
func TestSupplementalQueriesSkippedForHybrid(t *testing.T) {
queries := PlanQueries(PlanInput{
Seed: "敏感肌",
Supplemental: true,
Strategy: ExpandStrategyHybrid,
})
if len(queries) != 0 {
t.Fatalf("hybrid supplemental brave should be empty, got %v", queries)
}
}