DATACOUCH-413 Use parameterized queries for Query derivation

Changes
-------
- N1ql query creators implement an interface which provides the place
holder values.
- The query creator uses a position index counter to inject place holders in
the statement created and caches the place holder values in an array.
- Repository query constructor passes the generated query statement
and place holder values to query through the SDK.
- Cleanup N1ql integration tests for count validation and also add
couple of more tests

Results
-------
The testing for changes are already covered under the modified existing tests
in N1qlQueryCreator and Repository.
This commit is contained in:
Subhashni Balakrishnan
2018-11-13 19:11:29 -08:00
parent 9840acd2c6
commit c4491dc8b4
13 changed files with 492 additions and 218 deletions

View File

@@ -1,20 +1,18 @@
package org.springframework.data.couchbase.repository.query;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.*;
import static org.springframework.data.couchbase.repository.query.N1qlQueryCreator.*;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import com.couchbase.client.java.document.json.JsonArray;
import com.couchbase.client.java.query.dsl.Expression;
import org.junit.Test;
import org.springframework.data.couchbase.repository.query.support.N1qlQueryCreatorUtils;
import org.springframework.data.repository.query.parser.Part;
import com.couchbase.client.java.query.dsl.Expression;
public class N1qlQueryCreatorTest {
//==== The tests below check mapping between a Part.Type and the corresponding N1QL expression ====
@@ -22,18 +20,24 @@ public class N1qlQueryCreatorTest {
@Test
public void testBETWEEN() throws Exception {
Part.Type keyword = Part.Type.BETWEEN;
Iterator<Object> values = Arrays.<Object>asList("a", "b", 1, 2, "c", "d").iterator();
String expected = "doc.field BETWEEN \"a\" AND \"b\"";
String expectedNum = "doc.field BETWEEN 1 AND 2";
String expectedIgnoreCase = "LOWER(doc.field) BETWEEN LOWER(\"c\") AND LOWER(\"d\")";
Iterator<Object> values = Arrays.<Object>asList("a", "b", 1, 2, "C", "D").iterator();
String expected = "doc.field BETWEEN $0 AND $1";
String expectedNum = "doc.field BETWEEN $0 AND $1";
String expectedIgnoreCase = "LOWER(doc.field) BETWEEN LOWER($0) AND LOWER($1)";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add("a").add("b"), phexp);
assertEquals(JsonArray.create().add(1).add(2), phexpNum);
assertEquals(JsonArray.create().add("C").add("D"), phexpIgnoreCase);
}
@Test
@@ -44,13 +48,19 @@ public class N1qlQueryCreatorTest {
String expectedNum = "doc.field IS NOT NULL";
String expectedIgnoreCase = "LOWER(doc.field) IS NOT NULL";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create(), phexp);
assertEquals(JsonArray.create(), phexpNum);
assertEquals(JsonArray.create(), phexpIgnoreCase);
}
@Test
@@ -61,234 +71,318 @@ public class N1qlQueryCreatorTest {
String expectedNum = "doc.field IS NULL";
String expectedIgnoreCase = "LOWER(doc.field) IS NULL";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create(), phexp);
assertEquals(JsonArray.create(), phexpNum);
assertEquals(JsonArray.create(), phexpIgnoreCase);
}
@Test
public void testLESS_THAN() throws Exception {
Part.Type keyword = Part.Type.LESS_THAN;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
String expected = "doc.field < \"a\"";
String expectedNum = "doc.field < 1";
String expectedIgnoreCase = "LOWER(doc.field) < LOWER(\"b\")";
String expected = "doc.field < $0";
String expectedNum = "doc.field < $0";
String expectedIgnoreCase = "LOWER(doc.field) < LOWER($0)";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add("a"), phexp);
assertEquals(JsonArray.create().add(1), phexpNum);
assertEquals(JsonArray.create().add("b"), phexpIgnoreCase);
}
@Test
public void testLESS_THAN_EQUAL() throws Exception {
Part.Type keyword = Part.Type.LESS_THAN_EQUAL;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
String expected = "doc.field <= \"a\"";
String expectedNum = "doc.field <= 1";
String expectedIgnoreCase = "LOWER(doc.field) <= LOWER(\"b\")";
String expected = "doc.field <= $0";
String expectedNum = "doc.field <= $0";
String expectedIgnoreCase = "LOWER(doc.field) <= LOWER($0)";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add("a"), phexp);
assertEquals(JsonArray.create().add(1), phexpNum);
assertEquals(JsonArray.create().add("b"), phexpIgnoreCase);
}
@Test
public void testGREATER_THAN() throws Exception {
Part.Type keyword = Part.Type.GREATER_THAN;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
String expected = "doc.field > \"a\"";
String expectedNum = "doc.field > 1";
String expectedIgnoreCase = "LOWER(doc.field) > LOWER(\"b\")";
String expected = "doc.field > $0";
String expectedNum = "doc.field > $0";
String expectedIgnoreCase = "LOWER(doc.field) > LOWER($0)";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add("a"), phexp);
assertEquals(JsonArray.create().add(1), phexpNum);
assertEquals(JsonArray.create().add("b"), phexpIgnoreCase);
}
@Test
public void testGREATER_THAN_EQUAL() throws Exception {
Part.Type keyword = Part.Type.GREATER_THAN_EQUAL;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
String expected = "doc.field >= \"a\"";
String expectedNum = "doc.field >= 1";
String expectedIgnoreCase = "LOWER(doc.field) >= LOWER(\"b\")";
String expected = "doc.field >= $0";
String expectedNum = "doc.field >= $0";
String expectedIgnoreCase = "LOWER(doc.field) >= LOWER($0)";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add("a"), phexp);
assertEquals(JsonArray.create().add(1), phexpNum);
assertEquals(JsonArray.create().add("b"), phexpIgnoreCase);
}
@Test
public void testBEFORE() throws Exception {
Part.Type keyword = Part.Type.BEFORE;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
String expected = "doc.field < \"a\"";
String expectedNum = "doc.field < 1";
String expectedIgnoreCase = "LOWER(doc.field) < LOWER(\"b\")";
String expected = "doc.field < $0";
String expectedNum = "doc.field < $0";
String expectedIgnoreCase = "LOWER(doc.field) < LOWER($0)";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add("a"), phexp);
assertEquals(JsonArray.create().add(1), phexpNum);
assertEquals(JsonArray.create().add("b"), phexpIgnoreCase);
}
@Test
public void testAFTER() throws Exception {
Part.Type keyword = Part.Type.AFTER;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
String expected = "doc.field > \"a\"";
String expectedNum = "doc.field > 1";
String expectedIgnoreCase = "LOWER(doc.field) > LOWER(\"b\")";
String expected = "doc.field > $0";
String expectedNum = "doc.field > $0";
String expectedIgnoreCase = "LOWER(doc.field) > LOWER($0)";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add("a"), phexp);
assertEquals(JsonArray.create().add(1), phexpNum);
assertEquals(JsonArray.create().add("b"), phexpIgnoreCase);
}
@Test
public void testNOT_LIKE() throws Exception {
Part.Type keyword = Part.Type.NOT_LIKE;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
String expected = "doc.field NOT LIKE \"a\"";
String expectedNum = "doc.field NOT LIKE 1";
String expectedIgnoreCase = "LOWER(doc.field) NOT LIKE LOWER(\"b\")";
String expected = "doc.field NOT LIKE $0";
String expectedNum = "doc.field NOT LIKE $0";
String expectedIgnoreCase = "LOWER(doc.field) NOT LIKE LOWER($0)";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add("a"), phexp);
assertEquals(JsonArray.create().add(1), phexpNum);
assertEquals(JsonArray.create().add("b"), phexpIgnoreCase);
}
@Test
public void testLIKE() throws Exception {
Part.Type keyword = Part.Type.LIKE;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
String expected = "doc.field LIKE \"a\"";
String expectedNum = "doc.field LIKE 1";
String expectedIgnoreCase = "LOWER(doc.field) LIKE LOWER(\"b\")";
String expected = "doc.field LIKE $0";
String expectedNum = "doc.field LIKE $0";
String expectedIgnoreCase = "LOWER(doc.field) LIKE LOWER($0)";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add("a"), phexp);
assertEquals(JsonArray.create().add(1), phexpNum);
assertEquals(JsonArray.create().add("b"), phexpIgnoreCase);
}
@Test
public void testSTARTING_WITH() throws Exception {
Part.Type keyword = Part.Type.STARTING_WITH;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
String expected = "doc.field LIKE \"a%\"";
String expectedNum = "doc.field LIKE 1";
String expectedIgnoreCase = "LOWER(doc.field) LIKE LOWER(\"b%\")";
String expected = "doc.field LIKE $0 || '%'";
String expectedNum = "doc.field LIKE $0 || '%'";
String expectedIgnoreCase = "LOWER(doc.field) LIKE LOWER($0) || '%'";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add("a"), phexp);
assertEquals(JsonArray.create().add(1), phexpNum);
assertEquals(JsonArray.create().add("b"), phexpIgnoreCase);
}
@Test
public void testENDING_WITH() throws Exception {
Part.Type keyword = Part.Type.ENDING_WITH;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
String expected = "doc.field LIKE \"%a\"";
String expectedNum = "doc.field LIKE 1";
String expectedIgnoreCase = "LOWER(doc.field) LIKE LOWER(\"%b\")";
String expected = "doc.field LIKE '%' || $0";
String expectedNum = "doc.field LIKE '%' || $0";
String expectedIgnoreCase = "LOWER(doc.field) LIKE '%' || LOWER($0)";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add("a"), phexp);
assertEquals(JsonArray.create().add(1), phexpNum);
assertEquals(JsonArray.create().add("b"), phexpIgnoreCase);
}
@Test
public void testNOT_CONTAINING() throws Exception {
Part.Type keyword = Part.Type.NOT_CONTAINING;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
String expected = "doc.field NOT LIKE \"%a%\"";
String expectedNum = "doc.field NOT LIKE 1";
String expectedIgnoreCase = "LOWER(doc.field) NOT LIKE LOWER(\"%b%\")";
String expected = "doc.field NOT LIKE '%' || $0 || '%'";
String expectedNum = "doc.field NOT LIKE '%' || $0 || '%'";
String expectedIgnoreCase = "LOWER(doc.field) NOT LIKE '%' || LOWER($0) || '%'";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add("a"), phexp);
assertEquals(JsonArray.create().add(1), phexpNum);
assertEquals(JsonArray.create().add("b"), phexpIgnoreCase);
}
@Test
public void testCONTAINING() throws Exception {
Part.Type keyword = Part.Type.CONTAINING;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
String expected = "doc.field LIKE \"%a%\"";
String expectedNum = "doc.field LIKE 1";
String expectedIgnoreCase = "LOWER(doc.field) LIKE LOWER(\"%b%\")";
String expected = "doc.field LIKE '%' || $0 || '%'";
String expectedNum = "doc.field LIKE '%' || $0 || '%'";
String expectedIgnoreCase = "LOWER(doc.field) LIKE '%' || LOWER($0) || '%'";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add("a"), phexp);
assertEquals(JsonArray.create().add(1), phexpNum);
assertEquals(JsonArray.create().add("b"), phexpIgnoreCase);
}
@Test
public void testNOT_IN() throws Exception {
Part.Type keyword = Part.Type.NOT_IN;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
String expected = "doc.field NOT IN [\"a\"]";
String expectedNum = "doc.field NOT IN [1]";
String expectedIgnoreCase = "LOWER(doc.field) NOT IN [\"b\"]";
String expected = "doc.field NOT IN $0";
String expectedNum = "doc.field NOT IN $0";
String expectedIgnoreCase = "LOWER(doc.field) NOT IN $0";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add(JsonArray.create().add("a")), phexp);
assertEquals(JsonArray.create().add(JsonArray.create().add(1)), phexpNum);
assertEquals(JsonArray.create().add(JsonArray.create().add("b")), phexpIgnoreCase);
}
@Test
@@ -297,14 +391,18 @@ public class N1qlQueryCreatorTest {
List<Object> val1 = Arrays.<Object>asList("av1", "av2");
List<Object> val2 = Arrays.<Object>asList("bv1", "bv2");
Iterator<Object> values = Arrays.<Object>asList(val1, val2).iterator();
String expected = "doc.field NOT IN [\"av1\",\"av2\"]";
String expectedIgnoreCase = "LOWER(doc.field) NOT IN [\"bv1\",\"bv2\"]";
String expected = "doc.field NOT IN $0";
String expectedIgnoreCase = "LOWER(doc.field) NOT IN $0";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add(JsonArray.create().add("av1").add("av2")), phexp);
assertEquals(JsonArray.create().add(JsonArray.create().add("bv1").add("bv2")), phexpIgnoreCase);
}
@Test
@@ -313,31 +411,41 @@ public class N1qlQueryCreatorTest {
String[] val1 = {"av1", "av2"};
String[] val2 = {"bv1", "bv2"};
Iterator<Object> values = Arrays.<Object>asList(val1, val2).iterator();
String expected = "doc.field NOT IN [\"av1\",\"av2\"]";
String expectedIgnoreCase = "LOWER(doc.field) NOT IN [\"bv1\",\"bv2\"]";
String expected = "doc.field NOT IN $0";
String expectedIgnoreCase = "LOWER(doc.field) NOT IN $0";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add(JsonArray.create().add("av1").add("av2")), phexp);
assertEquals(JsonArray.create().add(JsonArray.create().add("bv1").add("bv2")), phexpIgnoreCase);
}
@Test
public void testIN() throws Exception {
Part.Type keyword = Part.Type.IN;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
String expected = "doc.field IN [\"a\"]";
String expectedNum = "doc.field IN [1]";
String expectedIgnoreCase = "LOWER(doc.field) IN [\"b\"]";
String expected = "doc.field IN $0";
String expectedNum = "doc.field IN $0";
String expectedIgnoreCase = "LOWER(doc.field) IN $0";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add(JsonArray.create().add("a")), phexp);
assertEquals(JsonArray.create().add(JsonArray.create().add(1)), phexpNum);
assertEquals(JsonArray.create().add(JsonArray.create().add("b")), phexpIgnoreCase);
}
@Test
@@ -346,14 +454,18 @@ public class N1qlQueryCreatorTest {
List<Object> val1 = Arrays.<Object>asList("av1", "av2");
List<Object> val2 = Arrays.<Object>asList("bv1", "bv2");
Iterator<Object> values = Arrays.<Object>asList(val1, val2).iterator();
String expected = "doc.field IN [\"av1\",\"av2\"]";
String expectedIgnoreCase = "LOWER(doc.field) IN [\"bv1\",\"bv2\"]";
String expected = "doc.field IN $0";
String expectedIgnoreCase = "LOWER(doc.field) IN $0";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add(JsonArray.create().add("av1").add("av2")), phexp);
assertEquals(JsonArray.create().add(JsonArray.create().add("bv1").add("bv2")), phexpIgnoreCase);
}
@Test
@@ -362,14 +474,18 @@ public class N1qlQueryCreatorTest {
String[] val1 = {"av1", "av2"};
String[] val2 = {"bv1", "bv2"};
Iterator<Object> values = Arrays.<Object>asList(val1, val2).iterator();
String expected = "doc.field IN [\"av1\",\"av2\"]";
String expectedIgnoreCase = "LOWER(doc.field) IN [\"bv1\",\"bv2\"]";
String expected = "doc.field IN $0";
String expectedIgnoreCase = "LOWER(doc.field) IN $0";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add(JsonArray.create().add("av1").add("av2")), phexp);
assertEquals(JsonArray.create().add(JsonArray.create().add("bv1").add("bv2")), phexpIgnoreCase);
}
@Test(expected = IllegalArgumentException.class)
@@ -377,7 +493,7 @@ public class N1qlQueryCreatorTest {
Part.Type keyword = Part.Type.NEAR;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), JsonArray.create());;
}
@Test(expected = IllegalArgumentException.class)
@@ -385,24 +501,30 @@ public class N1qlQueryCreatorTest {
Part.Type keyword = Part.Type.WITHIN;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), JsonArray.create());;
}
@Test
public void testREGEX() throws Exception {
Part.Type keyword = Part.Type.REGEX;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
String expected = "REGEXP_LIKE(doc.field, \"a\")";
String expectedNum = "REGEXP_LIKE(doc.field, \"1\")";
String expectedIgnoreCase = "REGEXP_LIKE(doc.field, \"b\")";
String expected = "REGEXP_LIKE(doc.field, $0)";
String expectedNum = "REGEXP_LIKE(doc.field, $0)";
String expectedIgnoreCase = "REGEXP_LIKE(LOWER(doc.field), $0)";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add("a"), phexp);
assertEquals(JsonArray.create().add("1"), phexpNum);
assertEquals(JsonArray.create().add("b"), phexpIgnoreCase);
}
@Test
@@ -413,13 +535,19 @@ public class N1qlQueryCreatorTest {
String expectedNum = "doc.field IS NOT MISSING";
String expectedIgnoreCase = "LOWER(doc.field) IS NOT MISSING";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create(), phexp);
assertEquals(JsonArray.create(), phexpNum);
assertEquals(JsonArray.create(), phexpIgnoreCase);
}
@Test
@@ -430,13 +558,19 @@ public class N1qlQueryCreatorTest {
String expectedNum = "doc.field = TRUE";
String expectedIgnoreCase = "LOWER(doc.field) = TRUE";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create(), phexp);
assertEquals(JsonArray.create(), phexpNum);
assertEquals(JsonArray.create(), phexpIgnoreCase);
}
@Test
@@ -447,30 +581,42 @@ public class N1qlQueryCreatorTest {
String expectedNum = "doc.field = FALSE";
String expectedIgnoreCase = "LOWER(doc.field) = FALSE";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create(), phexp);
assertEquals(JsonArray.create(), phexpNum);
assertEquals(JsonArray.create(), phexpIgnoreCase);
}
@Test
public void testNEGATING_SIMPLE_PROPERTY() throws Exception {
Part.Type keyword = Part.Type.NEGATING_SIMPLE_PROPERTY;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b").iterator();
String expected = "doc.field != \"a\"";
String expectedNum = "doc.field != 1";
String expectedIgnoreCase = "LOWER(doc.field) != LOWER(\"b\")";
String expected = "doc.field != $0";
String expectedNum = "doc.field != $0";
String expectedIgnoreCase = "LOWER(doc.field) != LOWER($0)";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(JsonArray.create().add("a"), phexp);
assertEquals(JsonArray.create().add(1), phexpNum);
assertEquals(JsonArray.create().add("b"), phexpIgnoreCase);
}
enum TestEnum {
@@ -481,19 +627,27 @@ public class N1qlQueryCreatorTest {
public void testSIMPLE_PROPERTY() throws Exception {
Part.Type keyword = Part.Type.SIMPLE_PROPERTY;
Iterator<Object> values = Arrays.<Object>asList("a", 1, "b", TestEnum.TEST).iterator();
String expected = "doc.field = \"a\"";
String expectedNum = "doc.field = 1";
String expectedIgnoreCase = "LOWER(doc.field) = LOWER(\"b\")";
String expectedEnum = "doc.field = \"TEST\"";
String expected = "doc.field = $0";
String expectedNum = "doc.field = $0";
String expectedIgnoreCase = "LOWER(doc.field) = LOWER($0)";
String expectedEnum = "doc.field = $0";
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values);
Expression expEnum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values);
JsonArray phexp = JsonArray.create();
Expression exp = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexp);
JsonArray phexpNum = JsonArray.create();
Expression expNum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpNum);
JsonArray phexpIgnoreCase = JsonArray.create();
Expression expIgnoreCase = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", true, values, new AtomicInteger(), phexpIgnoreCase);
JsonArray phexpEnum = JsonArray.create();
Expression expEnum = N1qlQueryCreatorUtils.createExpression(keyword, "doc.field", false, values, new AtomicInteger(), phexpEnum);
assertEquals(expected, exp.toString());
assertEquals(expectedNum, expNum.toString());
assertEquals(expectedIgnoreCase, expIgnoreCase.toString());
assertEquals(expectedEnum, expEnum.toString());
assertEquals(JsonArray.create().add("a"), phexp);
assertEquals(JsonArray.create().add(1), phexpNum);
assertEquals(JsonArray.create().add("b"), phexpIgnoreCase);
assertEquals(JsonArray.create().add("TEST"), phexpEnum);
}
}

