mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
* backport disco-filters * add await
This commit is contained in:
parent
b2e95c27a0
commit
74b845d43a
2 changed files with 36 additions and 10 deletions
|
@ -240,14 +240,16 @@ describe('filter_manager', () => {
|
|||
expect(appStateStub.filters.length).toBe(1);
|
||||
});
|
||||
|
||||
test('app state should accept array', async () => {
|
||||
test('app state should accept array and preserve order', async () => {
|
||||
const f1 = getFilter(FilterStateStore.APP_STATE, false, false, 'age', 34);
|
||||
const f2 = getFilter(FilterStateStore.APP_STATE, false, false, 'gender', 'female');
|
||||
|
||||
await filterManager.addFilters([f1]);
|
||||
await filterManager.addFilters([f2]);
|
||||
expect(filterManager.getAppFilters()).toHaveLength(2);
|
||||
const appFilters = filterManager.getAppFilters();
|
||||
expect(appFilters).toHaveLength(2);
|
||||
expect(appFilters).toEqual([f1, f2]);
|
||||
expect(filterManager.getGlobalFilters()).toHaveLength(0);
|
||||
expect(appStateStub.filters.length).toBe(2);
|
||||
});
|
||||
|
||||
test('global state should accept a single filer', async () => {
|
||||
|
@ -260,13 +262,33 @@ describe('filter_manager', () => {
|
|||
expect(globalStateStub.filters.length).toBe(1);
|
||||
});
|
||||
|
||||
test('global state should be accept array', async () => {
|
||||
test('global state should be accept array and preserve order', async () => {
|
||||
const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34);
|
||||
const f2 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'gender', 'female');
|
||||
|
||||
await filterManager.addFilters([f1, f2]);
|
||||
expect(filterManager.getAppFilters()).toHaveLength(0);
|
||||
expect(filterManager.getGlobalFilters()).toHaveLength(2);
|
||||
expect(globalStateStub.filters.length).toBe(2);
|
||||
const globalFilters = filterManager.getGlobalFilters();
|
||||
expect(globalFilters).toHaveLength(2);
|
||||
expect(globalFilters).toEqual([f1, f2]);
|
||||
});
|
||||
|
||||
test('mixed filters: global filters should stay in the beginning', async () => {
|
||||
const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34);
|
||||
const f2 = getFilter(FilterStateStore.APP_STATE, false, false, 'gender', 'female');
|
||||
await filterManager.addFilters([f1, f2]);
|
||||
const filters = filterManager.getFilters();
|
||||
expect(filters).toHaveLength(2);
|
||||
expect(filters).toEqual([f1, f2]);
|
||||
});
|
||||
|
||||
test('mixed filters: global filters should move to the beginning', async () => {
|
||||
const f1 = getFilter(FilterStateStore.APP_STATE, false, false, 'age', 34);
|
||||
const f2 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'gender', 'female');
|
||||
await filterManager.addFilters([f1, f2]);
|
||||
const filters = filterManager.getFilters();
|
||||
expect(filters).toHaveLength(2);
|
||||
expect(filters).toEqual([f2, f1]);
|
||||
});
|
||||
|
||||
test('add multiple filters at once', async () => {
|
||||
|
|
|
@ -88,10 +88,14 @@ export class FilterManager {
|
|||
private handleStateUpdate(newFilters: Filter[]) {
|
||||
// global filters should always be first
|
||||
newFilters.sort(({ $state: a }: Filter, { $state: b }: Filter): number => {
|
||||
return a!.store === FilterStateStore.GLOBAL_STATE &&
|
||||
b!.store !== FilterStateStore.GLOBAL_STATE
|
||||
? -1
|
||||
: 1;
|
||||
if (a!.store === b!.store) {
|
||||
return 0;
|
||||
} else {
|
||||
return a!.store === FilterStateStore.GLOBAL_STATE &&
|
||||
b!.store !== FilterStateStore.GLOBAL_STATE
|
||||
? -1
|
||||
: 1;
|
||||
}
|
||||
});
|
||||
|
||||
const filtersUpdated = !_.isEqual(this.filters, newFilters);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue