Skip to content
This repository was archived by the owner on May 27, 2020. It is now read-only.

Commit cf9f8aa

Browse files
author
edu
committed
Added Search unit test.
1 parent 48a5670 commit cf9f8aa

File tree

4 files changed

+61
-17
lines changed

4 files changed

+61
-17
lines changed

plugin/src/main/java/com/stratio/cassandra/lucene/search/Search.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package com.stratio.cassandra.lucene.search;
1717

1818
import com.google.common.base.MoreObjects;
19+
import com.stratio.cassandra.lucene.IndexException;
1920
import com.stratio.cassandra.lucene.IndexPagingState;
2021
import com.stratio.cassandra.lucene.schema.Schema;
2122
import com.stratio.cassandra.lucene.search.condition.Condition;
@@ -44,8 +45,8 @@ public class Search {
4445

4546
protected static final Logger logger = LoggerFactory.getLogger(Search.class);
4647

47-
private static final boolean DEFAULT_FORCE_REFRESH = false;
48-
private static final int DEFAULT_SKIP = 0;
48+
static final boolean DEFAULT_FORCE_REFRESH = false;
49+
static final int DEFAULT_SKIP = 0;
4950

5051
/** The mandatory conditions not participating in scoring. */
5152
public final List<Condition> filter;
@@ -63,7 +64,7 @@ public class Search {
6364
private final IndexPagingState paging;
6465

6566
/** Firsts rows to skip. */
66-
private final Integer skip;
67+
private int skip;
6768

6869
/**
6970
* Constructor using the specified querying, filtering, sorting and refresh options.
@@ -86,6 +87,10 @@ public Search(List<Condition> filter,
8687
this.sort = sort == null ? Collections.EMPTY_LIST : sort;
8788
this.paging = paging;
8889
this.refresh = refresh == null ? DEFAULT_FORCE_REFRESH : refresh;
90+
if ((skip != null) && (skip < 0)) {
91+
throw new IndexException("skip must be positive.");
92+
}
93+
8994
this.skip = skip == null ? DEFAULT_SKIP : skip;
9095
}
9196

@@ -139,7 +144,7 @@ public boolean isEmpty() {
139144
*
140145
* @return the number of rows to skip
141146
*/
142-
public Integer getSkip() {
147+
public int getSkip() {
143148
return skip;
144149
}
145150

plugin/src/main/scala/com/stratio/cassandra/lucene/IndexQueryHandler.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ class IndexQueryHandler extends QueryHandler with Logging {
228228
if (data != null) data.close()
229229
}
230230
}
231-
231+
232232
}
233233

234234
/** Companion object for [[IndexQueryHandler]]. */

plugin/src/test/java/com/stratio/cassandra/lucene/search/SearchBuilderTest.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
package com.stratio.cassandra.lucene.search;
1717

1818
import com.stratio.cassandra.lucene.IndexException;
19+
import com.stratio.cassandra.lucene.common.JsonSerializer;
1920
import com.stratio.cassandra.lucene.search.condition.builder.ConditionBuilder;
2021
import com.stratio.cassandra.lucene.search.sort.builder.SimpleSortFieldBuilder;
21-
import com.stratio.cassandra.lucene.common.JsonSerializer;
2222
import org.junit.Test;
2323

2424
import java.io.IOException;
@@ -41,18 +41,32 @@ public void testBuild() throws IOException {
4141
SimpleSortFieldBuilder sort2 = field("field4");
4242
SearchBuilder builder = new SearchBuilder().filter(filter)
4343
.query(query)
44-
.sort(sort1, sort2);
45-
String json = builder.toJson();
44+
.sort(sort1, sort2)
45+
.skip(25);
46+
String json = "{" +
47+
"filter:[{type:\"match\",field:\"field1\",value:\"value2\"}]," +
48+
"query:[{type:\"match\",field:\"field2\",value:\"value2\"}]," +
49+
"sort:[{type:\"simple\",field:\"field3\",reverse:false},{type:\"simple\",field:\"field4\",reverse:false}]," +
50+
"refresh:false," +
51+
"skip:25" +
52+
"}";
4653
assertEquals("JSON serialization is wrong", json, JsonSerializer.toString(builder));
4754
}
4855

4956
@Test
5057
public void testJson() {
5158
SearchBuilder searchBuilder = search().filter(match("field1", "value1"))
5259
.query(match("field2", "value2"))
53-
.sort(field("field"));
54-
String json = searchBuilder.toJson();
55-
assertEquals("JSON serialization is wrong", json, SearchBuilder.fromJson(json).toJson());
60+
.sort(field("field"))
61+
.skip(10);
62+
String json = "{" +
63+
"filter:[{type:\"match\",field:\"field1\",value:\"value1\"}]," +
64+
"query:[{type:\"match\",field:\"field2\",value:\"value2\"}]," +
65+
"sort:[{type:\"simple\",field:\"field\",reverse:false}]," +
66+
"refresh:false," +
67+
"skip:10" +
68+
"}";
69+
assertEquals("JSON serialization is wrong", json, searchBuilder.toJson());
5670
}
5771

5872
@Test(expected = IndexException.class)

plugin/src/test/java/com/stratio/cassandra/lucene/search/SearchTest.java

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package com.stratio.cassandra.lucene.search;
1717

1818
import com.google.common.collect.Sets;
19+
import com.stratio.cassandra.lucene.IndexException;
1920
import com.stratio.cassandra.lucene.schema.Schema;
2021
import com.stratio.cassandra.lucene.search.condition.builder.MatchConditionBuilder;
2122
import com.stratio.cassandra.lucene.search.sort.builder.SortFieldBuilder;
@@ -25,6 +26,8 @@
2526

2627
import static com.stratio.cassandra.lucene.schema.SchemaBuilders.schema;
2728
import static com.stratio.cassandra.lucene.schema.SchemaBuilders.stringMapper;
29+
import static com.stratio.cassandra.lucene.search.Search.DEFAULT_FORCE_REFRESH;
30+
import static com.stratio.cassandra.lucene.search.Search.DEFAULT_SKIP;
2831
import static com.stratio.cassandra.lucene.search.SearchBuilders.*;
2932
import static org.junit.Assert.*;
3033

@@ -39,16 +42,38 @@ public class SearchTest {
3942
@Test
4043
public void testBuilderEmpty() {
4144
Search search = search().build();
42-
assertFalse("Default refresh is not set", search.refresh());
45+
assertEquals("Default refresh is not set", DEFAULT_FORCE_REFRESH, search.refresh());
46+
assertEquals("Default refresh is not set", new Long(DEFAULT_SKIP), new Long(search.getSkip()));
4347
}
4448

4549
@Test
4650
public void testBuilder() {
47-
assertTrue("Refresh is not set", search().filter(MATCH)
48-
.query(MATCH)
49-
.sort(FIELD)
50-
.refresh(true)
51-
.build().refresh());
51+
Search search = search().filter(MATCH)
52+
.query(MATCH)
53+
.sort(FIELD)
54+
.refresh(true)
55+
.skip(10)
56+
.build();
57+
assertEquals("Refresh is not set", true, search.refresh());
58+
assertEquals("Skip is not set", 10, search.getSkip());
59+
assertEquals("Skip is not set", true, search.useSkip());
60+
}
61+
62+
@Test
63+
public void testFailingBuilder() {
64+
try {
65+
search().filter(MATCH)
66+
.query(MATCH)
67+
.sort(FIELD)
68+
.refresh(true)
69+
.skip(-10)
70+
.build();
71+
fail("Incorrect Search builder with negative skip should throw a IndexException but does not");
72+
} catch (IndexException e) {
73+
String expectedMessage = "skip must be positive.";
74+
String receivedMessage = e.getMessage();
75+
assertEquals("Exception message should be '" + expectedMessage + "'but it is: '" + receivedMessage + "'", expectedMessage, receivedMessage);
76+
}
5277
}
5378

5479
@Test

0 commit comments

Comments
 (0)