View Javadoc

1   /*
2    * $Id: InlineXQueryTransformerTestCase.java 20321 2010-11-24 15:21:24Z dfeist $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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          // disable this test
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          // all other comparisons are passed up
98          return super.compareResults(expected, result);
99      }
100 }