-
Notifications
You must be signed in to change notification settings - Fork 0
/
template_test.go
54 lines (48 loc) · 1.04 KB
/
template_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package otium
import (
"bytes"
"testing"
"github.com/go-quicktest/qt"
)
func TestRender(t *testing.T) {
type testCase struct {
name string
text string
bag map[string]Variable
want string
}
run := func(t *testing.T, tc testCase) {
var buf bytes.Buffer
err := renderTemplate(&buf, tc.text, tc.bag)
qt.Assert(t, qt.IsNil(err))
qt.Assert(t, qt.Equals(buf.String(), tc.want))
}
testCases := []testCase{
{
name: "uppercase",
text: "Hello {{.Name}}!",
bag: map[string]Variable{"Name": {val: "Joe"}},
want: "Hello Joe!",
},
{
name: "lowercase",
text: "Hello {{.name}}!",
bag: map[string]Variable{"name": {val: "Joe"}},
want: "Hello Joe!",
},
{
// Decision point.
// Default Go behavior is to keep going and just to write
// <no value>. Is this OK or do we want to return an error?
name: "no value",
text: "Hello {{.Name}}!",
bag: map[string]Variable{},
want: "Hello <no value>!",
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
run(t, tc)
})
}
}