Unit test for NameFields search document modifier.
This commit is contained in:
parent
7a12354430
commit
a6ce4374dc
1 changed files with 144 additions and 0 deletions
|
@ -0,0 +1,144 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
package edu.cornell.mannlib.vitro.webapp.search.documentBuilding;
|
||||
|
||||
import static edu.cornell.mannlib.vitro.webapp.search.VitroSearchTermNames.NAME_RAW;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import stubs.edu.cornell.mannlib.vitro.webapp.beans.IndividualStub;
|
||||
|
||||
import com.hp.hpl.jena.rdf.model.Model;
|
||||
import com.hp.hpl.jena.rdf.model.ModelFactory;
|
||||
import com.hp.hpl.jena.rdf.model.Statement;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
|
||||
import edu.cornell.mannlib.vitro.webapp.modules.searchEngine.SearchInputDocument;
|
||||
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceFactory;
|
||||
import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.RDFServiceFactorySingle;
|
||||
import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.jena.model.RDFServiceModel;
|
||||
import edu.cornell.mannlib.vitro.webapp.searchengine.base.BaseSearchInputDocument;
|
||||
|
||||
/**
|
||||
* TODO NameFields should add the values as separate objects.
|
||||
*/
|
||||
public class NameFieldsTest {
|
||||
private static final String INDIVIDUAL_URI = "http://mydomain.edu/individual/n3012";
|
||||
private static final String LABEL_PROPERTY_URI = "http://www.w3.org/2000/01/rdf-schema#label";
|
||||
private Model baseModel;
|
||||
private NameFields nameFields;
|
||||
private BaseSearchInputDocument doc;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
baseModel = ModelFactory.createDefaultModel();
|
||||
|
||||
doc = new BaseSearchInputDocument();
|
||||
|
||||
RDFServiceModel rdfService = new RDFServiceModel(baseModel);
|
||||
RDFServiceFactory rdfServiceFactory = new RDFServiceFactorySingle(
|
||||
rdfService);
|
||||
nameFields = new NameFields(rdfServiceFactory);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void nullIndividual() throws SkipIndividualException {
|
||||
SearchInputDocument expected = new BaseSearchInputDocument(doc);
|
||||
|
||||
assertResultingSearchDocument(null, expected);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void nullUri() throws SkipIndividualException {
|
||||
SearchInputDocument expected = new BaseSearchInputDocument(doc);
|
||||
|
||||
assertResultingSearchDocument(new IndividualStub(null), expected);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void foundNoLabels() throws SkipIndividualException {
|
||||
SearchInputDocument expected = new BaseSearchInputDocument(doc);
|
||||
expected.addField(NAME_RAW, "");
|
||||
|
||||
assertResultingSearchDocument(new IndividualStub(INDIVIDUAL_URI),
|
||||
expected);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void foundOneLabel() throws SkipIndividualException {
|
||||
baseModel.add(stmt(INDIVIDUAL_URI, LABEL_PROPERTY_URI, "label1"));
|
||||
|
||||
SearchInputDocument expected = new BaseSearchInputDocument(doc);
|
||||
expected.addField(NAME_RAW, "label1 ");
|
||||
|
||||
assertResultingSearchDocument(new IndividualStub(INDIVIDUAL_URI),
|
||||
expected);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void foundTwoLabels() throws SkipIndividualException {
|
||||
baseModel.add(stmt(INDIVIDUAL_URI, LABEL_PROPERTY_URI, "label1"));
|
||||
baseModel.add(stmt(INDIVIDUAL_URI, LABEL_PROPERTY_URI, "label2"));
|
||||
|
||||
SearchInputDocument expected = new BaseSearchInputDocument(doc);
|
||||
expected.addField(NAME_RAW, "label2 label1 ");
|
||||
|
||||
assertResultingSearchDocument(new IndividualStub(INDIVIDUAL_URI),
|
||||
expected);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Helper methods
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
private Statement stmt(String subjectUri, String propertyUri, String literal) {
|
||||
return baseModel.createStatement(baseModel.createResource(subjectUri),
|
||||
baseModel.createProperty(propertyUri),
|
||||
baseModel.createLiteral(literal));
|
||||
}
|
||||
|
||||
private void assertResultingSearchDocument(Individual ind,
|
||||
SearchInputDocument expected) throws SkipIndividualException {
|
||||
nameFields.modifyDocument(ind, doc);
|
||||
assertEquals(expected, doc);
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO Test plan
|
||||
*
|
||||
* <pre>
|
||||
* // also run SPARQL query to get rdfs:label values
|
||||
* String query = "SELECT ?label WHERE { " + "<" + ind.getURI() + "> "
|
||||
* + "<http://www.w3.org/2000/01/rdf-schema#label> ?label }";
|
||||
*
|
||||
* try {
|
||||
* RDFService rdfService = rsf.getRDFService();
|
||||
* BufferedReader stream = new BufferedReader(new InputStreamReader(
|
||||
* rdfService.sparqlSelectQuery(query, ResultFormat.CSV)));
|
||||
*
|
||||
* StringBuffer buffer = new StringBuffer();
|
||||
* String line;
|
||||
*
|
||||
* // throw out first line since it is just a header
|
||||
* stream.readLine();
|
||||
*
|
||||
* while ((line = stream.readLine()) != null) {
|
||||
* buffer.append(line).append(' ');
|
||||
* }
|
||||
*
|
||||
* log.debug("Adding labels for " + ind.getURI() + " \"" + buffer.toString()
|
||||
* + "\"");
|
||||
* doc.addField(term.NAME_RAW, buffer.toString());
|
||||
*
|
||||
* } catch (RDFServiceException e) {
|
||||
* log.error("could not get the rdfs:label for " + ind.getURI(), e);
|
||||
* } catch (IOException e) {
|
||||
* log.error("could not get the rdfs:label for " + ind.getURI(), e);
|
||||
* }
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue