aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-03-30 13:39:00 +0200
committerBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-03-30 15:45:53 +0200
commit437239cce49adadabcf18363830098eec4016acd (patch)
tree8e46b42bb3b892041adfdff590f48d5c8cd1787b /config-model
parent0ce5180760e3f780ef85bb9723d0b0c41c7158d0 (diff)
Verify validation of types in summary fields
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java59
1 files changed, 59 insertions, 0 deletions
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java
new file mode 100644
index 00000000000..717101bfc87
--- /dev/null
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java
@@ -0,0 +1,59 @@
+package com.yahoo.searchdefinition.processing;
+
+import com.yahoo.config.model.test.MockApplicationPackage;
+import com.yahoo.document.DataType;
+import com.yahoo.document.Field;
+import com.yahoo.searchdefinition.DocumentReference;
+import com.yahoo.searchdefinition.Search;
+import com.yahoo.searchdefinition.document.ImportedField;
+import com.yahoo.searchdefinition.document.ImportedFields;
+import com.yahoo.searchdefinition.document.SDDocumentType;
+import com.yahoo.searchdefinition.document.SDField;
+import com.yahoo.vespa.documentmodel.DocumentSummary;
+import com.yahoo.vespa.documentmodel.SummaryField;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import java.util.Collections;
+
+/**
+ * @author bjorncs
+ */
+public class ValidateFieldTypesTest {
+
+ private static final String IMPORTED_FIELD_NAME = "imported_myfield";
+ private static final String DOCUMENT_NAME = "mydoc";
+
+ @Rule
+ public final ExpectedException exceptionRule = ExpectedException.none();
+
+ @Test
+ public void throws_exception_if_type_of_document_field_does_not_match_summary_field() {
+ Search search = createDocumentWithImportedFieldInDocumentSummary();
+ ValidateFieldTypes validator = new ValidateFieldTypes(search, null, null, null);
+ exceptionRule.expect(IllegalArgumentException.class);
+ exceptionRule.expectMessage(
+ "For search '" + DOCUMENT_NAME + "', field '" + IMPORTED_FIELD_NAME + "': Incompatible types. " +
+ "Expected int for summary field '" + IMPORTED_FIELD_NAME + "', got string.");
+ validator.process();
+ }
+
+ private static Search createDocumentWithImportedFieldInDocumentSummary() {
+ // Create search with a single imported field
+ Search search = new Search(DOCUMENT_NAME, MockApplicationPackage.createEmpty());
+ SDDocumentType document = new SDDocumentType("mydoc", search);
+ search.addDocument(document);
+ Search targetDocument = new Search("otherdoc", MockApplicationPackage.createEmpty());
+ SDField targetField = new SDField("myfield", DataType.INT);
+ DocumentReference documentReference = new DocumentReference(new Field("reference_field"), targetDocument);
+ ImportedField importedField = new ImportedField(IMPORTED_FIELD_NAME, documentReference, targetField);
+ search.setImportedFields(new ImportedFields(Collections.singletonMap(IMPORTED_FIELD_NAME, importedField)));
+
+ // Create document summary
+ DocumentSummary summary = new DocumentSummary("mysummary");
+ summary.add(new SummaryField(IMPORTED_FIELD_NAME, DataType.STRING));
+ search.addSummary(summary);
+ return search;
+ }
+}