Skip to content

Commit 2468aec

Browse files
Fix test
1 parent bd48317 commit 2468aec

File tree

4 files changed

+72
-6
lines changed

4 files changed

+72
-6
lines changed

docs/reference/esql/functions/kibana/definition/qstr.json

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/reference/esql/functions/types/qstr.asciidoc

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/fulltext/NoneFieldFullTextFunctionTestCase.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public final void testFold() {
3131
assertFalse("expected resolved", expression.typeResolved().unresolved());
3232
}
3333

34-
protected static Iterable<Object[]> generateParameters() {
34+
protected static List<TestCaseSupplier> getStringTestSupplier() {
3535
List<TestCaseSupplier> suppliers = new LinkedList<>();
3636
for (DataType strType : DataType.stringTypes()) {
3737
suppliers.add(
@@ -42,7 +42,11 @@ protected static Iterable<Object[]> generateParameters() {
4242
)
4343
);
4444
}
45-
return parameterSuppliersFromTypedData(suppliers);
45+
return suppliers;
46+
}
47+
48+
protected static Iterable<Object[]> generateParameters() {
49+
return parameterSuppliersFromTypedData(getStringTestSupplier());
4650
}
4751

4852
private static TestCaseSupplier.TestCase testCase(DataType strType, String str, Matcher<Boolean> matcher) {

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/fulltext/QueryStringTests.java

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,25 @@
1010
import com.carrotsearch.randomizedtesting.annotations.Name;
1111
import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
1212

13+
import org.elasticsearch.index.query.QueryBuilder;
1314
import org.elasticsearch.xpack.esql.core.expression.Expression;
15+
import org.elasticsearch.xpack.esql.core.expression.Literal;
16+
import org.elasticsearch.xpack.esql.core.expression.MapExpression;
1417
import org.elasticsearch.xpack.esql.core.tree.Source;
18+
import org.elasticsearch.xpack.esql.core.type.DataType;
1519
import org.elasticsearch.xpack.esql.expression.function.FunctionName;
1620
import org.elasticsearch.xpack.esql.expression.function.TestCaseSupplier;
1721

22+
import java.util.ArrayList;
1823
import java.util.List;
1924
import java.util.function.Supplier;
2025

26+
import static org.elasticsearch.xpack.esql.core.type.DataType.BOOLEAN;
27+
import static org.elasticsearch.xpack.esql.core.type.DataType.KEYWORD;
28+
import static org.elasticsearch.xpack.esql.core.type.DataType.UNSUPPORTED;
29+
import static org.elasticsearch.xpack.esql.planner.TranslatorHandler.TRANSLATOR_HANDLER;
30+
import static org.hamcrest.Matchers.equalTo;
31+
2132
@FunctionName("qstr")
2233
public class QueryStringTests extends NoneFieldFullTextFunctionTestCase {
2334

@@ -27,11 +38,48 @@ public QueryStringTests(@Name("TestCase") Supplier<TestCaseSupplier.TestCase> te
2738

2839
@ParametersFactory
2940
public static Iterable<Object[]> parameters() {
30-
return generateParameters();
41+
return parameterSuppliersFromTypedData(addFunctionNamedParams(getStringTestSupplier()));
42+
}
43+
44+
/**
45+
* Adds function named parameters to all the test case suppliers provided
46+
*/
47+
private static List<TestCaseSupplier> addFunctionNamedParams(List<TestCaseSupplier> suppliers) {
48+
List<TestCaseSupplier> result = new ArrayList<>();
49+
for (TestCaseSupplier supplier : suppliers) {
50+
List<DataType> dataTypes = new ArrayList<>(supplier.types());
51+
dataTypes.add(UNSUPPORTED);
52+
result.add(new TestCaseSupplier(supplier.name() + ", options", dataTypes, () -> {
53+
List<TestCaseSupplier.TypedData> values = new ArrayList<>(supplier.get().getData());
54+
values.add(
55+
new TestCaseSupplier.TypedData(
56+
new MapExpression(
57+
Source.EMPTY,
58+
List.of(
59+
new Literal(Source.EMPTY, "default_field", KEYWORD),
60+
new Literal(Source.EMPTY, randomAlphaOfLength(10), KEYWORD)
61+
)
62+
),
63+
UNSUPPORTED,
64+
"options"
65+
).forceLiteral()
66+
);
67+
68+
return new TestCaseSupplier.TestCase(values, equalTo("MatchEvaluator"), BOOLEAN, equalTo(true));
69+
}));
70+
}
71+
return result;
3172
}
3273

3374
@Override
3475
protected Expression build(Source source, List<Expression> args) {
35-
return new QueryString(source, args.getFirst(), null);
76+
var qstr = new QueryString(source, args.get(0), args.size() > 1 ? args.get(1) : null);
77+
// We need to add the QueryBuilder to the match expression, as it is used to implement equals() and hashCode() and
78+
// thus test the serialization methods. But we can only do this if the parameters make sense .
79+
if (args.get(0).foldable()) {
80+
QueryBuilder queryBuilder = TRANSLATOR_HANDLER.asQuery(qstr).asBuilder();
81+
qstr.replaceQueryBuilder(queryBuilder);
82+
}
83+
return qstr;
3684
}
3785
}

0 commit comments

Comments
 (0)