diff options
author | Bjørn Christian Seime <bjorncs@yahoo-inc.com> | 2017-03-30 13:39:00 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@yahoo-inc.com> | 2017-03-30 15:45:53 +0200 |
commit | 437239cce49adadabcf18363830098eec4016acd (patch) | |
tree | 8e46b42bb3b892041adfdff590f48d5c8cd1787b | |
parent | 0ce5180760e3f780ef85bb9723d0b0c41c7158d0 (diff) |
Verify validation of types in summary fields
-rw-r--r-- | config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java | 59 |
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; + } +} |