1
2
3
4
5
6
7
8
9
10
11 package org.mule.transformers.xml.xquery;
12
13 import org.mule.api.transformer.Transformer;
14 import org.mule.module.xml.transformer.XQueryTransformer;
15 import org.mule.transformer.AbstractTransformerTestCase;
16 import org.mule.transformer.types.DataTypeFactory;
17 import org.mule.util.IOUtils;
18
19 import org.custommonkey.xmlunit.XMLUnit;
20 import org.w3c.dom.Document;
21
22 public class InlineXQueryTransformerTestCase extends AbstractTransformerTestCase
23 {
24
25 private String srcData;
26 private String resultData;
27
28 @Override
29 protected void doSetUp() throws Exception
30 {
31 XMLUnit.setIgnoreWhitespace(true);
32 srcData = IOUtils.getResourceAsString("cd-catalog.xml", getClass());
33 resultData = IOUtils.getResourceAsString("cd-catalog-result.xml", getClass());
34 }
35
36 @Override
37 public Transformer getTransformer() throws Exception
38 {
39 XQueryTransformer transformer = new XQueryTransformer();
40 transformer.setXquery(
41 "declare variable $document external;\n" +
42 "<cd-listings> {\n" +
43 " for $cd in $document/catalog/cd\n" +
44 " return <cd-title>{data($cd/title)}</cd-title>\n" +
45 "} </cd-listings>");
46 transformer.setReturnDataType(DataTypeFactory.STRING);
47 transformer.setMuleContext(muleContext);
48 transformer.initialise();
49 return transformer;
50 }
51
52 @Override
53 public Transformer getRoundTripTransformer() throws Exception
54 {
55 return null;
56 }
57
58 @Override
59 public void testRoundtripTransform() throws Exception
60 {
61
62 }
63
64 @Override
65 public Object getTestData()
66 {
67 return srcData;
68 }
69
70 @Override
71 public Object getResultData()
72 {
73 return resultData;
74 }
75
76 @Override
77 public boolean compareResults(Object expected, Object result)
78 {
79 if (expected instanceof Document && result instanceof Document)
80 {
81 return XMLUnit.compareXML((Document)expected, (Document)result).similar();
82 }
83 else if (expected instanceof String && result instanceof String)
84 {
85 try
86 {
87 String expectedString = this.normalizeString((String)expected);
88 String resultString = this.normalizeString((String)result);
89 return XMLUnit.compareXML(expectedString, resultString).similar();
90 }
91 catch (Exception ex)
92 {
93 return false;
94 }
95 }
96
97
98 return super.compareResults(expected, result);
99 }
100 }