Elasticsearch: Migrate frontend query builder tests to backend (#59578)

* WIP: Migrated first batch of tests

* Migrate more tests

* Migrate rest of the tests

* Update comments

* Update

* Update

* Remove newline
This commit is contained in:
Ivana Huckova
2022-12-01 12:09:12 +01:00
committed by GitHub
parent 0a9b238d39
commit a2ed586576
3 changed files with 680 additions and 21 deletions

View File

@@ -1,5 +1,5 @@
import { ElasticQueryBuilder } from './QueryBuilder';
import { ElasticsearchQuery } from './types';
import { ElasticsearchQuery, TermsQuery } from './types';
describe('ElasticQueryBuilder', () => {
const builder = new ElasticQueryBuilder({ timeField: '@timestamp' }); // es2
@@ -266,7 +266,7 @@ describe('ElasticQueryBuilder', () => {
refId: 'A',
metrics: [{ type: 'raw_document', id: '1', settings: {} }],
timeField: '@timestamp',
bucketAggs: [] as any[],
bucketAggs: [],
};
const query = builder.build(target);
@@ -587,6 +587,8 @@ describe('ElasticQueryBuilder', () => {
expect(firstLevel.histogram.min_doc_count).toBe('2');
});
// This test wasn't migrated, as adhoc variables are going to be interpolated before
// Or we need to add this to backend query builder (TBD)
it('with adhoc filters', () => {
const query = builder.build(
{
@@ -616,12 +618,17 @@ describe('ElasticQueryBuilder', () => {
});
describe('getTermsQuery', () => {
function testGetTermsQuery(queryDef: any) {
function testGetTermsQuery(queryDef: TermsQuery) {
const query = builder.getTermsQuery(queryDef);
return query.aggs['1'].terms.order;
}
function checkSort(order: any, expected: string) {
function checkSort(
order: {
[key: string]: string;
},
expected: string
) {
expect(order._term).toBeUndefined();
expect(order._key).toBe(expected);
}
@@ -665,7 +672,9 @@ describe('ElasticQueryBuilder', () => {
it('should not add query_string filter when query is empty', () => {
const query = builder.getTermsQuery({ orderBy: 'doc_count', order: 'asc' });
expect(query.query.bool.filter.find((filter: any) => Object.keys(filter).includes('query_string'))).toBeFalsy();
expect(
query.query.bool.filter.find((filter: object) => Object.keys(filter).includes('query_string'))
).toBeFalsy();
});
});
});
@@ -683,7 +692,9 @@ describe('ElasticQueryBuilder', () => {
it('should not add query_string filter when query is empty', () => {
const query = builder.build({ refId: 'A' });
expect(query.query.bool.filter.find((filter: any) => Object.keys(filter).includes('query_string'))).toBeFalsy();
expect(
query.query.bool.filter.find((filter: object) => Object.keys(filter).includes('query_string'))
).toBeFalsy();
});
});
@@ -705,7 +716,7 @@ describe('ElasticQueryBuilder', () => {
{ _doc: { order: 'desc' } },
]);
const expectedAggs: any = {
const expectedAggs = {
// FIXME: It's pretty weak to include this '1' in the test as it's not part of what we are testing here and
// might change as a cause of unrelated changes
1: {
@@ -736,7 +747,9 @@ describe('ElasticQueryBuilder', () => {
it('should not add query_string filter when query is empty', () => {
const query = builder.getLogsQuery({ refId: 'A' }, 500);
expect(query.query.bool.filter.find((filter: any) => Object.keys(filter).includes('query_string'))).toBeFalsy();
expect(
query.query.bool.filter.find((filter: object) => Object.keys(filter).includes('query_string'))
).toBeFalsy();
});
});