[Unified Search] Fix "Edit as Query DSL" breaks when pasting in entire query DSL (#131906)

* fix: added handle the case where .query already exists and filter has other top level keys on there

* refact: handle the case where .query exists

* fix: rollback refact handle the case where .query already exists

* refact: replaced solution with pick lodash and added test

* refact: remove the extra check in jest test
This commit is contained in:
Nodir Latipov 2022-05-24 15:22:32 +05:00 committed by GitHub
parent 5d7372dfc0
commit 4557beb25b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 3 deletions

View file

@ -9,6 +9,7 @@
import { isEqual, cloneDeep } from 'lodash';
import { migrateFilter, DeprecatedMatchPhraseFilter } from './migrate_filter';
import { PhraseFilter, MatchAllFilter } from '../filters';
import { Filter } from '../filters';
describe('migrateFilter', function () {
const oldMatchPhraseFilter = {
@ -66,7 +67,23 @@ describe('migrateFilter', function () {
} as MatchAllFilter;
const migratedFilter = migrateFilter(originalFilter, undefined);
expect(migratedFilter).toBe(originalFilter);
expect(isEqual(migratedFilter, originalFilter)).toBe(true);
expect(migratedFilter).toEqual(originalFilter);
});
it('should handle the case where .query already exists and filter has other top level keys on there', function () {
const originalFilter = {
query: { match_all: {} },
meta: {},
size: 0,
} as Filter;
const filterAfterMigrate = {
query: { match_all: {} },
meta: {},
} as Filter;
const migratedFilter = migrateFilter(originalFilter, undefined);
expect(migratedFilter).toEqual(filterAfterMigrate);
});
});

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import { get, omit } from 'lodash';
import { get, omit, pick } from 'lodash';
import { getConvertedValueForField } from '../filters';
import { Filter } from '../filters';
import { DataViewBase } from './types';
@ -65,6 +65,9 @@ export function migrateFilter(filter: Filter, indexPattern?: DataViewBase) {
if (!filter.query) {
filter.query = {};
} else {
// handle the case where .query already exists and filter has other top level keys on there
filter = pick(filter, ['meta', 'query', '$state']);
}
// @ts-ignore