111 lines
2.6 KiB
Go
111 lines
2.6 KiB
Go
package content
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestGenerateSlug(t *testing.T) {
|
|
m := &Manager{}
|
|
|
|
tests := []struct {
|
|
input string
|
|
expected string
|
|
}{
|
|
{"Hello World", "hello-world"},
|
|
{"Hello, World!", "hello-world"},
|
|
{"Test@#$%^&*()", "test"},
|
|
{" Multiple Spaces ", "multiple-spaces"},
|
|
{"", "untitled"},
|
|
{"!@#$%", "untitled"},
|
|
{"123 Test", "123-test"},
|
|
{"Test-With-Dashes", "test-with-dashes"},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
result := m.generateSlug(test.input)
|
|
if result != test.expected {
|
|
t.Errorf("generateSlug(%q) = %q, expected %q", test.input, result, test.expected)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestGenerateExcerpt(t *testing.T) {
|
|
m := &Manager{}
|
|
|
|
tests := []struct {
|
|
input string
|
|
expected string
|
|
}{
|
|
{
|
|
"This is a short text",
|
|
"This is a short text",
|
|
},
|
|
{
|
|
"One two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twenty-one twenty-two twenty-three twenty-four twenty-five twenty-six twenty-seven twenty-eight twenty-nine thirty thirty-one",
|
|
"One two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twenty-one twenty-two twenty-three twenty-four twenty-five twenty-six twenty-seven twenty-eight twenty-nine thirty...",
|
|
},
|
|
{
|
|
"",
|
|
"",
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
result := m.generateExcerpt(test.input)
|
|
if result != test.expected {
|
|
t.Errorf("generateExcerpt() = %q, expected %q", result, test.expected)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestParseFrontmatter(t *testing.T) {
|
|
m := &Manager{}
|
|
|
|
tests := []struct {
|
|
name string
|
|
lines []string
|
|
expected map[string]interface{}
|
|
}{
|
|
{
|
|
name: "simple frontmatter",
|
|
lines: []string{
|
|
"title: My Post",
|
|
"date: 2024-01-15",
|
|
"---",
|
|
},
|
|
expected: map[string]interface{}{
|
|
"title": "My Post",
|
|
"date": "2024-01-15",
|
|
},
|
|
},
|
|
{
|
|
name: "frontmatter with arrays",
|
|
lines: []string{
|
|
"title: My Post",
|
|
"categories: [Technology, Go]",
|
|
"tags: [golang, web]",
|
|
"---",
|
|
},
|
|
expected: map[string]interface{}{
|
|
"title": "My Post",
|
|
"categories": []interface{}{"Technology", "Go"},
|
|
"tags": []interface{}{"golang", "web"},
|
|
},
|
|
},
|
|
{
|
|
name: "empty frontmatter",
|
|
lines: []string{},
|
|
expected: map[string]interface{}{},
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
result := m.parseFrontmatter(test.lines)
|
|
if len(result) != len(test.expected) {
|
|
t.Errorf("parseFrontmatter() returned %d items, expected %d", len(result), len(test.expected))
|
|
}
|
|
})
|
|
}
|
|
}
|