Merge pull request #19808 from javanna/test/parse_alternate_query_strict
[TEST] parse query alternate versions in strict mode
This commit is contained in:
commit
bca9ad86c6
|
@ -23,13 +23,12 @@ package org.elasticsearch.index.query;
|
||||||
import org.apache.lucene.queries.TermsQuery;
|
import org.apache.lucene.queries.TermsQuery;
|
||||||
import org.apache.lucene.search.Query;
|
import org.apache.lucene.search.Query;
|
||||||
import org.elasticsearch.cluster.metadata.MetaData;
|
import org.elasticsearch.cluster.metadata.MetaData;
|
||||||
|
import org.elasticsearch.common.ParseFieldMatcher;
|
||||||
import org.elasticsearch.common.ParsingException;
|
import org.elasticsearch.common.ParsingException;
|
||||||
import org.elasticsearch.common.lucene.search.MatchNoDocsQuery;
|
import org.elasticsearch.common.lucene.search.MatchNoDocsQuery;
|
||||||
import org.elasticsearch.test.AbstractQueryTestCase;
|
import org.elasticsearch.test.AbstractQueryTestCase;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.instanceOf;
|
import static org.hamcrest.CoreMatchers.instanceOf;
|
||||||
import static org.hamcrest.Matchers.containsString;
|
import static org.hamcrest.Matchers.containsString;
|
||||||
|
@ -94,37 +93,6 @@ public class IdsQueryBuilderTests extends AbstractQueryTestCase<IdsQueryBuilder>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected Map<String, IdsQueryBuilder> getAlternateVersions() {
|
|
||||||
Map<String, IdsQueryBuilder> alternateVersions = new HashMap<>();
|
|
||||||
|
|
||||||
IdsQueryBuilder tempQuery = createTestQueryBuilder();
|
|
||||||
if (tempQuery.types() != null && tempQuery.types().length > 0) {
|
|
||||||
String type = tempQuery.types()[0];
|
|
||||||
IdsQueryBuilder testQuery = new IdsQueryBuilder(type);
|
|
||||||
|
|
||||||
//single value type can also be called _type
|
|
||||||
String contentString1 = "{\n" +
|
|
||||||
" \"ids\" : {\n" +
|
|
||||||
" \"_type\" : \"" + type + "\",\n" +
|
|
||||||
" \"values\" : []\n" +
|
|
||||||
" }\n" +
|
|
||||||
"}";
|
|
||||||
alternateVersions.put(contentString1, testQuery);
|
|
||||||
|
|
||||||
//array of types can also be called type rather than types
|
|
||||||
String contentString2 = "{\n" +
|
|
||||||
" \"ids\" : {\n" +
|
|
||||||
" \"type\" : [\"" + type + "\"],\n" +
|
|
||||||
" \"values\" : []\n" +
|
|
||||||
" }\n" +
|
|
||||||
"}";
|
|
||||||
alternateVersions.put(contentString2, testQuery);
|
|
||||||
}
|
|
||||||
|
|
||||||
return alternateVersions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testIllegalArguments() {
|
public void testIllegalArguments() {
|
||||||
try {
|
try {
|
||||||
new IdsQueryBuilder((String[])null);
|
new IdsQueryBuilder((String[])null);
|
||||||
|
@ -166,4 +134,46 @@ public class IdsQueryBuilderTests extends AbstractQueryTestCase<IdsQueryBuilder>
|
||||||
assertEquals(json, 3, parsed.ids().size());
|
assertEquals(json, 3, parsed.ids().size());
|
||||||
assertEquals(json, "my_type", parsed.types()[0]);
|
assertEquals(json, "my_type", parsed.types()[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testFromJsonDeprecatedSyntax() throws IOException {
|
||||||
|
IdsQueryBuilder tempQuery = createTestQueryBuilder();
|
||||||
|
assumeTrue("test requires at least one type", tempQuery.types() != null && tempQuery.types().length > 0);
|
||||||
|
|
||||||
|
String type = tempQuery.types()[0];
|
||||||
|
IdsQueryBuilder testQuery = new IdsQueryBuilder(type);
|
||||||
|
|
||||||
|
//single value type can also be called _type
|
||||||
|
String contentString = "{\n" +
|
||||||
|
" \"ids\" : {\n" +
|
||||||
|
" \"_type\" : \"" + type + "\",\n" +
|
||||||
|
" \"values\" : []\n" +
|
||||||
|
" }\n" +
|
||||||
|
"}";
|
||||||
|
|
||||||
|
IdsQueryBuilder parsed = (IdsQueryBuilder) parseQuery(contentString, ParseFieldMatcher.EMPTY);
|
||||||
|
assertEquals(testQuery, parsed);
|
||||||
|
|
||||||
|
try {
|
||||||
|
parseQuery(contentString);
|
||||||
|
fail("parse should have failed");
|
||||||
|
} catch(IllegalArgumentException e) {
|
||||||
|
assertEquals("Deprecated field [_type] used, expected [type] instead", e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
//array of types can also be called type rather than types
|
||||||
|
contentString = "{\n" +
|
||||||
|
" \"ids\" : {\n" +
|
||||||
|
" \"types\" : [\"" + type + "\"],\n" +
|
||||||
|
" \"values\" : []\n" +
|
||||||
|
" }\n" +
|
||||||
|
"}";
|
||||||
|
parsed = (IdsQueryBuilder) parseQuery(contentString, ParseFieldMatcher.EMPTY);
|
||||||
|
assertEquals(testQuery, parsed);
|
||||||
|
try {
|
||||||
|
parseQuery(contentString);
|
||||||
|
fail("parse should have failed");
|
||||||
|
} catch(IllegalArgumentException e) {
|
||||||
|
assertEquals("Deprecated field [types] used, expected [type] instead", e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -245,7 +245,7 @@ public abstract class AbstractQueryTestCase<QB extends AbstractQueryBuilder<QB>>
|
||||||
assertParsedQuery(shuffled.bytes(), testQuery);
|
assertParsedQuery(shuffled.bytes(), testQuery);
|
||||||
for (Map.Entry<String, QB> alternateVersion : getAlternateVersions().entrySet()) {
|
for (Map.Entry<String, QB> alternateVersion : getAlternateVersions().entrySet()) {
|
||||||
String queryAsString = alternateVersion.getKey();
|
String queryAsString = alternateVersion.getKey();
|
||||||
assertParsedQuery(new BytesArray(queryAsString), alternateVersion.getValue(), ParseFieldMatcher.EMPTY);
|
assertParsedQuery(new BytesArray(queryAsString), alternateVersion.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue