mark/metadata/metadata_test.go
2026-03-11 12:47:35 +01:00

92 lines
2.7 KiB
Go

package metadata
import (
"os"
"path"
"runtime"
"testing"
"github.com/stretchr/testify/assert"
)
func TestExtractDocumentLeadingH1(t *testing.T) {
_, filename, _, _ := runtime.Caller(0)
dir := path.Join(path.Dir(filename), "..")
err := os.Chdir(dir)
if err != nil {
panic(err)
}
filename = "testdata/header.md"
markdown, err := os.ReadFile(filename)
if err != nil {
panic(err)
}
actual := ExtractDocumentLeadingH1(markdown)
assert.Equal(t, "a", actual)
}
func TestSetTitleFromFilename(t *testing.T) {
t.Run("set title from filename", func(t *testing.T) {
meta := &Meta{Title: ""}
setTitleFromFilename(meta, "/path/to/test.md")
assert.Equal(t, "Test", meta.Title)
})
t.Run("replace underscores with spaces", func(t *testing.T) {
meta := &Meta{Title: ""}
setTitleFromFilename(meta, "/path/to/test_with_underscores.md")
assert.Equal(t, "Test With Underscores", meta.Title)
})
t.Run("replace dashes with spaces", func(t *testing.T) {
meta := &Meta{Title: ""}
setTitleFromFilename(meta, "/path/to/test-with-dashes.md")
assert.Equal(t, "Test With Dashes", meta.Title)
})
t.Run("mixed underscores and dashes", func(t *testing.T) {
meta := &Meta{Title: ""}
setTitleFromFilename(meta, "/path/to/test_with-mixed_separators.md")
assert.Equal(t, "Test With Mixed Separators", meta.Title)
})
t.Run("already title cased", func(t *testing.T) {
meta := &Meta{Title: ""}
setTitleFromFilename(meta, "/path/to/Already-Title-Cased.md")
assert.Equal(t, "Already Title Cased", meta.Title)
})
}
func TestExtractMetaContentAppearance(t *testing.T) {
t.Run("default fills missing content appearance", func(t *testing.T) {
data := []byte("<!-- Space: DOC -->\n<!-- Title: Example -->\n\nbody\n")
meta, _, err := ExtractMeta(data, "", false, false, "", nil, false, FixedContentAppearance)
assert.NoError(t, err)
assert.NotNil(t, meta)
assert.Equal(t, FixedContentAppearance, meta.ContentAppearance)
})
t.Run("header takes precedence over default", func(t *testing.T) {
data := []byte("<!-- Space: DOC -->\n<!-- Title: Example -->\n<!-- Content-Appearance: full-width -->\n\nbody\n")
meta, _, err := ExtractMeta(data, "", false, false, "", nil, false, FixedContentAppearance)
assert.NoError(t, err)
assert.NotNil(t, meta)
assert.Equal(t, FullWidthContentAppearance, meta.ContentAppearance)
})
t.Run("falls back to full-width when default isn't set", func(t *testing.T) {
data := []byte("<!-- Space: DOC -->\n<!-- Title: Example -->\n\nbody\n")
meta, _, err := ExtractMeta(data, "", false, false, "", nil, false, "")
assert.NoError(t, err)
assert.NotNil(t, meta)
assert.Equal(t, FullWidthContentAppearance, meta.ContentAppearance)
})
}