-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathzgener_echo_test.go
145 lines (119 loc) · 3.67 KB
/
zgener_echo_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
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
package zgener
import (
// "encoding/json"
"fmt"
"io"
"io/ioutil"
"net/http"
"net/http/httptest"
"strings"
"testing"
"github.com/labstack/echo"
Engine "github.com/labstack/echo/engine/standard"
//"github.com/labstack/echo/middleware"
"github.com/stretchr/testify/assert"
)
type Template struct {
ZGOBJ *ZGener
}
func (t *Template) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
return t.ZGOBJ.Render(w, name, "World") //Error when change data ZGenerWrapper{Data:
}
func RenderToHtml(c echo.Context) error {
return c.Render(http.StatusOK, "TestForm", "World")
}
/*
TODO : Testing for N loop to the actual Echo server that binding active port
*/
func TestRenderFormJSON_EchoServer(t *testing.T) {
fmt.Println(SharedFormatDetail, "Render from Echo Framework/Server!!!")
WebGenerator := New()
if WebGenerator == nil {
t.Errorf("Failed to CREATE new obj !!!")
}
//DONE : Need error handler for next commit
err := WebGenerator.LoadForm("TestForm", JSON_FILE)
if err != nil {
t.Error(err)
}
//load template file (currently just HTML template)
//TODO : template must be dynamic, not just HTML template
err = WebGenerator.LoadTemplate("TestForm", TEMPLATE_FILE)
if err != nil {
t.Error(err)
}
//NOTE :cannot testing strings.Compare(rendered,`<!DOCTYPE html>...
// so we direct open template file and replace {{.}} to expected value
data, err := ioutil.ReadFile(TEMPLATE_FILE)
string_data := string(data)
//replace template manually for string comparison
string_data = strings.Replace(string_data, "{{.}}", "World", -1)
//// Setup
e := echo.New()
//must set the template
temp := &Template{WebGenerator}
e.GET("/", RenderToHtml)
e.SetRenderer(temp)
//create request simulation
req := new(http.Request)
rec := httptest.NewRecorder()
c := e.NewContext(Engine.NewRequest(req, e.Logger()), Engine.NewResponse(rec, e.Logger()))
c.SetPath("/")
//// Assertions
if assert.NoError(t, RenderToHtml(c)) {
assert.Equal(t, http.StatusOK, rec.Code)
assert.Equal(t, string_data, rec.Body.String())
t.Logf("Output : ", rec.Body.String())
}
}
type TemplateGenerator struct {
ZGOBJ *ZGener
}
func (t *TemplateGenerator) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
//create object
TestObj := Hello{}
//TODO : get echo.context path or url parameter for action
t.ZGOBJ.SetCurrentAction(name, "insert")
//render
err := t.ZGOBJ.Render(w, name, ZGenerWrapper{Data: TestObj})
if err != nil {
fmt.Println(`error = `, err.Error())
}
return err
}
/*
func TestRenderFormFieldsInTemplate_EchoServer(t *testing.T) {
fmt.Println(SharedFormatDetail, `Prints All Fields Has Been Read From JSON
to the Template With Echo Server :D`)
WebGenerator := New()
if WebGenerator == nil {
t.Errorf("Failed to CREATE new obj !!!")
}
//DONE : Need error handler for next commit
err := WebGenerator.LoadForm("TestForm", JSON_FILE)
if err != nil {
t.Error(err)
}
//load template file (currently just HTML template)
//TODO : template must be dynamic, not just HTML template
err = WebGenerator.LoadTemplate("TestForm", TEMPLATE_FILE_BUTTONS)
if err != nil {
t.Error(err)
}
//NOTE :cannot testing strings.Compare(rendered,`<!DOCTYPE html>...
// so we direct open template file and replace {{.}} to expected value
data, err := ioutil.ReadFile(TEMPLATE_FILE)
string_data := string(data)
//replace template manually for string comparison
string_data = strings.Replace(string_data, "{{.}}", "World", -1)
//// Setup
e := echo.New()
e.Use(middleware.Logger())
//e.Use(middleware.Recover())
//must set the template
temp := &TemplateGenerator{WebGenerator}
e.GET("/", RenderToHtml)
e.SetRenderer(temp)
e.Run(Engine.New(":80"))
}
*/