Package org.fcrepo.server.utilities

Source Code of org.fcrepo.server.utilities.DCFieldsTest

/* The contents of this file are subject to the license and copyright terms
* detailed in the license directory at the root of the source tree (also
* available online at http://fedora-commons.org/license/).
*/
package org.fcrepo.server.utilities;

import java.io.ByteArrayInputStream;

import java.util.HashMap;
import java.util.Map;

import org.custommonkey.xmlunit.NamespaceContext;
import org.custommonkey.xmlunit.SimpleNamespaceContext;
import org.custommonkey.xmlunit.XMLTestCase;
import org.custommonkey.xmlunit.XMLUnit;
import org.custommonkey.xmlunit.XpathEngine;

import org.junit.Test;

import org.w3c.dom.Document;

import org.fcrepo.server.utilities.DCFields;

import static org.fcrepo.common.Constants.DC;
import static org.fcrepo.common.Constants.OAI_DC;



/**
*
* @author Edwin Shin
* @since 3.0.1
* @version $Id$
*/
public class DCFieldsTest extends XMLTestCase {
    private final static String dcWithXmlLang;
    private XpathEngine engine;

    static {
        StringBuilder sb = new StringBuilder();
        sb.append("<oai_dc:dc xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" ");
        sb.append("    xmlns:dc=\"http://purl.org/dc/elements/1.1/\">");
        sb.append("<dc:subject xml:lang=\"da\">Tidsinterval</dc:subject>");
        sb.append("<dc:subject xml:lang=\"en\">Time interval</dc:subject>");
        sb.append("<dc:subject>interval</dc:subject>");
        sb.append("</oai_dc:dc> ");
        dcWithXmlLang = sb.toString();
    }

    @Override
    public void setUp() throws Exception {
        Map<String, String> nsMap = new HashMap<String, String>();
        nsMap.put(OAI_DC.prefix, OAI_DC.uri);
        nsMap.put(DC.prefix, DC.uri);
        NamespaceContext ctx = new SimpleNamespaceContext(nsMap);
        engine = XMLUnit.newXpathEngine();
        engine.setNamespaceContext(ctx);
    }

    @Test
    public void testDCFieldsInputStream() throws Exception {
        DCFields dc;
        Document dcXML;

        dc = new DCFields(new ByteArrayInputStream(dcWithXmlLang.getBytes("UTF-8")));
        dcXML = XMLUnit.buildControlDocument(dc.getAsXML());
        assertEquals("Time interval",
                     engine.evaluate("//dc:subject[@xml:lang='en']", dcXML));
        assertEquals("Tidsinterval",
                     engine.evaluate("//dc:subject[@xml:lang='da']", dcXML));

        dc = new DCFields();
        dcXML = XMLUnit.buildControlDocument(dc.getAsXML());
        assertEquals("Expected empty element",
                     "",
                     engine.evaluate("//oai_dc:dc", dcXML).trim());
    }

}
TOP

Related Classes of org.fcrepo.server.utilities.DCFieldsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.