package templates import ( "os" "strings" "testing" ) func TestParseTemplate(t *testing.T) { input := `--- title: my new post subtitle: a blog post tags: ["software", "web"] ---
Hello World!
` file := newFile("test*.html", input) defer os.Remove(file.Name()) templ, err := Parse(NewEngine("https://olano.dev"), file.Name()) assertEqual(t, err, nil) assertEqual(t, templ.Metadata["title"], "my new post") assertEqual(t, templ.Metadata["subtitle"], "a blog post") assertEqual(t, templ.Metadata["tags"].([]interface{})[0], "software") assertEqual(t, templ.Metadata["tags"].([]interface{})[1], "web") content, err := templ.Render(nil) assertEqual(t, err, nil) assertEqual(t, string(content), "Hello World!
") } func TestNonTemplate(t *testing.T) { // not identified as front matter, leaving file as is input := `+++ title: my new post subtitle: a blog post +++Hello World!
` file := newFile("test*.html", input) defer os.Remove(file.Name()) _, err := Parse(NewEngine("https://olano.dev"), file.Name()) assertEqual(t, err, nil) // not first thing in file, leaving as is input = `#+OPTIONS: toc:nil num:nil --- title: my new post subtitle: a blog post tags: ["software", "web"] ---Hello World!
` file = newFile("test*.html", input) defer os.Remove(file.Name()) _, err = Parse(NewEngine("https://olano.dev"), file.Name()) assertEqual(t, err, nil) } func TestInvalidFrontMatter(t *testing.T) { input := `--- title: my new post subtitle: a blog post tags: ["software", "web"] ` file := newFile("test*.html", input) defer os.Remove(file.Name()) _, err := Parse(NewEngine("https://olano.dev"), file.Name()) assertEqual(t, err.Error(), "front matter not closed") input = `--- title tags: ["software", "web"] ---Hello World!
` file = newFile("test*.html", input) defer os.Remove(file.Name()) _, err = Parse(NewEngine("https://olano.dev"), file.Name()) assert(t, strings.Contains(err.Error(), "invalid yaml")) } func TestRenderLiquid(t *testing.T) { input := `--- title: my new post subtitle: a blog post tags: ["software", "web"] ---