91 lines
2.7 KiB
Go
91 lines
2.7 KiB
Go
// ingestion/internal/pipeline/resolve_test.go
|
|
package pipeline
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/mathiasbq/hyperguild/ingestion/internal/wiki"
|
|
)
|
|
|
|
func TestResolve_NoMatch(t *testing.T) {
|
|
proposed := []wiki.Page{
|
|
{Path: "wiki/entities/new-person.md", Content: "---\ntitle: New Person\n---\n"},
|
|
}
|
|
inventory := map[wiki.PageType][]wiki.Entry{
|
|
wiki.PageTypeEntity: {
|
|
{Slug: "ryan-singer", Title: "Ryan Singer", Aliases: []string{"Singer"}},
|
|
},
|
|
}
|
|
got := Resolve(proposed, inventory)
|
|
assert.Len(t, got, 1)
|
|
assert.Equal(t, "wiki/entities/new-person.md", got[0].Path)
|
|
}
|
|
|
|
func TestResolve_TitleMatchRedirectsSlug(t *testing.T) {
|
|
proposed := []wiki.Page{
|
|
{Path: "wiki/entities/ryan-singer-the-designer.md", Content: "---\ntitle: Ryan Singer\n---\n"},
|
|
}
|
|
inventory := map[wiki.PageType][]wiki.Entry{
|
|
wiki.PageTypeEntity: {
|
|
{Slug: "ryan-singer", Title: "Ryan Singer", Aliases: nil},
|
|
},
|
|
}
|
|
got := Resolve(proposed, inventory)
|
|
assert.Len(t, got, 1)
|
|
assert.Equal(t, "wiki/entities/ryan-singer.md", got[0].Path)
|
|
}
|
|
|
|
func TestResolve_AliasMatchRedirectsSlug(t *testing.T) {
|
|
proposed := []wiki.Page{
|
|
{Path: "wiki/entities/singer.md", Content: "---\ntitle: Singer\n---\n"},
|
|
}
|
|
inventory := map[wiki.PageType][]wiki.Entry{
|
|
wiki.PageTypeEntity: {
|
|
{Slug: "ryan-singer", Title: "Ryan Singer", Aliases: []string{"Singer", "R. Singer"}},
|
|
},
|
|
}
|
|
got := Resolve(proposed, inventory)
|
|
assert.Len(t, got, 1)
|
|
assert.Equal(t, "wiki/entities/ryan-singer.md", got[0].Path)
|
|
}
|
|
|
|
func TestResolve_NormalizationCaseAndArticles(t *testing.T) {
|
|
proposed := []wiki.Page{
|
|
{Path: "wiki/concepts/the-shape-up-method.md", Content: "---\ntitle: The Shape Up Method\n---\n"},
|
|
}
|
|
inventory := map[wiki.PageType][]wiki.Entry{
|
|
wiki.PageTypeConcept: {
|
|
{Slug: "shape-up-method", Title: "Shape Up Method", Aliases: nil},
|
|
},
|
|
}
|
|
got := Resolve(proposed, inventory)
|
|
assert.Len(t, got, 1)
|
|
assert.Equal(t, "wiki/concepts/shape-up-method.md", got[0].Path)
|
|
}
|
|
|
|
func TestResolve_OnlyMatchesSamePageType(t *testing.T) {
|
|
proposed := []wiki.Page{
|
|
{Path: "wiki/concepts/ryan-singer.md", Content: "---\ntitle: Ryan Singer\n---\n"},
|
|
}
|
|
inventory := map[wiki.PageType][]wiki.Entry{
|
|
wiki.PageTypeEntity: {
|
|
{Slug: "ryan-singer", Title: "Ryan Singer", Aliases: nil},
|
|
},
|
|
wiki.PageTypeConcept: {},
|
|
}
|
|
got := Resolve(proposed, inventory)
|
|
assert.Len(t, got, 1)
|
|
assert.Equal(t, "wiki/concepts/ryan-singer.md", got[0].Path)
|
|
}
|
|
|
|
func TestResolve_EmptyInventory(t *testing.T) {
|
|
proposed := []wiki.Page{
|
|
{Path: "wiki/entities/first.md", Content: "---\ntitle: First\n---\n"},
|
|
}
|
|
inventory := map[wiki.PageType][]wiki.Entry{}
|
|
got := Resolve(proposed, inventory)
|
|
assert.Equal(t, proposed, got)
|
|
}
|