package edu.ucsb.nceas.metacat.index.resourcemap; import static org.junit.Assert.assertTrue; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.dataone.cn.indexer.parser.IDocumentSubprocessor; import org.dataone.cn.indexer.solrhttp.SolrDoc; import org.dataone.cn.indexer.solrhttp.SolrElementField; import org.junit.Test; import edu.ucsb.nceas.metacat.index.SolrIndex; import edu.ucsb.nceas.metacat.index.SolrIndexIT; public class ResourceMapSubprocessorIT { /** * Test the case that the resource map contains a component which is not int the solr index server. * @throws Exception */ @Test public void testProcessDocument() throws Exception { //Settings.getConfiguration().setProperty("dataone.hazelcast.configFilePath", "../lib/hazelcast.xml"); String id = "resourceMap_urn:uuid:04780847-6082-455b-9831-22269c9ec0a5"; InputStream is = getResourceMapDoc(); List sysSolrFields = new ArrayList(); SolrDoc indexDocument = new SolrDoc(sysSolrFields); Map docs = new HashMap(); docs.put(id, indexDocument); ResourceMapSubprocessor processor = getResourceMapSubprocessor(); try { processor.processDocument(id, docs, is); assertTrue("ResourceMapProcessor should throw an exception because the resource map has a component which doesn't exist.", false); } catch (Exception e) { assertTrue("ResourceMapProcessor should throw a ResourceMapException because the resource map has a component which doesn't exist.", e instanceof ResourceMapException); //System.out.println("the message is "+e.getMessage()); } } /* * Get the document format of the test resource map file */ private InputStream getResourceMapDoc() throws Exception{ File file = new File("src/test/resources/resorcemap-example"); InputStream is = new FileInputStream(file); return is; } /* * Get the ResourceMapSubprocessor */ private ResourceMapSubprocessor getResourceMapSubprocessor() throws Exception { ResourceMapSubprocessor resorceMapprocessor = null; SolrIndex solrIndex = SolrIndexIT.generateSolrIndex(); List processors = solrIndex.getSubprocessors(); for(IDocumentSubprocessor processor : processors) { if(processor instanceof ResourceMapSubprocessor) { resorceMapprocessor = (ResourceMapSubprocessor) processor; } } return resorceMapprocessor; } }