]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
DRYD-23: Implement test framework for XmlToJsonStreamConverter.
authorRay Lee <rhlee@berkeley.edu>
Thu, 28 Jul 2016 04:45:11 +0000 (21:45 -0700)
committerRay Lee <rhlee@berkeley.edu>
Wed, 3 Aug 2016 18:09:45 +0000 (11:09 -0700)
services/common/src/test/java/org/collectionspace/services/common/xmljson/test/XmlToJsonStreamConverterTest.java [new file with mode: 0644]
services/common/src/test/resources/test-data/xmljson/record.json [new file with mode: 0644]
services/common/src/test/resources/test-data/xmljson/record.xml [new file with mode: 0644]

diff --git a/services/common/src/test/java/org/collectionspace/services/common/xmljson/test/XmlToJsonStreamConverterTest.java b/services/common/src/test/java/org/collectionspace/services/common/xmljson/test/XmlToJsonStreamConverterTest.java
new file mode 100644 (file)
index 0000000..d872ebf
--- /dev/null
@@ -0,0 +1,51 @@
+package org.collectionspace.services.common.xmljson.test;
+
+import static org.testng.Assert.assertEquals;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.commons.io.output.ByteArrayOutputStream;
+import org.codehaus.jackson.JsonFactory;
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.JsonParseException;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.collectionspace.services.common.xmljson.XmlToJsonStreamConverter;
+import org.testng.annotations.Test;
+
+public class XmlToJsonStreamConverterTest {
+    public final String FILE_PATH = "test-data/xmljson/";
+    
+    private ObjectMapper mapper = new ObjectMapper();
+    private JsonFactory jsonFactory = mapper.getJsonFactory();
+    
+    @Test
+    public void testConvert() throws XMLStreamException, JsonParseException, IOException {
+        testConvert("record.xml", "record.json");
+    }
+    
+    private void testConvert(String xmlFileName, String jsonFileName) throws XMLStreamException, JsonParseException, IOException {
+        ClassLoader classLoader = getClass().getClassLoader();
+        File xmlFile = new File(classLoader.getResource(FILE_PATH + xmlFileName).getFile());
+        File jsonFile = new File(classLoader.getResource(FILE_PATH + jsonFileName).getFile());
+        
+        FileInputStream in = new FileInputStream(xmlFile);
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        
+        XmlToJsonStreamConverter converter = new XmlToJsonStreamConverter(in, out);
+        converter.convert();
+        
+        JsonNode actualJson = parseJsonStream(out.toInputStream());
+        JsonNode expectedJson = parseJsonStream(new FileInputStream(jsonFile));
+        
+        assertEquals(actualJson, expectedJson);
+    }
+    
+    private JsonNode parseJsonStream(InputStream in) throws JsonParseException, IOException {
+        return jsonFactory.createJsonParser(in).readValueAsTree();
+    }
+}
diff --git a/services/common/src/test/resources/test-data/xmljson/record.json b/services/common/src/test/resources/test-data/xmljson/record.json
new file mode 100644 (file)
index 0000000..0d72732
--- /dev/null
@@ -0,0 +1,3 @@
+{ 
+  "foo": "bar"
+}
diff --git a/services/common/src/test/resources/test-data/xmljson/record.xml b/services/common/src/test/resources/test-data/xmljson/record.xml
new file mode 100644 (file)
index 0000000..58ca7f6
--- /dev/null
@@ -0,0 +1,47 @@
+<document name="examples">
+    <ns:collectionspace_core xmlns:ns="http://collectionspace.org/collectionspace_core/">
+        <tenantId>123</tenantId>
+        <workflowState>project</workflowState>
+        <createdAt>2016-07-27T04:31:38.290Z</createdAt>
+        <createdBy>someone@collectionspace.org</createdBy>
+        <updatedAt>2016-07-27T04:31:38.648Z</updatedAt>
+        <updatedBy>user@collectionspace.org</updatedBy>
+        <uri>/examples/2ece74b2-2053-458c-a252</uri>
+    </ns:collectionspace_core>
+    <ns:examples_common xmlns:ns="http://collectionspace.org/services/example">
+        <scalar>This is a scalar field value</scalar>
+        <struct>
+            <field1>A value in a structured field</field1>
+            <field2>Another structured field value</field2>
+            <nestedstruct>
+                <id>123abc</id>
+                <description>A nested structured field value</description>
+            </nestedstruct>
+        </struct>
+        <repeat>
+            <item>repeating scalar field value 1</item>
+            <item>repeating scalar field value 2</item>
+            <item>repeating scalar field value 3</item>
+            <item>repeating scalar field value 4</item>
+        </repeat>
+        <repeatstruct>
+            <innerstruct>
+                <name>Big Bird</name>
+                <color>yellow</color>
+            </innerstruct>
+            <innerstruct>
+                <name>Cookie Monster</name>
+                <color>blue</color>
+            </innerstruct>
+            <innerstruct>
+                <name>Elmo</name>
+                <age>3</age>
+                <nestedrepeat>
+                    <nrval>a</nrval>
+                    <nrval>b</nrval>
+                    <nrval>c</nrval>
+                </nestedrepeat>
+            </innerstruct>
+        </repeatstruct>
+    </ns:examples_common>
+</document>