package eu.europeana.cloud.service.dps.storm.transform.text.oai;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author Pavel Kefurt <Pavel.Kefurt@gmail.com>
*/
public class DcExtractionTest
{
private final String rightFileContent = "/rightDcTestFile.xml";
private final String wrongFileContent1 = "/wrongDcTestFile.xml";
private final String wrongFileContent2 = "/wrongDcXmlDocument.xml";
private final String wrongFileContent3 = "/wrongXmlDocument.xml";
private final String wrongFileContent4 = "/Koala.jpg";
@Test
public void readRightFileWithDefaultFiealdsTest()
{
DcExtractor extractor = new DcExtractor();
InputStream is = getClass().getResourceAsStream(rightFileContent);
String extracted = extractor.extractText(is);
String expectedJson = "{\"date\":\"2012-10-30\",\"creator\":\"Creator\",\"format\":\"application/pdf\",\"description\":\"Dextription\",\"publisher\":\"Publisher\",\"language\":\"eng\",\"title\":\"Title\",\"type\":[\"Type1\",\"Type2\"]}";
JsonElement expectedObject = new JsonParser().parse(expectedJson);
JsonElement extractedObject = new JsonParser().parse(extracted);
assertEquals(expectedObject, extractedObject);
}
@Test
public void readRightFileWithCustomFieldsTest()
{
Map<String, String> fields = new HashMap<>();
fields.put("myDate", "dc:date");
fields.put("myCreator", "dc:creator");
fields.put("format", "dc:format");
DcExtractor extractor = new DcExtractor(fields);
InputStream is = getClass().getResourceAsStream(rightFileContent);
String extracted = extractor.extractText(is);
String expectedJson = "{\"myDate\":\"2012-10-30\",\"myCreator\":\"Creator\",\"format\":\"application/pdf\"}";
JsonElement expectedObject = new JsonParser().parse(expectedJson);
JsonElement extractedObject = new JsonParser().parse(extracted);
assertEquals(expectedObject, extractedObject);
}
@Test
public void readRightFileWithWrongCustomFieldsTest()
{
Map<String, String> fields = new HashMap<>();
fields.put("myDate", "dc:date");
fields.put("myCreator", "creator");
fields.put("format", "dc:format");
fields.put("types", "type");
fields.put("notExist", "dc:somethingExtra__");
DcExtractor extractor = new DcExtractor(fields);
InputStream is = getClass().getResourceAsStream(rightFileContent);
String extracted = extractor.extractText(is);
String expectedJson = "{\"myDate\":\"2012-10-30\",\"format\":\"application/pdf\"}";
JsonElement expectedObject = new JsonParser().parse(expectedJson);
JsonElement extractedObject = new JsonParser().parse(extracted);
assertEquals(expectedObject, extractedObject);
}
@Test
public void readWrongDcFileTest()
{
DcExtractor extractor = new DcExtractor();
InputStream is = getClass().getResourceAsStream(wrongFileContent1);
String extracted = extractor.extractText(is);
String expectedJson = "{\"creator\":\"Creator\",\"format\":\"application/pdf\",\"description\":\"Dextription\",\"type\":[\"Type2\"]}";
JsonElement expectedObject = new JsonParser().parse(expectedJson);
JsonElement extractedObject = new JsonParser().parse(extracted);
assertEquals(expectedObject, extractedObject);
}
@Test
public void readWrongDcDocumentTest()
{
DcExtractor extractor = new DcExtractor();
InputStream is = getClass().getResourceAsStream(wrongFileContent2);
String extracted = extractor.extractText(is);
assertNull(extracted);
}
@Test
public void readWrongXmlDocumentTest()
{
DcExtractor extractor = new DcExtractor();
InputStream is = getClass().getResourceAsStream(wrongFileContent3);
String extracted = extractor.extractText(is);
assertNull(extracted);
}
@Test
public void readNonxmlDocumentTest()
{
DcExtractor extractor = new DcExtractor();
InputStream is = getClass().getResourceAsStream(wrongFileContent4);
String extracted = extractor.extractText(is);
assertNull(extracted);
}
@Test
public void readNullTest()
{
DcExtractor extractor = new DcExtractor();
String extracted = extractor.extractText(null);
assertNull(extracted);
}
}