summaryrefslogtreecommitdiffstats
path: root/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahoo-inc.com>2017-01-26 16:04:53 +0100
committerGeir Storli <geirst@yahoo-inc.com>2017-01-26 16:04:53 +0100
commit8cd62ce92afe98f625c833e8df57075337d5f4fb (patch)
tree035c28d63dc81663a0b7a580f44f236e30d65cab /config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java
parent31f8e144e64bbc27abb9b56246f0625f978cd944 (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.java60
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());
}
}