package httpapi import ( "strings" "testing" "knowledge-governance/internal/librarydiff" ) func TestWikiViewFromKeepsContributionDetail(t *testing.T) { result := librarydiff.WikiResult{ State: "computed", Added: 0, Updated: 1, Removed: 1, SourcesAdded: 0, SourcesRemoved: 2, BaseCount: 2, TargetCount: 1, Pages: []librarydiff.WikiContribution{ {Slug: "entity/gate", Title: "发布闸门", PageType: "entity", Status: "updated", Changed: []string{"content", "sources", "citations"}, SourcesRemoved: []string{"doc-a"}, CitationsBefore: 2, CitationsAfter: 1}, {Slug: "entity/only-a", Title: "只属于 A", PageType: "entity", Status: "removed", Changed: []string{"removed"}, SourcesRemoved: []string{"doc-a"}}, }, } view := wikiViewFrom(result, 0) if view.State != "computed" || view.Updated != 1 || view.Removed != 1 || view.SourcesRemoved != 2 { t.Fatalf("view: %+v", view) } if len(view.Pages) != 2 { t.Fatalf("pages: %+v", view.Pages) } kept := view.Pages[0] if kept.Status != "updated" || len(kept.Changed) != 3 || kept.Changed[0] != "正文" { t.Fatalf("changed labels: %+v", kept) } if len(kept.SourcesRemoved) != 1 || kept.SourcesRemoved[0] != "doc-a" { t.Fatalf("sources: %+v", kept) } if !strings.Contains(view.Note, "来源") { t.Fatalf("note should explain what is compared: %q", view.Note) } } func TestWikiViewFromCapsPagesAndSaysSo(t *testing.T) { result := librarydiff.WikiResult{State: "computed", BaseCount: 0} for _, slug := range []string{"a", "b", "c"} { result.Pages = append(result.Pages, librarydiff.WikiContribution{Slug: slug, Status: "added"}) result.Added++ } view := wikiViewFrom(result, 2) if len(view.Pages) != 2 || !view.PagesTruncated { t.Fatalf("cap: pages=%d truncated=%v", len(view.Pages), view.PagesTruncated) } }