summaryrefslogtreecommitdiffstats
path: root/container-search/src/test/java/com/yahoo/search/yql/FieldFilterTestCase.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-search/src/test/java/com/yahoo/search/yql/FieldFilterTestCase.java')
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/FieldFilterTestCase.java90
1 files changed, 90 insertions, 0 deletions
diff --git a/container-search/src/test/java/com/yahoo/search/yql/FieldFilterTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/FieldFilterTestCase.java
new file mode 100644
index 00000000000..ac6ceeb5467
--- /dev/null
+++ b/container-search/src/test/java/com/yahoo/search/yql/FieldFilterTestCase.java
@@ -0,0 +1,90 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.search.yql;
+
+import static org.junit.Assert.*;
+
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.yahoo.component.chain.Chain;
+import com.yahoo.prelude.fastsearch.FastHit;
+import com.yahoo.search.Query;
+import com.yahoo.search.Result;
+import com.yahoo.search.Searcher;
+import com.yahoo.search.result.Hit;
+import com.yahoo.search.searchchain.Execution;
+import com.yahoo.search.searchchain.testutil.DocumentSourceSearcher;
+
+/**
+ * Smoketest that we remove fields in a sane manner.
+ *
+ * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
+ */
+public class FieldFilterTestCase {
+ private static final String FIELD_C = "c";
+ private static final String FIELD_B = "b";
+ private static final String FIELD_A = "a";
+ private Chain<Searcher> searchChain;
+ private Execution.Context context;
+ private Execution execution;
+
+ @Before
+ public void setUp() throws Exception {
+ Query query = new Query("?query=test");
+
+ Result result = new Result(query);
+ Hit hit = createHit("lastHit", .1d, FIELD_A, FIELD_B, FIELD_C);
+ result.hits().add(hit);
+
+ DocumentSourceSearcher mockBackend = new DocumentSourceSearcher();
+ mockBackend.addResult(query, result);
+
+ searchChain = new Chain<Searcher>(new FieldFilter(),
+ mockBackend);
+ context = Execution.Context.createContextStub(null);
+ execution = new Execution(searchChain, context);
+
+ }
+
+ private Hit createHit(String id, double relevancy, String... fieldNames) {
+ Hit h = new Hit(id, relevancy);
+ h.setFillable();
+ int i = 0;
+ for (String field : fieldNames) {
+ h.setField(field, ++i);
+ }
+ return h;
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ searchChain = null;
+ context = null;
+ execution = null;
+ }
+
+ @Test
+ public final void testBasic() {
+ final Query query = new Query("?query=test&presentation.summaryFields=" + FIELD_B);
+ Result result = execution.search(query);
+ execution.fill(result);
+ assertEquals(1, result.getConcreteHitCount());
+ assertFalse(result.hits().get(0).fieldKeys().contains(FIELD_A));
+ assertTrue(result.hits().get(0).fieldKeys().contains(FIELD_B));
+ assertFalse(result.hits().get(0).fieldKeys().contains(FIELD_C));
+ }
+
+ @Test
+ public final void testNoFiltering() {
+ final Query query = new Query("?query=test");
+ Result result = execution.search(query);
+ execution.fill(result);
+ assertEquals(1, result.getConcreteHitCount());
+ assertTrue(result.hits().get(0).fieldKeys().contains(FIELD_A));
+ assertTrue(result.hits().get(0).fieldKeys().contains(FIELD_B));
+ assertTrue(result.hits().get(0).fieldKeys().contains(FIELD_C));
+ }
+
+}