forked from grails/grails-core
/
RenderDynamicMethodTests.groovy
146 lines (121 loc) · 4.17 KB
/
RenderDynamicMethodTests.groovy
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
146
package org.codehaus.groovy.grails.web.servlet.mvc
import org.codehaus.groovy.grails.web.sitemesh.GrailsLayoutDecoratorMapper
class RenderDynamicMethodTests extends AbstractGrailsControllerTests {
private testCtrl
protected void onSetUp() {
gcl.parseClass("grails.json.legacy.builder=false", "Config")
}
@Override
protected Collection<Class> getControllerClasses() {
[RenderDynamicMethodTestController]
}
protected void setUp() {
super.setUp()
testCtrl = ga.getControllerClass(RenderDynamicMethodTestController.name).newInstance()
}
void testRenderTextWithLayout() {
testCtrl.renderTextWithLayout()
assertEquals "text/html;charset=utf-8", response.contentType
assertEquals "foo", response.contentAsString
assert "bar" == request.getAttribute(GrailsLayoutDecoratorMapper.LAYOUT_ATTRIBUTE)
}
void testRenderView() {
testCtrl.renderView()
assertEquals '/renderDynamicMethodTest/foo', testCtrl.modelAndView.viewName
assertEquals 'text/html;charset=utf-8', response.contentType
}
void testRenderText() {
testCtrl.renderText()
assertEquals "text/html;charset=utf-8", response.contentType
assertEquals "text", response.contentAsString
}
void testRenderStreamCharBuffer() {
testCtrl.renderStreamCharBuffer()
assertEquals "text/html;charset=utf-8", response.contentType
assertEquals "text", response.contentAsString
}
void testRenderGString() {
testCtrl.renderGString()
assertEquals "text/html;charset=utf-8", response.contentType
assertEquals "text", response.contentAsString
}
void testRenderTextWithContentType() {
testCtrl.renderTextWithContentType()
assertEquals "text/xml;charset=utf-16", response.contentType
assertEquals "<foo>bar</foo>", response.contentAsString
}
void testRenderTextWithContentTypeAndCharset() {
testCtrl.renderTextWithContentTypeAndCharset()
assertEquals "text/xml;charset=utf-16", response.contentType
assertEquals "<foo>bar</foo>", response.contentAsString
}
void testRenderXml() {
testCtrl.renderXml()
assertEquals "text/xml;charset=utf-8", response.contentType
assertEquals "<foo><bar>hello</bar></foo>", response.contentAsString
}
void testRenderJSON() {
testCtrl.renderJSON()
assertEquals "application/json;charset=UTF-8", response.contentType
assertEquals '{"foo":[{"bar":"hello"}]}', response.contentAsString
}
void testStatusAndText() {
testCtrl.renderStatusAndText()
assertEquals 'five oh three', response.contentAsString
assertEquals 503, response.status
}
void testStatusOnly() {
testCtrl.renderStatusOnly()
assertEquals '', response.contentAsString
assertEquals 404, response.status
}
}
class RenderDynamicMethodTestController {
def renderText = {
render "text"
}
def renderStreamCharBuffer = {
def writer = new org.codehaus.groovy.grails.web.pages.FastStringWriter()
writer.write("text")
render writer.buffer
}
def renderTextWithLayout = {
render text:"foo", layout:"bar"
}
def renderGString = {
render "${'te' + 'xt'}"
}
def renderTextWithContentType = {
render(text:"<foo>bar</foo>",contentType:"text/xml", encoding:"utf-16")
}
def renderTextWithContentTypeAndCharset = {
render(text:"<foo>bar</foo>",contentType:"text/xml;charset=utf-16")
}
def renderXml = {
render(contentType:"text/xml") {
foo {
bar("hello")
}
}
}
def renderJSON = {
render(contentType:"application/json") {
foo = [ { bar = "hello" } ]
}
}
def renderView ={
render(view:'foo')
}
def renderXmlView = {
render(view:'foo', contentType:'text/xml')
}
def renderXmlUtf16View = {
render(view:'foo', contentType:'text/xml', encoding:'utf-16')
}
def renderStatusAndText = {
render(status: 503, text: 'five oh three')
}
def renderStatusOnly = {
render(status: 404)
}
}