package org.gbif.occurrence.ws.resources.provider;
import org.gbif.dwc.terms.DwcTerm;
import org.gbif.dwc.terms.TermFactory;
import org.gbif.occurrence.ws.provider.DwcXMLDocument;
import javax.xml.parsers.ParserConfigurationException;
import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import static junit.framework.TestCase.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
*
* Test for {@link DwcXMLDocument} behavior.
*
*/
public class DwcXMLDocumentTest {
@Test
public void testDwcXMLDocumentTryAppend() throws ParserConfigurationException {
DwcXMLDocument doc = DwcXMLDocument.newInstance(DwcTerm.Occurrence);
assertTrue(doc.tryAppend(DwcTerm.behavior, "calm"));
// This UnknownTerm should be ignored
assertFalse(doc.tryAppend(TermFactory.instance().findTerm("myTerm"), "my term value"));
Document xmlDoc = doc.getDocument();
assertEquals(1, xmlDoc.getChildNodes().getLength());
Node occurrenceElement = xmlDoc.getChildNodes().item(0);
assertEquals("Occurrence element has only one child", 1, occurrenceElement.getChildNodes().getLength());
Node firstChild = occurrenceElement.getFirstChild();
assertEquals(DwcTerm.PREFIX + ":" + DwcTerm.behavior.simpleName(), firstChild.getNodeName());
assertEquals("calm", firstChild.getTextContent());
}
}