Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@
import com.marklogic.test.unit.TestModule;
import com.marklogic.test.unit.TestResult;
import com.marklogic.test.unit.TestSuiteResult;
import org.jdom2.Namespace;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;

import java.util.ArrayList;
import java.util.List;

/**
Expand Down Expand Up @@ -74,6 +76,15 @@ protected XmlNode parseXml(String xml) {
return new XmlNode(xml, getNamespaceProvider().getNamespaces());
}

/**
* Read an XML document without making any assertions on its collections.
*
* @since 1.5.0
*/
protected XmlNode readXmlDocument(String uri) {
return readXmlDocument(uri, (String[]) null);
}

/**
* Read the XML document at the given URI and return an XmlNode for making assertions on the contents of the XML.
*
Expand All @@ -89,6 +100,23 @@ protected XmlNode readXmlDocument(String uri, String... expectedCollections) {
return new XmlNode(uri, xml, getNamespaceProvider().getNamespaces());
}

/**
* Read an XML document with the given namespaces included in the returned {@code XmlNode}.
*
* @since 1.5.0
*/
protected XmlNode readXmlDocument(String uri, Namespace... namespaces) {
String xml = getDatabaseClient().newXMLDocumentManager().read(uri, new StringHandle()).get();
List<Namespace> list = new ArrayList<>();
for (Namespace ns : getNamespaceProvider().getNamespaces()) {
list.add(ns);
}
for (Namespace ns : namespaces) {
list.add(ns);
}
return new XmlNode(uri, xml, list.toArray(new Namespace[0]));
}

/**
* Read the JSON document at the given URI and return a JsonNode.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,44 @@
import com.marklogic.junit5.MarkLogicNamespaceProvider;
import com.marklogic.junit5.NamespaceProvider;
import com.marklogic.junit5.XmlNode;
import org.jdom2.Namespace;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;

public class XmlNodeTest extends AbstractSpringMarkLogicTest {
class XmlNodeTest extends AbstractSpringMarkLogicTest {

private static final String TEST_URI = "/test/1.xml";

private boolean useCustomNamespaceProvider = true;

@Override
protected NamespaceProvider getNamespaceProvider() {
return new MarkLogicNamespaceProvider("m", "org:example");
return useCustomNamespaceProvider ?
new MarkLogicNamespaceProvider("m", "org:example") :
super.getNamespaceProvider();
}

@Test
public void test() {
getDatabaseClient().newXMLDocumentManager().write("/test/1.xml",
@BeforeEach
void setup() {
getDatabaseClient().newXMLDocumentManager().write(TEST_URI,
new StringHandle("" +
"<message xmlns='org:example'>" +
"<color important='true'>red</color>" +
"<color>blue</color>" +
"<size>medium</size>" +
"<parent><kid>hello</kid></parent>" +
"</message>"));
}

XmlNode xml = readXmlDocument("/test/1.xml");
@Test
public void test() {
XmlNode xml = readXmlDocument(TEST_URI);

assertEquals("/test/1.xml", xml.getUri());
assertEquals(TEST_URI, xml.getUri());
xml.assertElementValue("/m:message/m:size", "medium");
assertEquals("medium", xml.getElementValue("/m:message/m:size"));
assertEquals("true", xml.getAttributeValue("/m:message/m:color[. = 'red']", "important"));
Expand All @@ -47,4 +58,11 @@ public void test() {
xml.prettyPrint();
assertNotNull(xml.getPrettyXml());
}

@Test
void readWithNamespaces() {
useCustomNamespaceProvider = false;
XmlNode xml = readXmlDocument(TEST_URI, Namespace.getNamespace("m", "org:example"));
xml.assertElementValue("/m:message/m:size", "medium");
}
}