fix template test renderer, add category
This commit is contained in:
parent
d9146750ba
commit
e4317ec4fd
15 changed files with 171 additions and 103 deletions
|
@ -3,64 +3,20 @@ package templatetesting
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"html/template"
|
||||
"io/fs"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.sapphic.engineer/roleypoly/v4/templates"
|
||||
"git.sapphic.engineer/roleypoly/v4/roleypoly"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
var (
|
||||
funcMap = template.FuncMap{
|
||||
"embed": func() string {
|
||||
return "%%EMBED%%"
|
||||
},
|
||||
}
|
||||
Templates *template.Template = template.New("index").Funcs(funcMap)
|
||||
viewEngine = roleypoly.CreateViewEngine()
|
||||
)
|
||||
|
||||
func init() {
|
||||
fs.WalkDir(templates.FS, ".", func(path string, d fs.DirEntry, err error) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if d.IsDir() {
|
||||
return nil
|
||||
}
|
||||
|
||||
fiberName := strings.Replace(path, ".html", "", 1)
|
||||
f, err := templates.FS.ReadFile(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if fiberName == "index" {
|
||||
Templates, err = Templates.Parse(string(f))
|
||||
} else {
|
||||
_, err = Templates.New(fiberName).Parse(string(f))
|
||||
}
|
||||
|
||||
return err
|
||||
},
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
func Template(t *testing.T, name string, data interface{}) string {
|
||||
func Template(t *testing.T, name string, data interface{}, layout ...string) string {
|
||||
buf := bytes.Buffer{}
|
||||
err := Templates.ExecuteTemplate(&buf, name, data)
|
||||
if err != nil {
|
||||
debugTemplates(t)
|
||||
t.Fatal("failed to render: ", err)
|
||||
}
|
||||
|
||||
err := viewEngine.Render(&buf, name, data, layout...)
|
||||
assert.NoError(t, err)
|
||||
return buf.String()
|
||||
}
|
||||
|
||||
func debugTemplates(t *testing.T) {
|
||||
for i, tmpl := range Templates.Templates() {
|
||||
t.Logf("template %d: name=%s", i, tmpl.Name())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
package templatetesting_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"git.sapphic.engineer/roleypoly/v4/templates/templatetesting"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestRender(t *testing.T) {
|
||||
for _, template := range templatetesting.Templates.Templates() {
|
||||
assert.NotPanicsf(t, func() {
|
||||
templatetesting.Template(t, template.Name(), nil)
|
||||
}, "rendering %s", template.Name())
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue