1
0
html/lib_test.go

106 lines
1.6 KiB
Go
Raw Normal View History

2025-09-11 20:50:00 +02:00
package html_test
import (
"bytes"
2025-09-11 20:50:00 +02:00
"code.squareroundforest.org/arpio/html"
. "code.squareroundforest.org/arpio/html/tags"
"code.squareroundforest.org/arpio/notation"
2025-10-05 21:25:53 +02:00
"testing"
2025-09-11 20:50:00 +02:00
)
func TestLib(t *testing.T) {
t.Run("templated tag", func(t *testing.T) {
type (
member struct {
name string
level int
}
team struct {
name string
rank int
members []member
}
)
memberHTML := html.FromTemplate(
2025-09-12 01:58:50 +02:00
func(m member) html.Tag {
2025-09-11 20:50:00 +02:00
return Li(
Div("Name: ", m.name),
Div("Level: ", m.level),
)
},
)
teamHTML := html.FromTemplate(
2025-09-12 01:58:50 +02:00
func(t team) html.Tag {
2025-09-11 20:50:00 +02:00
return Div(
H3(t.name),
P("Rank: ", t.rank),
2025-09-12 01:58:50 +02:00
Ul(html.MapChildren(t.members, memberHTML)...),
2025-09-11 20:50:00 +02:00
)
},
)
myTeam := team{
name: "Foo",
rank: 3,
members: []member{{
name: "Bar",
level: 4,
}, {
name: "Baz",
level: 1,
}, {
name: "Qux",
level: 4,
}},
}
var b bytes.Buffer
if err := html.RenderIndent(&b, html.Indentation{Indent: "\t"}, teamHTML(myTeam)); err != nil {
2025-09-11 20:50:00 +02:00
t.Fatal(err)
}
const expect = `<div>
<h3>Foo</h3>
<p>Rank: 3</p>
2025-09-11 20:50:00 +02:00
<ul>
<li>
<div>
Name: Bar
</div>
<div>
Level: 4
</div>
</li>
<li>
<div>
Name: Baz
</div>
<div>
Level: 1
</div>
</li>
<li>
<div>
Name: Qux
</div>
<div>
Level: 4
</div>
</li>
</ul>
</div>`
if b.String() != expect {
notation.Println([]byte(expect)[48:96])
notation.Println(b.Bytes()[48:96])
2025-09-11 20:50:00 +02:00
t.Fatal(b.String())
}
})
t.Run("ampty attributes", func(t *testing.T) {
})
2025-09-11 20:50:00 +02:00
}