GRAILS-1019: Allowing expressions to be used with the 'disabled' attribute for g...
[grails.git] / test / groovy / org / codehaus / groovy / grails / web / converters / XMLConverterTests.groovy
blob83cd4ae06d29478219651548b367f8222cc54f00
1 /**
2 * Tests for the XML converter
4 * @author Graeme Rocher
5 * @since 0.6
7 * Created: Aug 3, 2007
8 * Time: 6:50:09 PM
9 *
12 package org.codehaus.groovy.grails.web.converters
14 import org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerTests
15 import net.sf.cglib.proxy.Enhancer
16 import java.lang.reflect.Method
17 import net.sf.cglib.proxy.MethodProxy
18 import net.sf.cglib.proxy.MethodInterceptor
20 class XMLConverterTests extends AbstractGrailsControllerTests {
22 void testXMLConverter() {
23 def c = ga.getControllerClass("RestController").newInstance()
25 c.test()
27 assertEquals( '''<?xml version="1.0" encoding="utf-8"?><book>
28 <author>Stephen King</author>
29 <title>The Stand</title>
30 </book>''', response.contentAsString)
33 void testProxiedDomainClassWithXMLConverter() {
34 Enhancer e = new Enhancer();
36 e.superclass = ga.getDomainClass("Book").clazz
37 e.callback = { obj, Method method, Object[] args,
38 MethodProxy proxy ->
39 proxy.invokeSuper obj, args
41 } as MethodInterceptor
43 def proxy = e.create()
44 proxy.title = "The Stand"
45 proxy.author = "Stephen King"
46 def c = ga.getControllerClass("RestController").newInstance()
48 c.params.b = proxy
50 c.testProxy()
51 // todo: Get Grails' Xstream stuff to deal with CGlib proxies
52 assertEquals( '''<?xml version="1.0" encoding="utf-8"?><CGLIB-enhanced-proxy>
53 <author>Stephen King</author>
54 <title>The Stand</title>
55 </CGLIB-enhanced-proxy>''', response.contentAsString)
58 void onSetUp() {
59 gcl.parseClass('''
60 import grails.converters.*
62 class RestController {
63 def test = {
64 def b = new Book(title:'The Stand', author:'Stephen King')
65 render b as XML
68 def testProxy = {
69 render params.b as XML
73 class Book {
74 Long id
75 Long version
76 String title
77 String author
81 ''')