View File

@@ -26,6 +26,7 @@ import java.util.Collection;
import java.util.List;
import java.util.Optional;
import com.couchbase.client.java.document.json.JsonObject;
import org.junit.Test;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.couchbase.core.Beer;
@@ -99,7 +100,7 @@ public class PartTreeN1qBasedQueryTest {
PartTreeN1qlBasedQuery query = new PartTreeN1qlBasedQuery(queryMethod, couchbaseOperations);
Statement statement = query.getCount(accessor, new Object[] { "value", pr });
assertEquals("SELECT COUNT(*) AS count FROM `default` WHERE (name = \"value\") "
assertEquals("SELECT COUNT(*) AS count FROM `default` WHERE (name = $1) "
+ "AND `_class` = \"org.springframework.data.couchbase.core.Beer\"", statement.toString());
}
@@ -144,7 +145,7 @@ public class PartTreeN1qBasedQueryTest {
PartTreeN1qlBasedQuery query = new PartTreeN1qlBasedQuery(queryMethod, couchbaseOperations);
Statement statement = query.getCount(accessor, new Object[] { "value", pr });
assertEquals("SELECT COUNT(*) AS count FROM `default` WHERE (name = \"value\") "
assertEquals("SELECT COUNT(*) AS count FROM `default` WHERE (name = $1) "
+ "AND `_class` = \"org.springframework.data.couchbase.core.Beer\"", statement.toString());
}