/
JavascriptTagLibResourcesTests.groovy
80 lines (60 loc) · 2.28 KB
/
JavascriptTagLibResourcesTests.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
package org.codehaus.groovy.grails.web.taglib
import org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib
class JavascriptTagLibResourcesTests extends AbstractGrailsTagTests {
def replaceMetaClass(o) {
def old = o.metaClass
// Create a new EMC for the class and attach it.
def emc = new ExpandoMetaClass(o.getClass(), true, true)
emc.initialize()
o.metaClass = emc
return old
}
void onInitMockBeans() {
grailsApplication.parentContext.registerMockBean('grailsResourceProcessor', [something:'value'])
}
/**
* Tests that the INCLUDED_JS_LIBRARIES attribute is set correctly without resources plugin
*/
void testLibraryAttributeSetWhenResourcesPluginInstalled() {
def template = '<g:javascript library="testing"/>'
def taglib = appCtx.getBean(JavascriptTagLib.name)
taglib.hasResourceProcessor = true
def oldMC = replaceMetaClass(taglib)
def requiredModule
// Dummy r.resource impl
def mockRes = [
require: { attrs -> requiredModule = attrs.module; return '' }
]
taglib.metaClass.getR = { -> mockRes }
try {
def result = applyTemplate(template, [:])
println "Result: $result"
assertEquals(['testing'], request.getAttribute("org.codehaus.grails.INCLUDED_JS_LIBRARIES"))
assertEquals 0, result.trim().size()
assertEquals 'testing', requiredModule
} finally {
taglib.metaClass = oldMC
}
}
/**
* Tests that inline script blocks delegate to r:script
*/
void testScriptTagIsUsedWhenResourcesPluginInstalled() {
def template = '<g:javascript>var i = 999;</g:javascript>'
def taglib = appCtx.getBean(JavascriptTagLib.name)
taglib.hasResourceProcessor = true
def oldMC = replaceMetaClass(taglib)
def scriptFrag
// Dummy r.script impl
def mockRes = [
script: { attrs, body -> scriptFrag = body(); return '' }
]
taglib.metaClass.getR = { -> mockRes }
try {
def result = applyTemplate(template, [:])
assertEquals 'var i = 999;', scriptFrag
} finally {
taglib.metaClass = oldMC
}
}
}