feat(ingestion): add wiki page merge logic
This commit is contained in:
55
ingestion/internal/wiki/merge_test.go
Normal file
55
ingestion/internal/wiki/merge_test.go
Normal file
@@ -0,0 +1,55 @@
|
||||
// ingestion/internal/wiki/merge_test.go
|
||||
package wiki
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestMerge_BulletSectionsUnion(t *testing.T) {
|
||||
a := Page{Path: "wiki/concepts/foo.md", Content: "---\ntitle: Foo\n---\n\n## Related Concepts\n\n- [[bar|Bar]]\n"}
|
||||
b := Page{Path: "wiki/concepts/foo.md", Content: "---\ntitle: Foo\n---\n\n## Related Concepts\n\n- [[bar|Bar]]\n- [[baz|Baz]]\n"}
|
||||
|
||||
got := Merge(a, b)
|
||||
assert.Contains(t, got.Content, "[[bar|Bar]]")
|
||||
assert.Contains(t, got.Content, "[[baz|Baz]]")
|
||||
assert.Equal(t, 1, strings.Count(got.Content, "[[bar|Bar]]"))
|
||||
}
|
||||
|
||||
func TestMerge_AppendSections(t *testing.T) {
|
||||
a := Page{Path: "wiki/concepts/foo.md", Content: "---\ntitle: Foo\n---\n\n## Evolving Notes\n\nFirst note.\n"}
|
||||
b := Page{Path: "wiki/concepts/foo.md", Content: "---\ntitle: Foo\n---\n\n## Evolving Notes\n\nSecond note.\n"}
|
||||
|
||||
got := Merge(a, b)
|
||||
assert.Contains(t, got.Content, "First note.")
|
||||
assert.Contains(t, got.Content, "Second note.")
|
||||
}
|
||||
|
||||
func TestMerge_KeepFirstForOtherSections(t *testing.T) {
|
||||
a := Page{Path: "wiki/concepts/foo.md", Content: "---\ntitle: Foo\n---\n\n## Definition\n\nFirst definition.\n"}
|
||||
b := Page{Path: "wiki/concepts/foo.md", Content: "---\ntitle: Foo\n---\n\n## Definition\n\nSecond definition.\n"}
|
||||
|
||||
got := Merge(a, b)
|
||||
assert.Contains(t, got.Content, "First definition.")
|
||||
assert.NotContains(t, got.Content, "Second definition.")
|
||||
}
|
||||
|
||||
func TestMerge_NewSectionFromB(t *testing.T) {
|
||||
a := Page{Path: "wiki/concepts/foo.md", Content: "---\ntitle: Foo\n---\n\n## Definition\n\nA thing.\n"}
|
||||
b := Page{Path: "wiki/concepts/foo.md", Content: "---\ntitle: Foo\n---\n\n## Why It Matters\n\nBecause reasons.\n"}
|
||||
|
||||
got := Merge(a, b)
|
||||
assert.Contains(t, got.Content, "A thing.")
|
||||
assert.Contains(t, got.Content, "Because reasons.")
|
||||
}
|
||||
|
||||
func TestMerge_KeepsFrontmatterFromA(t *testing.T) {
|
||||
a := Page{Path: "p.md", Content: "---\ntitle: A\nlast_updated: 2026-01-01\n---\n\n## Definition\n\nA.\n"}
|
||||
b := Page{Path: "p.md", Content: "---\ntitle: B\nlast_updated: 2026-06-01\n---\n\n## Definition\n\nB.\n"}
|
||||
|
||||
got := Merge(a, b)
|
||||
assert.Contains(t, got.Content, "title: A")
|
||||
assert.NotContains(t, got.Content, "title: B")
|
||||
}
|
||||
Reference in New Issue
Block a user