forked from yaitoo/xun
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfuncmap_test.go
More file actions
101 lines (86 loc) · 2.47 KB
/
Copy pathfuncmap_test.go
File metadata and controls
101 lines (86 loc) · 2.47 KB
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package xun
import (
"io"
"net/http"
"net/http/httptest"
"strings"
"testing"
"testing/fstest"
"text/template"
"github.com/stretchr/testify/require"
)
func TestFuncMap(t *testing.T) {
fsys := fstest.MapFS{
"pages/upper.html": &fstest.MapFile{
Data: []byte(`{{ToUpder "upper"}}`),
},
"pages/lower.html": &fstest.MapFile{
Data: []byte(`{{ToLower "Lower"}}`),
},
"pages/contains.html": &fstest.MapFile{
Data: []byte(`{{Contains "hello world" "world"}}`),
},
"pages/builtin/upper.html": &fstest.MapFile{
Data: []byte(`{{upper "upper"}}`),
},
"pages/builtin/lower.html": &fstest.MapFile{
Data: []byte(`{{lower "Lower"}}`),
},
"pages/builtin/join.html": &fstest.MapFile{
Data: []byte(`{{join " " "hello" "world"}}`),
},
}
mux := http.NewServeMux()
srv := httptest.NewServer(mux)
defer srv.Close()
app := New(WithMux(mux), WithFsys(fsys),
WithTemplateFunc("ToUpder", strings.ToUpper),
WithTemplateFuncMap(template.FuncMap{
"ToLower": strings.ToLower,
"Contains": strings.Contains,
}))
app.Start()
defer app.Close()
req, err := http.NewRequest("GET", srv.URL+"/upper", nil)
require.NoError(t, err)
resp, err := client.Do(req)
require.NoError(t, err)
defer resp.Body.Close()
buf, _ := io.ReadAll(resp.Body)
require.Equal(t, "UPPER", string(buf))
req, err = http.NewRequest("GET", srv.URL+"/lower", nil)
require.NoError(t, err)
resp, err = client.Do(req)
require.NoError(t, err)
defer resp.Body.Close()
buf, _ = io.ReadAll(resp.Body)
require.Equal(t, "lower", string(buf))
req, err = http.NewRequest("GET", srv.URL+"/contains", nil)
require.NoError(t, err)
resp, err = client.Do(req)
require.NoError(t, err)
defer resp.Body.Close()
buf, _ = io.ReadAll(resp.Body)
require.Equal(t, "true", string(buf))
req, err = http.NewRequest("GET", srv.URL+"/builtin/upper", nil)
require.NoError(t, err)
resp, err = client.Do(req)
require.NoError(t, err)
defer resp.Body.Close()
buf, _ = io.ReadAll(resp.Body)
require.Equal(t, "UPPER", string(buf))
req, err = http.NewRequest("GET", srv.URL+"/builtin/lower", nil)
require.NoError(t, err)
resp, err = client.Do(req)
require.NoError(t, err)
defer resp.Body.Close()
buf, _ = io.ReadAll(resp.Body)
require.Equal(t, "lower", string(buf))
req, err = http.NewRequest("GET", srv.URL+"/builtin/join", nil)
require.NoError(t, err)
resp, err = client.Do(req)
require.NoError(t, err)
defer resp.Body.Close()
buf, _ = io.ReadAll(resp.Body)
require.Equal(t, "hello world", string(buf))
}