mark/metadata/metadata_test.go
2025-09-15 11:07:30 +02:00

63 lines
1.5 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)
})
}