// ingestion/internal/wiki/inventory_test.go package wiki import ( "os" "path/filepath" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestLoadInventory(t *testing.T) { dir := t.TempDir() require.NoError(t, os.MkdirAll(filepath.Join(dir, "wiki", "concepts"), 0o755)) require.NoError(t, os.MkdirAll(filepath.Join(dir, "wiki", "entities"), 0o755)) require.NoError(t, os.MkdirAll(filepath.Join(dir, "wiki", "sources"), 0o755)) require.NoError(t, os.WriteFile( filepath.Join(dir, "wiki", "concepts", "domain-driven-design.md"), []byte("---\ntitle: Domain Driven Design\n---\n\n## Definition\n\nA thing.\n"), 0o644, )) require.NoError(t, os.WriteFile( filepath.Join(dir, "wiki", "entities", "ryan-singer.md"), []byte("---\ntitle: Ryan Singer\n---\n\n## Description\n\nDesigner.\n"), 0o644, )) inv, err := LoadInventory(dir) require.NoError(t, err) assert.Len(t, inv[PageTypeConcept], 1) assert.Equal(t, "domain-driven-design", inv[PageTypeConcept][0].Slug) assert.Equal(t, "Domain Driven Design", inv[PageTypeConcept][0].Title) assert.Len(t, inv[PageTypeEntity], 1) assert.Equal(t, "ryan-singer", inv[PageTypeEntity][0].Slug) assert.Empty(t, inv[PageTypeSource]) } func TestLoadInventory_EmptyDirs(t *testing.T) { dir := t.TempDir() require.NoError(t, os.MkdirAll(filepath.Join(dir, "wiki", "concepts"), 0o755)) require.NoError(t, os.MkdirAll(filepath.Join(dir, "wiki", "entities"), 0o755)) require.NoError(t, os.MkdirAll(filepath.Join(dir, "wiki", "sources"), 0o755)) inv, err := LoadInventory(dir) require.NoError(t, err) assert.Empty(t, inv[PageTypeConcept]) assert.Empty(t, inv[PageTypeEntity]) assert.Empty(t, inv[PageTypeSource]) } func TestLoadInventory_MissingDirsOk(t *testing.T) { dir := t.TempDir() // No wiki/ subdirs at all inv, err := LoadInventory(dir) require.NoError(t, err) assert.NotNil(t, inv) } func TestLoadInventory_ReadsAliases(t *testing.T) { dir := t.TempDir() require.NoError(t, os.MkdirAll(filepath.Join(dir, "wiki", "entities"), 0o755)) require.NoError(t, os.MkdirAll(filepath.Join(dir, "wiki", "concepts"), 0o755)) require.NoError(t, os.MkdirAll(filepath.Join(dir, "wiki", "sources"), 0o755)) require.NoError(t, os.WriteFile( filepath.Join(dir, "wiki", "entities", "ryan-singer.md"), []byte("---\ntitle: Ryan Singer\naliases:\n - Singer\n - R. Singer\n---\n\n## Description\n\nDesigner.\n"), 0o644, )) inv, err := LoadInventory(dir) require.NoError(t, err) require.Len(t, inv[PageTypeEntity], 1) e := inv[PageTypeEntity][0] assert.Equal(t, "Ryan Singer", e.Title) assert.Equal(t, []string{"Singer", "R. Singer"}, e.Aliases) }