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