package wiki import ( "os" "path/filepath" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func put(t *testing.T, dir, rel string) { t.Helper() full := filepath.Join(dir, rel) require.NoError(t, os.MkdirAll(filepath.Dir(full), 0o755)) require.NoError(t, os.WriteFile(full, []byte("---\ntitle: x\n---\n"), 0o644)) } func TestFindSlugs(t *testing.T) { dir := t.TempDir() put(t, dir, "wiki/sources/legacy-src.md") put(t, dir, "wiki/concepts/a-concept.md") put(t, dir, "wiki/entities/an-entity.md") put(t, dir, "wiki/homelab/failures/in-a-hall.md") put(t, dir, "wiki/web-clip/sources/a-clip.md") // One slug in two places: the first hit must not hide the second. put(t, dir, "wiki/sources/shared-slug.md") put(t, dir, "wiki/entities/shared-slug.md") put(t, dir, "wiki/aaa/facts/shared-slug.md") tests := []struct { slug string want []string }{ {"legacy-src", []string{"wiki/sources/legacy-src.md"}}, {"a-concept", []string{"wiki/concepts/a-concept.md"}}, {"an-entity", []string{"wiki/entities/an-entity.md"}}, {"in-a-hall", []string{"wiki/homelab/failures/in-a-hall.md"}}, {"a-clip", []string{"wiki/web-clip/sources/a-clip.md"}}, {"shared-slug", []string{"wiki/aaa/facts/shared-slug.md", "wiki/entities/shared-slug.md", "wiki/sources/shared-slug.md"}}, {"nothing-here", nil}, } for _, tt := range tests { t.Run(tt.slug, func(t *testing.T) { got, err := FindSlugs(dir, tt.slug) require.NoError(t, err) assert.Equal(t, tt.want, got) }) } } func TestFindSlugs_NoWikiDirFindsNothing(t *testing.T) { got, err := FindSlugs(t.TempDir(), "x") require.NoError(t, err) assert.Empty(t, got) }