57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package lib_test
|
|
|
|
import (
|
|
"io/fs"
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/alecthomas/assert/v2"
|
|
"goth.stack/lib"
|
|
)
|
|
|
|
func TestExtractFrontMatter(t *testing.T) {
|
|
// Create a temporary file with some front matter
|
|
tmpfile, err := os.CreateTemp("../content", "example.*.md")
|
|
println(tmpfile.Name())
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer os.Remove(tmpfile.Name()) // clean up
|
|
|
|
text := `---
|
|
name: "Test Title"
|
|
description: "Test Description"
|
|
---
|
|
|
|
# Test Content
|
|
|
|
`
|
|
if _, err := tmpfile.Write([]byte(text)); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
if err := tmpfile.Close(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
// Get the directory entry for the temporary file
|
|
dirEntry, err := os.ReadDir(filepath.Dir(tmpfile.Name()))
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
var tmpFileEntry fs.DirEntry
|
|
for _, entry := range dirEntry {
|
|
if entry.Name() == filepath.Base(tmpfile.Name()) {
|
|
tmpFileEntry = entry
|
|
break
|
|
}
|
|
}
|
|
|
|
// Now we can test ExtractFrontMatter
|
|
frontMatter, err := lib.ExtractFrontMatter(tmpFileEntry, "../content/")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, "Test Title", frontMatter.Name)
|
|
assert.Equal(t, "Test Description", frontMatter.Description)
|
|
}
|