diff --git a/src/plugins/data/common/search/search_source/fetch/get_search_params.test.ts b/src/plugins/data/common/search/search_source/fetch/get_search_params.test.ts index 99f813294fe5a..68b9d234e6667 100644 --- a/src/plugins/data/common/search/search_source/fetch/get_search_params.test.ts +++ b/src/plugins/data/common/search/search_source/fetch/get_search_params.test.ts @@ -9,7 +9,7 @@ import { UI_SETTINGS } from '../../../constants'; import { GetConfigFn } from '../../../types'; -import { getSearchParams, getSearchParamsFromRequest } from './get_search_params'; +import { getSearchParamsFromRequest, getEsPreference } from './get_search_params'; import { createStubDataView } from '@kbn/data-views-plugin/common/data_views/data_view.stub'; function getConfigStub(config: any = {}): GetConfigFn { @@ -18,11 +18,11 @@ function getConfigStub(config: any = {}): GetConfigFn { describe('getSearchParams', () => { test('includes custom preference', () => { - const config = getConfigStub({ + const getConfig = getConfigStub({ [UI_SETTINGS.COURIER_SET_REQUEST_PREFERENCE]: 'custom', [UI_SETTINGS.COURIER_CUSTOM_REQUEST_PREFERENCE]: 'aaa', }); - const searchParams = getSearchParams(config); + const searchParams = getSearchParamsFromRequest({ index: 'abc', body: {} }, { getConfig }); expect(searchParams.preference).toBe('aaa'); }); @@ -94,4 +94,39 @@ describe('getSearchParams', () => { ); expect(searchParams).not.toHaveProperty('expand_wildcards', 'all'); }); + + describe('getEsPreference', () => { + const mockConfigGet = jest.fn(); + + beforeEach(() => { + mockConfigGet.mockClear(); + }); + + test('returns the session ID if set to sessionId', () => { + mockConfigGet.mockImplementation((key: string) => { + if (key === UI_SETTINGS.COURIER_SET_REQUEST_PREFERENCE) return 'sessionId'; + if (key === UI_SETTINGS.COURIER_CUSTOM_REQUEST_PREFERENCE) return 'foobar'; + }); + const preference = getEsPreference(mockConfigGet, 'my_session_id'); + expect(preference).toBe('my_session_id'); + }); + + test('returns the custom preference if set to custom', () => { + mockConfigGet.mockImplementation((key: string) => { + if (key === UI_SETTINGS.COURIER_SET_REQUEST_PREFERENCE) return 'custom'; + if (key === UI_SETTINGS.COURIER_CUSTOM_REQUEST_PREFERENCE) return 'foobar'; + }); + const preference = getEsPreference(mockConfigGet); + expect(preference).toBe('foobar'); + }); + + test('returns undefined if set to none', () => { + mockConfigGet.mockImplementation((key: string) => { + if (key === UI_SETTINGS.COURIER_SET_REQUEST_PREFERENCE) return 'none'; + if (key === UI_SETTINGS.COURIER_CUSTOM_REQUEST_PREFERENCE) return 'foobar'; + }); + const preference = getEsPreference(mockConfigGet); + expect(preference).toBe(undefined); + }); + }); }); diff --git a/src/plugins/data/common/search/search_source/fetch/get_search_params.ts b/src/plugins/data/common/search/search_source/fetch/get_search_params.ts index 221e670dae6dc..f1784770fe3ba 100644 --- a/src/plugins/data/common/search/search_source/fetch/get_search_params.ts +++ b/src/plugins/data/common/search/search_source/fetch/get_search_params.ts @@ -12,20 +12,16 @@ import { UI_SETTINGS } from '../../../constants'; import { GetConfigFn } from '../../../types'; import type { SearchRequest } from './types'; -const sessionId = Date.now(); +const defaultSessionId = `${Date.now()}`; -export function getSearchParams(getConfig: GetConfigFn) { - return { - preference: getPreference(getConfig), - }; -} - -export function getPreference(getConfig: GetConfigFn) { - const setRequestPreference = getConfig(UI_SETTINGS.COURIER_SET_REQUEST_PREFERENCE); - if (setRequestPreference === 'sessionId') return sessionId; - return setRequestPreference === 'custom' - ? getConfig(UI_SETTINGS.COURIER_CUSTOM_REQUEST_PREFERENCE) - : undefined; +export function getEsPreference( + getConfigFn: GetConfigFn, + sessionId = defaultSessionId +): SearchRequest['preference'] { + const setPreference = getConfigFn(UI_SETTINGS.COURIER_SET_REQUEST_PREFERENCE); + if (setPreference === 'sessionId') return sessionId; + const customPreference = getConfigFn(UI_SETTINGS.COURIER_CUSTOM_REQUEST_PREFERENCE); + return setPreference === 'custom' ? customPreference : undefined; } /** @public */ @@ -36,7 +32,7 @@ export function getSearchParamsFromRequest( dependencies: { getConfig: GetConfigFn } ): ISearchRequestParams { const { getConfig } = dependencies; - const searchParams = getSearchParams(getConfig); + const searchParams = { preference: getEsPreference(getConfig) }; // eslint-disable-next-line @typescript-eslint/naming-convention const { track_total_hits, ...body } = searchRequest.body; const dataView = typeof searchRequest.index !== 'string' ? searchRequest.index : undefined; diff --git a/src/plugins/data/common/search/search_source/fetch/index.ts b/src/plugins/data/common/search/search_source/fetch/index.ts index f097189fe4bae..3f621c66eeaa3 100644 --- a/src/plugins/data/common/search/search_source/fetch/index.ts +++ b/src/plugins/data/common/search/search_source/fetch/index.ts @@ -7,6 +7,6 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export { getSearchParams, getSearchParamsFromRequest, getPreference } from './get_search_params'; +export { getSearchParamsFromRequest, getEsPreference } from './get_search_params'; export { RequestFailure } from './request_error'; export * from './types'; diff --git a/src/plugins/data/public/search/es_search/get_es_preference.test.ts b/src/plugins/data/public/search/es_search/get_es_preference.test.ts deleted file mode 100644 index e9edbdac475d8..0000000000000 --- a/src/plugins/data/public/search/es_search/get_es_preference.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import type { MockedKeys } from '@kbn/utility-types-jest'; -import { getEsPreference } from './get_es_preference'; -import { CoreStart } from '@kbn/core/public'; -import { coreMock } from '@kbn/core/public/mocks'; -import { UI_SETTINGS } from '../../../common'; - -describe('Get ES preference', () => { - let mockCoreStart: MockedKeys; - - beforeEach(() => { - mockCoreStart = coreMock.createStart(); - }); - - test('returns the session ID if set to sessionId', () => { - mockCoreStart.uiSettings.get.mockImplementation((key: string) => { - if (key === UI_SETTINGS.COURIER_SET_REQUEST_PREFERENCE) return 'sessionId'; - if (key === UI_SETTINGS.COURIER_CUSTOM_REQUEST_PREFERENCE) return 'foobar'; - }); - const preference = getEsPreference(mockCoreStart.uiSettings, 'my_session_id'); - expect(preference).toBe('my_session_id'); - }); - - test('returns the custom preference if set to custom', () => { - mockCoreStart.uiSettings.get.mockImplementation((key: string) => { - if (key === UI_SETTINGS.COURIER_SET_REQUEST_PREFERENCE) return 'custom'; - if (key === UI_SETTINGS.COURIER_CUSTOM_REQUEST_PREFERENCE) return 'foobar'; - }); - const preference = getEsPreference(mockCoreStart.uiSettings); - expect(preference).toBe('foobar'); - }); - - test('returns undefined if set to none', () => { - mockCoreStart.uiSettings.get.mockImplementation((key: string) => { - if (key === UI_SETTINGS.COURIER_SET_REQUEST_PREFERENCE) return 'none'; - if (key === UI_SETTINGS.COURIER_CUSTOM_REQUEST_PREFERENCE) return 'foobar'; - }); - const preference = getEsPreference(mockCoreStart.uiSettings); - expect(preference).toBe(undefined); - }); -}); diff --git a/src/plugins/data/public/search/es_search/get_es_preference.ts b/src/plugins/data/public/search/es_search/get_es_preference.ts deleted file mode 100644 index e07aaf0ce99a8..0000000000000 --- a/src/plugins/data/public/search/es_search/get_es_preference.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { IUiSettingsClient } from '@kbn/core/public'; -import { UI_SETTINGS } from '../../../common'; - -const defaultSessionId = `${Date.now()}`; - -export function getEsPreference(uiSettings: IUiSettingsClient, sessionId = defaultSessionId) { - const setPreference = uiSettings.get(UI_SETTINGS.COURIER_SET_REQUEST_PREFERENCE); - if (setPreference === 'sessionId') return `${sessionId}`; - const customPreference = uiSettings.get(UI_SETTINGS.COURIER_CUSTOM_REQUEST_PREFERENCE); - return setPreference === 'custom' ? customPreference : undefined; -} diff --git a/src/plugins/data/public/search/es_search/index.ts b/src/plugins/data/public/search/es_search/index.ts deleted file mode 100644 index 8084588003204..0000000000000 --- a/src/plugins/data/public/search/es_search/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export { getEsPreference } from './get_es_preference'; diff --git a/src/plugins/data/public/search/index.ts b/src/plugins/data/public/search/index.ts index a2f5c6fe1a3b5..a678d2d4f7521 100644 --- a/src/plugins/data/public/search/index.ts +++ b/src/plugins/data/public/search/index.ts @@ -48,7 +48,6 @@ export { SEARCH_SESSIONS_MANAGEMENT_ID, waitUntilNextSessionCompletes$, } from './session'; -export { getEsPreference } from './es_search'; export type { SearchInterceptorDeps } from './search_interceptor'; export { SearchInterceptor } from './search_interceptor';