package pl.edu.icm.saos.search.indexing;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.SolrInputField;
public class SolrDocumentAssert {
private SolrDocumentAssert() { }
//------------------------ LOGIC --------------------------
public static void assertNoFields(SolrInputDocument doc) {
Collection<String> fieldNames = doc.getFieldNames();
assertTrue(fieldNames.isEmpty());
}
public static void assertSingleField(SolrInputDocument doc, String fieldName, Object fieldValue) {
List<String> fieldNames = new ArrayList<String>(doc.getFieldNames());
assertEquals(1, fieldNames.size());
assertEquals(fieldName, fieldNames.get(0));
assertEquals(fieldValue, doc.getFieldValue(fieldName));
}
public static void assertFieldValue(SolrInputDocument doc, String fieldName, String fieldValue) {
Collection<String> fieldNames = doc.getFieldNames();
assertTrue(fieldNames.contains(fieldName));
SolrInputField field = doc.getField(fieldName);
assertEquals(1, field.getValueCount());
assertEquals(fieldValue, field.getValue());
}
public static void assertFieldValues(SolrInputDocument doc, SolrInputField expectedValues) {
String expectedFieldName = expectedValues.getName();
Collection<String> fieldNames = doc.getFieldNames();
assertTrue("Document doesn't contain field with name " + expectedFieldName, fieldNames.contains(expectedFieldName));
SolrInputField field = doc.getField(expectedFieldName);
assertEquals(expectedValues.getValueCount(), field.getValueCount());
Collection<Object> values = field.getValues();
for (Object expectedVal : expectedValues.getValues()) {
assertTrue("Field with name " + expectedFieldName + " doesn't contain value " + expectedVal, values.contains(expectedVal));
}
}
public static void assertFieldValues(SolrInputDocument doc, String fieldName, Object ... fieldValues) {
Collection<String> fieldNames = doc.getFieldNames();
assertTrue("Document doesn't contain field with name " + fieldName, fieldNames.contains(fieldName));
SolrInputField field = doc.getField(fieldName);
assertEquals(fieldValues.length, field.getValueCount());
Collection<Object> values = field.getValues();
for (Object expectedVal : fieldValues) {
assertTrue("Field with name " + fieldName + " doesn't contain value " + expectedVal, values.contains(expectedVal));
}
}
}