package main import ( "bytes" "os" "path/filepath" "testing" ) func TestTemplateRenderer(t *testing.T) { dir := t.TempDir() os.WriteFile(filepath.Join(dir, "test.html"), []byte(`

{{.Title}}

`), 0644) os.WriteFile(filepath.Join(dir, "plain.html"), []byte(`

Hello

`), 0644) tr, err := NewTemplateRenderer(dir) if err != nil { t.Fatalf("NewTemplateRenderer: %v", err) } t.Run("render with data", func(t *testing.T) { var buf bytes.Buffer err := tr.Render(&buf, "test.html", map[string]string{"Title": "World"}) if err != nil { t.Fatalf("Render: %v", err) } if buf.String() != "

World

" { t.Errorf("got %q", buf.String()) } }) t.Run("render plain", func(t *testing.T) { var buf bytes.Buffer err := tr.Render(&buf, "plain.html", nil) if err != nil { t.Fatalf("Render: %v", err) } if buf.String() != "

Hello

" { t.Errorf("got %q", buf.String()) } }) t.Run("template not found", func(t *testing.T) { var buf bytes.Buffer err := tr.Render(&buf, "missing.html", nil) if err == nil { t.Fatal("expected error for missing template") } }) t.Run("empty dir", func(t *testing.T) { emptyDir := t.TempDir() tr2, err := NewTemplateRenderer(emptyDir) if err != nil { t.Fatalf("NewTemplateRenderer: %v", err) } var buf bytes.Buffer err = tr2.Render(&buf, "anything.html", nil) if err == nil { t.Fatal("expected error") } }) }