package web_test
import (
"context"
"strings"
"testing"
"github.com/qor5/web"
h "github.com/theplant/htmlgo"
"github.com/theplant/testingutils"
)
var cases = []struct {
name string
operation func(b *web.PageInjector)
expected string
}{
{
name: "title",
operation: func(b *web.PageInjector) {
b.Title("Hello")
},
expected: `
Hello
`,
},
{
name: "title and charset",
operation: func(b *web.PageInjector) {
b.Title("Hello")
b.Meta(web.MetaKey("charset"), "charset", "shiftjis")
},
expected: `Hello
`,
},
{
name: "title and charset double",
operation: func(b *web.PageInjector) {
b.Title("Hello")
b.Meta(web.MetaKey("charset"), "charset", "shiftjis")
b.Meta(web.MetaKey("charset"), "charset", "utf8")
b.MetaNameContent("keywords", "Hello")
},
expected: `Hello
`,
},
{
name: "script tag",
operation: func(b *web.PageInjector) {
b.HeadHTML(`
`)
},
expected: `
`,
},
}
func TestDefaultPageInjector(t *testing.T) {
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
var b web.PageInjector
c.operation(&b)
diff := testingutils.PrettyJsonDiff(
strings.TrimSpace(c.expected),
strings.TrimSpace(h.MustString(b.GetHeadHTMLComponent(), context.TODO())))
if len(diff) > 0 {
t.Error(diff)
}
})
}
}