From 42e92010a0e28e7a3c46b35aaa9696ee67528f5e Mon Sep 17 00:00:00 2001 From: Joe Reuter Date: Thu, 14 Mar 2024 11:45:21 +0100 Subject: [PATCH] add tests --- .../discover/public/__mocks__/saved_search.ts | 2 + .../main/services/discover_state.test.ts | 39 +++++++++++++- .../main/utils/update_saved_search.test.ts | 51 +++++++++++++++++++ 3 files changed, 91 insertions(+), 1 deletion(-) diff --git a/src/plugins/discover/public/__mocks__/saved_search.ts b/src/plugins/discover/public/__mocks__/saved_search.ts index de9a6c199d35a..0486d6c4b6e33 100644 --- a/src/plugins/discover/public/__mocks__/saved_search.ts +++ b/src/plugins/discover/public/__mocks__/saved_search.ts @@ -17,6 +17,8 @@ export const savedSearchMock = { id: 'the-saved-search-id', title: 'A saved search', searchSource: createSearchSourceMock({ index: dataViewMock }), + columns: ['default_column'], + sort: [], } as unknown as SavedSearch; export const savedSearchMockWithTimeField = { diff --git a/src/plugins/discover/public/application/main/services/discover_state.test.ts b/src/plugins/discover/public/application/main/services/discover_state.test.ts index 9e742f7238410..f68db8dc7a752 100644 --- a/src/plugins/discover/public/application/main/services/discover_state.test.ts +++ b/src/plugins/discover/public/application/main/services/discover_state.test.ts @@ -12,7 +12,7 @@ import { createSearchSessionRestorationDataProvider, } from './discover_state'; import { createBrowserHistory, createMemoryHistory, History } from 'history'; -import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; +import { createSearchSourceMock, dataPluginMock } from '@kbn/data-plugin/public/mocks'; import type { SavedSearch, SortOrder } from '@kbn/saved-search-plugin/public'; import { savedSearchAdHoc, @@ -524,6 +524,43 @@ describe('Test discover state actions', () => { unsubscribe(); }); + test('loadSavedSearch given a URL with different time range than the stored one showing as changed', async () => { + const url = '/#_g=(time:(from:now-24h%2Fh,to:now))'; + const savedSearch = { + ...savedSearchMock, + searchSource: createSearchSourceMock({ index: dataViewMock, filter: [] }), + timeRestore: true, + timeRange: { from: 'now-666m', to: 'now' }, + }; + const { state } = await getState(url, { + savedSearch, + isEmptyUrl: false, + }); + await state.actions.loadSavedSearch({ savedSearchId: savedSearchMock.id }); + const unsubscribe = state.actions.initializeAndSync(); + await new Promise(process.nextTick); + expect(state.savedSearchState.getHasChanged$().getValue()).toBe(true); + unsubscribe(); + }); + + test('loadSavedSearch given a URL with different time range than without timeRestore not showing as changed', async () => { + const url = '/#?_g=(time:(from:now-24h%2Fh,to:now))'; + const savedSearch = { + ...savedSearchMock, + searchSource: createSearchSourceMock({ index: dataViewMock, filter: [] }), + timeRestore: false, + }; + const { state } = await getState(url, { + savedSearch, + isEmptyUrl: false, + }); + await state.actions.loadSavedSearch({ savedSearchId: savedSearchMock.id }); + const unsubscribe = state.actions.initializeAndSync(); + await new Promise(process.nextTick); + expect(state.savedSearchState.getHasChanged$().getValue()).toBe(false); + unsubscribe(); + }); + test('loadSavedSearch ignoring hideChart in URL', async () => { const url = '/#?_a=(hideChart:true,columns:!(message))&_g=()'; const { state } = await getState(url, { savedSearch: savedSearchMock }); diff --git a/src/plugins/discover/public/application/main/utils/update_saved_search.test.ts b/src/plugins/discover/public/application/main/utils/update_saved_search.test.ts index 17fee93fc92af..e7327e6303de2 100644 --- a/src/plugins/discover/public/application/main/utils/update_saved_search.test.ts +++ b/src/plugins/discover/public/application/main/utils/update_saved_search.test.ts @@ -10,6 +10,7 @@ import { savedSearchMock } from '../../../__mocks__/saved_search'; import { discoverServiceMock } from '../../../__mocks__/services'; import { Filter, FilterStateStore, Query } from '@kbn/es-query'; import { updateSavedSearch } from './update_saved_search'; +import { SavedSearch } from '@kbn/saved-search-plugin/public'; describe('updateSavedSearch', () => { const query: Query = { @@ -73,6 +74,56 @@ describe('updateSavedSearch', () => { expect(savedSearch.searchSource.getField('filter')).toEqual([globalFilter, appFilter]); }); + it('should set time range is timeRestore is enabled', async () => { + const savedSearch: SavedSearch = { + ...savedSearchMock, + searchSource: savedSearchMock.searchSource.createCopy(), + timeRestore: true, + }; + (discoverServiceMock.timefilter.getTime as jest.Mock).mockReturnValue({ + from: 'now-666m', + to: 'now', + }); + updateSavedSearch({ + savedSearch, + globalStateContainer: createGlobalStateContainer(), + services: discoverServiceMock, + state: { + query, + filters: [appFilter], + }, + }); + expect(savedSearch.timeRange).toEqual({ + from: 'now-666m', + to: 'now', + }); + }); + + it('should not set time range is timeRestore is enabled', async () => { + const savedSearch: SavedSearch = { + ...savedSearchMock, + searchSource: savedSearchMock.searchSource.createCopy(), + timeRestore: false, + }; + (discoverServiceMock.timefilter.getTime as jest.Mock).mockReturnValue({ + from: 'now-666m', + to: 'now', + }); + updateSavedSearch({ + savedSearch, + globalStateContainer: createGlobalStateContainer(), + services: discoverServiceMock, + state: { + query, + filters: [appFilter], + }, + }); + expect(savedSearch.timeRange).not.toEqual({ + from: 'now-666m', + to: 'now', + }); + }); + it('should set query and filters from services', async () => { const savedSearch = { ...savedSearchMock,