Files
gitblog/internal/content/manager_test.go
2025-09-15 04:02:11 +03:00

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))
}
})
}
}