diff options
author | Geir Storli <geirst@oath.com> | 2018-04-23 16:26:14 +0200 |
---|---|---|
committer | Geir Storli <geirst@oath.com> | 2018-04-23 16:26:14 +0200 |
commit | 09c54b6fdd0a19e4edbb02dba48428ed9f35e55b (patch) | |
tree | ba4f094240d4685788f779aac8b92c636fa9ff16 /config-model/src/test/java/com/yahoo/searchdefinition | |
parent | 3cd5365b10b30b0be89ed3a286510e5ffcf8f441 (diff) |
Allow importing a field from a parent document type that also is imported.
This functionality is now supported by the search backend.
Diffstat (limited to 'config-model/src/test/java/com/yahoo/searchdefinition')
-rw-r--r-- | config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java index ff801c122b2..815f696acdc 100644 --- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java +++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java @@ -11,6 +11,8 @@ import com.yahoo.document.TensorDataType; import com.yahoo.searchdefinition.DocumentReference; import com.yahoo.searchdefinition.DocumentReferences; import com.yahoo.searchdefinition.Search; +import com.yahoo.searchdefinition.document.ImmutableImportedSDField; +import com.yahoo.searchdefinition.document.ImmutableSDField; import com.yahoo.searchdefinition.document.ImportedField; import com.yahoo.searchdefinition.document.ImportedFields; import com.yahoo.searchdefinition.document.SDDocumentType; @@ -48,13 +50,23 @@ public class ImportedFieldsResolverTestCase { assertEquals(fieldName, myField.fieldName()); assertSame(model.childSearch.getConcreteField("ref"), myField.reference().referenceField()); assertSame(model.parentSearch, myField.reference().targetSearch()); - assertSame(model.parentSearch.getConcreteField(targetFieldName), myField.targetField()); + ImmutableSDField targetField = model.parentSearch.getField(targetFieldName); + if (targetField instanceof SDField) { + assertSame(targetField, myField.targetField()); + } else { + assertSame(getImportedField(targetField), getImportedField(myField.targetField())); + } + } + + private static ImportedField getImportedField(ImmutableSDField field) { + return ((ImmutableImportedSDField) field).getImportedField(); } @Test public void valid_imported_fields_are_resolved() { - resolve_imported_field("my_attribute_field", "attribute_field"); - resolve_imported_field("my_tensor_field", "tensor_field"); + resolve_imported_field("my_attribute_field", "attribute_field"); + resolve_imported_field("my_tensor_field", "tensor_field"); + resolve_imported_field("my_ancient_field", "ancient_field"); } @Test @@ -92,17 +104,6 @@ public class ImportedFieldsResolverTestCase { .resolve(); } - @Test - public void resolver_fails_if_imported_field_is_also_an_imported_field() { - exceptionRule.expect(IllegalArgumentException.class); - exceptionRule.expectMessage( - "For search 'child', import field 'my_ancient_field': " + - "Field 'ancient_field' via reference field 'ref': Is an imported field. Not supported"); - new SearchModel() - .addImportedField("my_ancient_field", "ref", "ancient_field") - .resolve(); - } - static class SearchModel { private final ApplicationPackage app = MockApplicationPackage.createEmpty(); |