diff options
author | Geir Storli <geirst@yahoo-inc.com> | 2017-01-26 16:04:53 +0100 |
---|---|---|
committer | Geir Storli <geirst@yahoo-inc.com> | 2017-01-26 16:04:53 +0100 |
commit | 8cd62ce92afe98f625c833e8df57075337d5f4fb (patch) | |
tree | 035c28d63dc81663a0b7a580f44f236e30d65cab /config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java | |
parent | 31f8e144e64bbc27abb9b56246f0625f978cd944 (diff) |
Integrate ImportedFieldsResolver in processing chain.
Diffstat (limited to 'config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java')
-rw-r--r-- | config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java | 60 |
1 files changed, 40 insertions, 20 deletions
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java index 198a718694a..7f4fd59d6a0 100644 --- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java +++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java @@ -3,7 +3,7 @@ package com.yahoo.searchdefinition.processing; import com.yahoo.searchdefinition.Search; import com.yahoo.searchdefinition.SearchBuilder; -import com.yahoo.searchdefinition.document.TemporaryImportedField; +import com.yahoo.searchdefinition.document.ImportedField; import com.yahoo.searchdefinition.parser.ParseException; import org.junit.Rule; import org.junit.Test; @@ -11,6 +11,7 @@ import org.junit.rules.ExpectedException; import static org.junit.Assert.assertEquals; import static com.yahoo.searchdefinition.TestUtils.joinLines; +import static org.junit.Assert.assertNotNull; /** * @author geirst @@ -18,43 +19,62 @@ import static com.yahoo.searchdefinition.TestUtils.joinLines; public class ImportedFieldsTestCase { @Test - public void require_that_imported_fields_can_be_parsed_from_sd_file() throws ParseException { - Search search = build(joinLines( - "search ad {", - " document ad {}", - " import field campaign.budget as budget {}", - " import field person.name as sales_person {}", + public void fields_can_be_imported_from_referenced_document_types() throws ParseException { + Search search = buildAdSearch(joinLines( + "search ad {", + " document ad {", + " field campaign_ref type reference<campaign> {}", + " field person_ref type reference<person> {}", + " }", + " import field campaign_ref.budget as my_budget {}", + " import field person_ref.name as my_name {}", "}")); - assertEquals(2, search.temporaryImportedFields().get().fields().size()); - assertSearchContainsTemporaryImportedField("budget", "campaign", "budget", search); - assertSearchContainsTemporaryImportedField("sales_person", "person", "name", search); + assertEquals(2, search.importedFields().get().fields().size()); + assertSearchContainsImportedField("my_budget", "campaign_ref", "campaign", "budget", search); + assertSearchContainsImportedField("my_name", "person_ref", "person", "name", search); } @Rule public ExpectedException exception = ExpectedException.none(); @Test - public void require_that_field_reference_spec_must_include_dot() throws ParseException { + public void field_reference_spec_must_include_dot() throws ParseException { exception.expect(IllegalArgumentException.class); - exception.expectMessage("Illegal field reference spec 'campaignbudget': Does not include a single '.'"); - build(joinLines( + exception.expectMessage("Illegal field reference spec 'campaignrefbudget': Does not include a single '.'"); + buildAdSearch(joinLines( "search ad {", " document ad {}", - " import field campaignbudget as budget {}", + " import field campaignrefbudget as budget {}", "}")); } - private static Search build(String sdContent) throws ParseException { + private static Search buildAdSearch(String sdContent) throws ParseException { SearchBuilder builder = new SearchBuilder(); + builder.importString(joinLines("search campaign {", + " document campaign {", + " field budget type int {}", + " }", + "}")); + builder.importString(joinLines("search person {", + " document person {", + " field name type string {}", + " }", + "}")); builder.importString(sdContent); builder.build(); - return builder.getSearch(); + return builder.getSearch("ad"); } - private static void assertSearchContainsTemporaryImportedField(String aliasFieldName, String documentReferenceFieldName, String foreignFieldName, Search search) { - TemporaryImportedField importedField = search.temporaryImportedFields().get().fields().get(aliasFieldName); + private static void assertSearchContainsImportedField(String aliasFieldName, + String documentReferenceFieldName, + String documentReferenceType, + String foreignFieldName, + Search search) { + ImportedField importedField = search.importedFields().get().fields().get(aliasFieldName); + assertNotNull(importedField); assertEquals(aliasFieldName, importedField.aliasFieldName()); - assertEquals(documentReferenceFieldName, importedField.documentReferenceFieldName()); - assertEquals(foreignFieldName, importedField.foreignFieldName()); + assertEquals(documentReferenceFieldName, importedField.documentReference().documentReferenceField().getName()); + assertEquals(documentReferenceType, importedField.documentReference().search().getName()); + assertEquals(foreignFieldName, importedField.referencedField().getName()); } } |