mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
Better async (#89636)
This commit is contained in:
parent
5feca52dea
commit
8780a2de6e
15 changed files with 247 additions and 349 deletions
|
@ -9,13 +9,14 @@ import {
|
|||
mockKibanaValues,
|
||||
mockHttpValues,
|
||||
mockFlashMessageHelpers,
|
||||
expectedAsyncError,
|
||||
} from '../../../__mocks__';
|
||||
|
||||
jest.mock('../engine', () => ({
|
||||
EngineLogic: { values: { engineName: 'test-engine' } },
|
||||
}));
|
||||
|
||||
import { nextTick } from '@kbn/test/jest';
|
||||
|
||||
import { DEFAULT_START_DATE, DEFAULT_END_DATE } from './constants';
|
||||
import { AnalyticsLogic } from './';
|
||||
|
||||
|
@ -176,13 +177,12 @@ describe('AnalyticsLogic', () => {
|
|||
});
|
||||
|
||||
it('should make an API call and set state based on the response', async () => {
|
||||
const promise = Promise.resolve(MOCK_ANALYTICS_RESPONSE);
|
||||
http.get.mockReturnValueOnce(promise);
|
||||
http.get.mockReturnValueOnce(Promise.resolve(MOCK_ANALYTICS_RESPONSE));
|
||||
mount();
|
||||
jest.spyOn(AnalyticsLogic.actions, 'onAnalyticsDataLoad');
|
||||
|
||||
AnalyticsLogic.actions.loadAnalyticsData();
|
||||
await promise;
|
||||
await nextTick();
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith(
|
||||
'/api/app_search/engines/test-engine/analytics/queries',
|
||||
|
@ -220,25 +220,23 @@ describe('AnalyticsLogic', () => {
|
|||
});
|
||||
|
||||
it('calls onAnalyticsUnavailable if analyticsUnavailable is in response', async () => {
|
||||
const promise = Promise.resolve({ analyticsUnavailable: true });
|
||||
http.get.mockReturnValueOnce(promise);
|
||||
http.get.mockReturnValueOnce(Promise.resolve({ analyticsUnavailable: true }));
|
||||
mount();
|
||||
jest.spyOn(AnalyticsLogic.actions, 'onAnalyticsUnavailable');
|
||||
|
||||
AnalyticsLogic.actions.loadAnalyticsData();
|
||||
await promise;
|
||||
await nextTick();
|
||||
|
||||
expect(AnalyticsLogic.actions.onAnalyticsUnavailable).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('handles errors', async () => {
|
||||
const promise = Promise.reject('error');
|
||||
http.get.mockReturnValueOnce(promise);
|
||||
http.get.mockReturnValueOnce(Promise.reject('error'));
|
||||
mount();
|
||||
jest.spyOn(AnalyticsLogic.actions, 'onAnalyticsUnavailable');
|
||||
|
||||
AnalyticsLogic.actions.loadAnalyticsData();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('error');
|
||||
expect(AnalyticsLogic.actions.onAnalyticsUnavailable).toHaveBeenCalled();
|
||||
|
@ -258,13 +256,12 @@ describe('AnalyticsLogic', () => {
|
|||
});
|
||||
|
||||
it('should make an API call and set state based on the response', async () => {
|
||||
const promise = Promise.resolve(MOCK_QUERY_RESPONSE);
|
||||
http.get.mockReturnValueOnce(promise);
|
||||
http.get.mockReturnValueOnce(Promise.resolve(MOCK_QUERY_RESPONSE));
|
||||
mount();
|
||||
jest.spyOn(AnalyticsLogic.actions, 'onQueryDataLoad');
|
||||
|
||||
AnalyticsLogic.actions.loadQueryData('some-query');
|
||||
await promise;
|
||||
await nextTick();
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith(
|
||||
'/api/app_search/engines/test-engine/analytics/queries/some-query',
|
||||
|
@ -298,25 +295,23 @@ describe('AnalyticsLogic', () => {
|
|||
});
|
||||
|
||||
it('calls onAnalyticsUnavailable if analyticsUnavailable is in response', async () => {
|
||||
const promise = Promise.resolve({ analyticsUnavailable: true });
|
||||
http.get.mockReturnValueOnce(promise);
|
||||
http.get.mockReturnValueOnce(Promise.resolve({ analyticsUnavailable: true }));
|
||||
mount();
|
||||
jest.spyOn(AnalyticsLogic.actions, 'onAnalyticsUnavailable');
|
||||
|
||||
AnalyticsLogic.actions.loadQueryData('some-query');
|
||||
await promise;
|
||||
await nextTick();
|
||||
|
||||
expect(AnalyticsLogic.actions.onAnalyticsUnavailable).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('handles errors', async () => {
|
||||
const promise = Promise.reject('error');
|
||||
http.get.mockReturnValueOnce(promise);
|
||||
http.get.mockReturnValueOnce(Promise.reject('error'));
|
||||
mount();
|
||||
jest.spyOn(AnalyticsLogic.actions, 'onAnalyticsUnavailable');
|
||||
|
||||
AnalyticsLogic.actions.loadQueryData('some-query');
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('error');
|
||||
expect(AnalyticsLogic.actions.onAnalyticsUnavailable).toHaveBeenCalled();
|
||||
|
|
|
@ -4,12 +4,7 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import {
|
||||
LogicMounter,
|
||||
mockFlashMessageHelpers,
|
||||
mockHttpValues,
|
||||
expectedAsyncError,
|
||||
} from '../../../__mocks__';
|
||||
import { LogicMounter, mockFlashMessageHelpers, mockHttpValues } from '../../../__mocks__';
|
||||
|
||||
jest.mock('../../app_logic', () => ({
|
||||
AppLogic: {
|
||||
|
@ -17,9 +12,12 @@ jest.mock('../../app_logic', () => ({
|
|||
values: { myRole: jest.fn(() => ({})) },
|
||||
},
|
||||
}));
|
||||
import { AppLogic } from '../../app_logic';
|
||||
|
||||
import { nextTick } from '@kbn/test/jest';
|
||||
|
||||
import { AppLogic } from '../../app_logic';
|
||||
import { ApiTokenTypes } from './constants';
|
||||
|
||||
import { CredentialsLogic } from './credentials_logic';
|
||||
|
||||
describe('CredentialsLogic', () => {
|
||||
|
@ -1064,8 +1062,7 @@ describe('CredentialsLogic', () => {
|
|||
it('will call an API endpoint and set the results with the `setCredentialsData` action', async () => {
|
||||
mount();
|
||||
jest.spyOn(CredentialsLogic.actions, 'setCredentialsData').mockImplementationOnce(() => {});
|
||||
const promise = Promise.resolve({ meta, results });
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve({ meta, results }));
|
||||
|
||||
CredentialsLogic.actions.fetchCredentials(2);
|
||||
expect(http.get).toHaveBeenCalledWith('/api/app_search/credentials', {
|
||||
|
@ -1073,17 +1070,16 @@ describe('CredentialsLogic', () => {
|
|||
'page[current]': 2,
|
||||
},
|
||||
});
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(CredentialsLogic.actions.setCredentialsData).toHaveBeenCalledWith(meta, results);
|
||||
});
|
||||
|
||||
it('handles errors', async () => {
|
||||
mount();
|
||||
const promise = Promise.reject('An error occured');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('An error occured'));
|
||||
|
||||
CredentialsLogic.actions.fetchCredentials();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('An error occured');
|
||||
});
|
||||
|
@ -1095,12 +1091,11 @@ describe('CredentialsLogic', () => {
|
|||
jest
|
||||
.spyOn(CredentialsLogic.actions, 'setCredentialsDetails')
|
||||
.mockImplementationOnce(() => {});
|
||||
const promise = Promise.resolve(credentialsDetails);
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve(credentialsDetails));
|
||||
|
||||
CredentialsLogic.actions.fetchDetails();
|
||||
expect(http.get).toHaveBeenCalledWith('/api/app_search/credentials/details');
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(CredentialsLogic.actions.setCredentialsDetails).toHaveBeenCalledWith(
|
||||
credentialsDetails
|
||||
);
|
||||
|
@ -1108,11 +1103,10 @@ describe('CredentialsLogic', () => {
|
|||
|
||||
it('handles errors', async () => {
|
||||
mount();
|
||||
const promise = Promise.reject('An error occured');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('An error occured'));
|
||||
|
||||
CredentialsLogic.actions.fetchDetails();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('An error occured');
|
||||
});
|
||||
|
@ -1124,23 +1118,21 @@ describe('CredentialsLogic', () => {
|
|||
it('will call an API endpoint and set the results with the `onApiKeyDelete` action', async () => {
|
||||
mount();
|
||||
jest.spyOn(CredentialsLogic.actions, 'onApiKeyDelete').mockImplementationOnce(() => {});
|
||||
const promise = Promise.resolve();
|
||||
http.delete.mockReturnValue(promise);
|
||||
http.delete.mockReturnValue(Promise.resolve());
|
||||
|
||||
CredentialsLogic.actions.deleteApiKey(tokenName);
|
||||
expect(http.delete).toHaveBeenCalledWith(`/api/app_search/credentials/${tokenName}`);
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(CredentialsLogic.actions.onApiKeyDelete).toHaveBeenCalledWith(tokenName);
|
||||
expect(setSuccessMessage).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('handles errors', async () => {
|
||||
mount();
|
||||
const promise = Promise.reject('An error occured');
|
||||
http.delete.mockReturnValue(promise);
|
||||
http.delete.mockReturnValue(Promise.reject('An error occured'));
|
||||
|
||||
CredentialsLogic.actions.deleteApiKey(tokenName);
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('An error occured');
|
||||
});
|
||||
|
@ -1156,14 +1148,13 @@ describe('CredentialsLogic', () => {
|
|||
activeApiToken: createdToken,
|
||||
});
|
||||
jest.spyOn(CredentialsLogic.actions, 'onApiTokenCreateSuccess');
|
||||
const promise = Promise.resolve(createdToken);
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.resolve(createdToken));
|
||||
|
||||
CredentialsLogic.actions.onApiTokenChange();
|
||||
expect(http.post).toHaveBeenCalledWith('/api/app_search/credentials', {
|
||||
body: JSON.stringify(createdToken),
|
||||
});
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(CredentialsLogic.actions.onApiTokenCreateSuccess).toHaveBeenCalledWith(createdToken);
|
||||
expect(setSuccessMessage).toHaveBeenCalled();
|
||||
});
|
||||
|
@ -1184,25 +1175,23 @@ describe('CredentialsLogic', () => {
|
|||
},
|
||||
});
|
||||
jest.spyOn(CredentialsLogic.actions, 'onApiTokenUpdateSuccess');
|
||||
const promise = Promise.resolve(updatedToken);
|
||||
http.put.mockReturnValue(promise);
|
||||
http.put.mockReturnValue(Promise.resolve(updatedToken));
|
||||
|
||||
CredentialsLogic.actions.onApiTokenChange();
|
||||
expect(http.put).toHaveBeenCalledWith('/api/app_search/credentials/test-key', {
|
||||
body: JSON.stringify(updatedToken),
|
||||
});
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(CredentialsLogic.actions.onApiTokenUpdateSuccess).toHaveBeenCalledWith(updatedToken);
|
||||
expect(setSuccessMessage).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('handles errors', async () => {
|
||||
mount();
|
||||
const promise = Promise.reject('An error occured');
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.reject('An error occured'));
|
||||
|
||||
CredentialsLogic.actions.onApiTokenChange();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('An error occured');
|
||||
});
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
import { LogicMounter, mockHttpValues } from '../../../__mocks__';
|
||||
|
||||
import { nextTick } from '@kbn/test/jest';
|
||||
import dedent from 'dedent';
|
||||
|
||||
jest.mock('./utils', () => ({
|
||||
|
@ -443,10 +444,10 @@ describe('DocumentCreationLogic', () => {
|
|||
});
|
||||
|
||||
it('should set and show summary from the returned response', async () => {
|
||||
const promise = http.post.mockReturnValueOnce(Promise.resolve(mockValidResponse));
|
||||
http.post.mockReturnValueOnce(Promise.resolve(mockValidResponse));
|
||||
|
||||
await DocumentCreationLogic.actions.uploadDocuments({ documents: mockValidDocuments });
|
||||
await promise;
|
||||
await nextTick();
|
||||
|
||||
expect(DocumentCreationLogic.actions.setSummary).toHaveBeenCalledWith(mockValidResponse);
|
||||
expect(DocumentCreationLogic.actions.setCreationStep).toHaveBeenCalledWith(
|
||||
|
@ -462,7 +463,7 @@ describe('DocumentCreationLogic', () => {
|
|||
});
|
||||
|
||||
it('handles API errors', async () => {
|
||||
const promise = http.post.mockReturnValueOnce(
|
||||
http.post.mockReturnValueOnce(
|
||||
Promise.reject({
|
||||
body: {
|
||||
statusCode: 400,
|
||||
|
@ -473,7 +474,7 @@ describe('DocumentCreationLogic', () => {
|
|||
);
|
||||
|
||||
await DocumentCreationLogic.actions.uploadDocuments({ documents: [{}] });
|
||||
await promise;
|
||||
await nextTick();
|
||||
|
||||
expect(DocumentCreationLogic.actions.setErrors).toHaveBeenCalledWith(
|
||||
'[400 Bad Request] Invalid request payload JSON format'
|
||||
|
@ -481,10 +482,10 @@ describe('DocumentCreationLogic', () => {
|
|||
});
|
||||
|
||||
it('handles client-side errors', async () => {
|
||||
const promise = (http.post as jest.Mock).mockReturnValueOnce(new Error());
|
||||
(http.post as jest.Mock).mockReturnValueOnce(new Error());
|
||||
|
||||
await DocumentCreationLogic.actions.uploadDocuments({ documents: [{}] });
|
||||
await promise;
|
||||
await nextTick();
|
||||
|
||||
expect(DocumentCreationLogic.actions.setErrors).toHaveBeenCalledWith(
|
||||
"Cannot read property 'total' of undefined"
|
||||
|
@ -493,14 +494,14 @@ describe('DocumentCreationLogic', () => {
|
|||
|
||||
// NOTE: I can't seem to reproduce this in a production setting.
|
||||
it('handles errors returned from the API', async () => {
|
||||
const promise = http.post.mockReturnValueOnce(
|
||||
http.post.mockReturnValueOnce(
|
||||
Promise.resolve({
|
||||
errors: ['JSON cannot be empty'],
|
||||
})
|
||||
);
|
||||
|
||||
await DocumentCreationLogic.actions.uploadDocuments({ documents: [{}] });
|
||||
await promise;
|
||||
await nextTick();
|
||||
|
||||
expect(DocumentCreationLogic.actions.setErrors).toHaveBeenCalledWith([
|
||||
'JSON cannot be empty',
|
||||
|
@ -536,12 +537,12 @@ describe('DocumentCreationLogic', () => {
|
|||
});
|
||||
|
||||
it('should correctly merge multiple API calls into a single summary obj', async () => {
|
||||
const promise = (http.post as jest.Mock)
|
||||
(http.post as jest.Mock)
|
||||
.mockReturnValueOnce(mockFirstResponse)
|
||||
.mockReturnValueOnce(mockSecondResponse);
|
||||
|
||||
await DocumentCreationLogic.actions.uploadDocuments({ documents: largeDocumentsArray });
|
||||
await promise;
|
||||
await nextTick();
|
||||
|
||||
expect(http.post).toHaveBeenCalledTimes(2);
|
||||
expect(DocumentCreationLogic.actions.setSummary).toHaveBeenCalledWith({
|
||||
|
@ -562,12 +563,12 @@ describe('DocumentCreationLogic', () => {
|
|||
});
|
||||
|
||||
it('should correctly merge response errors', async () => {
|
||||
const promise = (http.post as jest.Mock)
|
||||
(http.post as jest.Mock)
|
||||
.mockReturnValueOnce({ ...mockFirstResponse, errors: ['JSON cannot be empty'] })
|
||||
.mockReturnValueOnce({ ...mockSecondResponse, errors: ['Too large to render'] });
|
||||
|
||||
await DocumentCreationLogic.actions.uploadDocuments({ documents: largeDocumentsArray });
|
||||
await promise;
|
||||
await nextTick();
|
||||
|
||||
expect(http.post).toHaveBeenCalledTimes(2);
|
||||
expect(DocumentCreationLogic.actions.setErrors).toHaveBeenCalledWith([
|
||||
|
|
|
@ -9,10 +9,11 @@ import {
|
|||
mockHttpValues,
|
||||
mockKibanaValues,
|
||||
mockFlashMessageHelpers,
|
||||
expectedAsyncError,
|
||||
} from '../../../__mocks__';
|
||||
import { mockEngineValues } from '../../__mocks__';
|
||||
|
||||
import { nextTick } from '@kbn/test/jest';
|
||||
|
||||
import { DocumentDetailLogic } from './document_detail_logic';
|
||||
import { InternalSchemaTypes } from '../../../shared/types';
|
||||
|
||||
|
@ -56,23 +57,21 @@ describe('DocumentDetailLogic', () => {
|
|||
it('will call an API endpoint and then store the result', async () => {
|
||||
const fields = [{ name: 'name', value: 'python', type: 'string' }];
|
||||
jest.spyOn(DocumentDetailLogic.actions, 'setFields');
|
||||
const promise = Promise.resolve({ fields });
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve({ fields }));
|
||||
|
||||
DocumentDetailLogic.actions.getDocumentDetails('1');
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith(`/api/app_search/engines/engine1/documents/1`);
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(DocumentDetailLogic.actions.setFields).toHaveBeenCalledWith(fields);
|
||||
});
|
||||
|
||||
it('handles errors', async () => {
|
||||
mount();
|
||||
const promise = Promise.reject('An error occurred');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('An error occurred'));
|
||||
|
||||
DocumentDetailLogic.actions.getDocumentDetails('1');
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('An error occurred', { isQueued: true });
|
||||
expect(navigateToUrl).toHaveBeenCalledWith('/engines/engine1/documents');
|
||||
|
@ -81,13 +80,11 @@ describe('DocumentDetailLogic', () => {
|
|||
|
||||
describe('deleteDocument', () => {
|
||||
let confirmSpy: any;
|
||||
let promise: Promise<any>;
|
||||
|
||||
beforeEach(() => {
|
||||
confirmSpy = jest.spyOn(window, 'confirm');
|
||||
confirmSpy.mockImplementation(jest.fn(() => true));
|
||||
promise = Promise.resolve({});
|
||||
http.delete.mockReturnValue(promise);
|
||||
http.delete.mockReturnValue(Promise.resolve({}));
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
|
@ -99,7 +96,7 @@ describe('DocumentDetailLogic', () => {
|
|||
DocumentDetailLogic.actions.deleteDocument('1');
|
||||
|
||||
expect(http.delete).toHaveBeenCalledWith(`/api/app_search/engines/engine1/documents/1`);
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(setQueuedSuccessMessage).toHaveBeenCalledWith(
|
||||
'Successfully marked document for deletion. It will be deleted momentarily.'
|
||||
);
|
||||
|
@ -113,16 +110,15 @@ describe('DocumentDetailLogic', () => {
|
|||
DocumentDetailLogic.actions.deleteDocument('1');
|
||||
|
||||
expect(http.delete).not.toHaveBeenCalled();
|
||||
await promise;
|
||||
await nextTick();
|
||||
});
|
||||
|
||||
it('handles errors', async () => {
|
||||
mount();
|
||||
promise = Promise.reject('An error occured');
|
||||
http.delete.mockReturnValue(promise);
|
||||
http.delete.mockReturnValue(Promise.reject('An error occured'));
|
||||
|
||||
DocumentDetailLogic.actions.deleteDocument('1');
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('An error occured');
|
||||
});
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import { LogicMounter, mockHttpValues, expectedAsyncError } from '../../../__mocks__';
|
||||
import { LogicMounter, mockHttpValues } from '../../../__mocks__';
|
||||
|
||||
import { nextTick } from '@kbn/test/jest';
|
||||
|
||||
import { EngineLogic } from './';
|
||||
|
||||
|
@ -172,11 +174,10 @@ describe('EngineLogic', () => {
|
|||
it('fetches and sets engine data', async () => {
|
||||
mount({ engineName: 'some-engine' });
|
||||
jest.spyOn(EngineLogic.actions, 'setEngineData');
|
||||
const promise = Promise.resolve(mockEngineData);
|
||||
http.get.mockReturnValueOnce(promise);
|
||||
http.get.mockReturnValueOnce(Promise.resolve(mockEngineData));
|
||||
|
||||
EngineLogic.actions.initializeEngine();
|
||||
await promise;
|
||||
await nextTick();
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith('/api/app_search/engines/some-engine');
|
||||
expect(EngineLogic.actions.setEngineData).toHaveBeenCalledWith(mockEngineData);
|
||||
|
@ -185,11 +186,10 @@ describe('EngineLogic', () => {
|
|||
it('handles errors', async () => {
|
||||
mount();
|
||||
jest.spyOn(EngineLogic.actions, 'setEngineNotFound');
|
||||
const promise = Promise.reject('An error occured');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('An error occured'));
|
||||
|
||||
EngineLogic.actions.initializeEngine();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(EngineLogic.actions.setEngineNotFound).toHaveBeenCalledWith(true);
|
||||
});
|
||||
|
|
|
@ -4,17 +4,14 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import {
|
||||
LogicMounter,
|
||||
mockHttpValues,
|
||||
mockFlashMessageHelpers,
|
||||
expectedAsyncError,
|
||||
} from '../../../__mocks__';
|
||||
import { LogicMounter, mockHttpValues, mockFlashMessageHelpers } from '../../../__mocks__';
|
||||
|
||||
jest.mock('../engine', () => ({
|
||||
EngineLogic: { values: { engineName: 'some-engine' } },
|
||||
}));
|
||||
|
||||
import { nextTick } from '@kbn/test/jest';
|
||||
|
||||
import { EngineOverviewLogic } from './';
|
||||
|
||||
describe('EngineOverviewLogic', () => {
|
||||
|
@ -85,11 +82,10 @@ describe('EngineOverviewLogic', () => {
|
|||
it('fetches data and calls onPollingSuccess', async () => {
|
||||
mount();
|
||||
jest.spyOn(EngineOverviewLogic.actions, 'onPollingSuccess');
|
||||
const promise = Promise.resolve(mockEngineMetrics);
|
||||
http.get.mockReturnValueOnce(promise);
|
||||
http.get.mockReturnValueOnce(Promise.resolve(mockEngineMetrics));
|
||||
|
||||
EngineOverviewLogic.actions.pollForOverviewMetrics();
|
||||
await promise;
|
||||
await nextTick();
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith('/api/app_search/engines/some-engine/overview');
|
||||
expect(EngineOverviewLogic.actions.onPollingSuccess).toHaveBeenCalledWith(
|
||||
|
@ -99,11 +95,10 @@ describe('EngineOverviewLogic', () => {
|
|||
|
||||
it('handles errors', async () => {
|
||||
mount();
|
||||
const promise = Promise.reject('An error occurred');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('An error occurred'));
|
||||
|
||||
EngineOverviewLogic.actions.pollForOverviewMetrics();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('An error occurred');
|
||||
});
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
|
||||
import { LogicMounter, mockHttpValues } from '../../../__mocks__';
|
||||
|
||||
import { nextTick } from '@kbn/test/jest';
|
||||
|
||||
import { EngineDetails } from '../engine/types';
|
||||
import { EnginesLogic } from './';
|
||||
|
||||
|
@ -124,13 +126,12 @@ describe('EnginesLogic', () => {
|
|||
|
||||
describe('loadEngines', () => {
|
||||
it('should call the engines API endpoint and set state based on the results', async () => {
|
||||
const promise = Promise.resolve(MOCK_ENGINES_API_RESPONSE);
|
||||
http.get.mockReturnValueOnce(promise);
|
||||
http.get.mockReturnValueOnce(Promise.resolve(MOCK_ENGINES_API_RESPONSE));
|
||||
mount({ enginesPage: 10 });
|
||||
jest.spyOn(EnginesLogic.actions, 'onEnginesLoad');
|
||||
|
||||
EnginesLogic.actions.loadEngines();
|
||||
await promise;
|
||||
await nextTick();
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith('/api/app_search/engines', {
|
||||
query: { type: 'indexed', pageIndex: 10 },
|
||||
|
@ -144,13 +145,12 @@ describe('EnginesLogic', () => {
|
|||
|
||||
describe('loadMetaEngines', () => {
|
||||
it('should call the engines API endpoint and set state based on the results', async () => {
|
||||
const promise = Promise.resolve(MOCK_ENGINES_API_RESPONSE);
|
||||
http.get.mockReturnValueOnce(promise);
|
||||
http.get.mockReturnValueOnce(Promise.resolve(MOCK_ENGINES_API_RESPONSE));
|
||||
mount({ metaEnginesPage: 99 });
|
||||
jest.spyOn(EnginesLogic.actions, 'onMetaEnginesLoad');
|
||||
|
||||
EnginesLogic.actions.loadMetaEngines();
|
||||
await promise;
|
||||
await nextTick();
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith('/api/app_search/engines', {
|
||||
query: { type: 'meta', pageIndex: 99 },
|
||||
|
|
|
@ -4,12 +4,9 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import {
|
||||
LogicMounter,
|
||||
mockHttpValues,
|
||||
mockFlashMessageHelpers,
|
||||
expectedAsyncError,
|
||||
} from '../../../__mocks__';
|
||||
import { LogicMounter, mockHttpValues, mockFlashMessageHelpers } from '../../../__mocks__';
|
||||
|
||||
import { nextTick } from '@kbn/test/jest';
|
||||
|
||||
import { LogRetentionOptions } from './types';
|
||||
import { LogRetentionLogic } from './log_retention_logic';
|
||||
|
@ -202,8 +199,7 @@ describe('LogRetentionLogic', () => {
|
|||
|
||||
it('will call an API endpoint and update log retention', async () => {
|
||||
jest.spyOn(LogRetentionLogic.actions, 'updateLogRetention');
|
||||
const promise = Promise.resolve(TYPICAL_SERVER_LOG_RETENTION);
|
||||
http.put.mockReturnValue(promise);
|
||||
http.put.mockReturnValue(Promise.resolve(TYPICAL_SERVER_LOG_RETENTION));
|
||||
|
||||
LogRetentionLogic.actions.saveLogRetention(LogRetentionOptions.Analytics, true);
|
||||
|
||||
|
@ -215,7 +211,7 @@ describe('LogRetentionLogic', () => {
|
|||
}),
|
||||
});
|
||||
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(LogRetentionLogic.actions.updateLogRetention).toHaveBeenCalledWith(
|
||||
TYPICAL_CLIENT_LOG_RETENTION
|
||||
);
|
||||
|
@ -224,11 +220,10 @@ describe('LogRetentionLogic', () => {
|
|||
});
|
||||
|
||||
it('handles errors', async () => {
|
||||
const promise = Promise.reject('An error occured');
|
||||
http.put.mockReturnValue(promise);
|
||||
http.put.mockReturnValue(Promise.reject('An error occured'));
|
||||
|
||||
LogRetentionLogic.actions.saveLogRetention(LogRetentionOptions.Analytics, true);
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('An error occured');
|
||||
expect(LogRetentionLogic.actions.clearLogRetentionUpdating).toHaveBeenCalled();
|
||||
|
@ -276,14 +271,13 @@ describe('LogRetentionLogic', () => {
|
|||
.spyOn(LogRetentionLogic.actions, 'updateLogRetention')
|
||||
.mockImplementationOnce(() => {});
|
||||
|
||||
const promise = Promise.resolve(TYPICAL_SERVER_LOG_RETENTION);
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve(TYPICAL_SERVER_LOG_RETENTION));
|
||||
|
||||
LogRetentionLogic.actions.fetchLogRetention();
|
||||
expect(LogRetentionLogic.values.isLogRetentionUpdating).toBe(true);
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith('/api/app_search/log_settings');
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(LogRetentionLogic.actions.updateLogRetention).toHaveBeenCalledWith(
|
||||
TYPICAL_CLIENT_LOG_RETENTION
|
||||
);
|
||||
|
@ -293,11 +287,10 @@ describe('LogRetentionLogic', () => {
|
|||
it('handles errors', async () => {
|
||||
mount();
|
||||
jest.spyOn(LogRetentionLogic.actions, 'clearLogRetentionUpdating');
|
||||
const promise = Promise.reject('An error occured');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('An error occured'));
|
||||
|
||||
LogRetentionLogic.actions.fetchLogRetention();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('An error occured');
|
||||
expect(LogRetentionLogic.actions.clearLogRetentionUpdating).toHaveBeenCalled();
|
||||
|
|
|
@ -4,12 +4,9 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import {
|
||||
LogicMounter,
|
||||
mockFlashMessageHelpers,
|
||||
mockHttpValues,
|
||||
expectedAsyncError,
|
||||
} from '../../__mocks__';
|
||||
import { LogicMounter, mockFlashMessageHelpers, mockHttpValues } from '../../__mocks__';
|
||||
|
||||
import { nextTick } from '@kbn/test/jest';
|
||||
|
||||
import { IndexingStatusLogic } from './indexing_status_logic';
|
||||
|
||||
|
@ -57,37 +54,34 @@ describe('IndexingStatusLogic', () => {
|
|||
|
||||
it('calls API and sets values', async () => {
|
||||
const setIndexingStatusSpy = jest.spyOn(IndexingStatusLogic.actions, 'setIndexingStatus');
|
||||
const promise = Promise.resolve(mockStatusResponse);
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve(mockStatusResponse));
|
||||
|
||||
IndexingStatusLogic.actions.fetchIndexingStatus({ statusPath, onComplete });
|
||||
jest.advanceTimersByTime(TIMEOUT);
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith(statusPath);
|
||||
await promise;
|
||||
await nextTick();
|
||||
|
||||
expect(setIndexingStatusSpy).toHaveBeenCalledWith(mockStatusResponse);
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('An error occured');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('An error occured'));
|
||||
|
||||
IndexingStatusLogic.actions.fetchIndexingStatus({ statusPath, onComplete });
|
||||
jest.advanceTimersByTime(TIMEOUT);
|
||||
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('An error occured');
|
||||
});
|
||||
|
||||
it('handles indexing complete state', async () => {
|
||||
const promise = Promise.resolve({ ...mockStatusResponse, percentageComplete: 100 });
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve({ ...mockStatusResponse, percentageComplete: 100 }));
|
||||
IndexingStatusLogic.actions.fetchIndexingStatus({ statusPath, onComplete });
|
||||
jest.advanceTimersByTime(TIMEOUT);
|
||||
|
||||
await promise;
|
||||
await nextTick();
|
||||
|
||||
expect(clearInterval).toHaveBeenCalled();
|
||||
expect(onComplete).toHaveBeenCalledWith(mockStatusResponse.numDocumentsWithErrors);
|
||||
|
|
|
@ -4,18 +4,15 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import {
|
||||
LogicMounter,
|
||||
mockFlashMessageHelpers,
|
||||
mockHttpValues,
|
||||
expectedAsyncError,
|
||||
} from '../../../../../__mocks__';
|
||||
import { LogicMounter, mockFlashMessageHelpers, mockHttpValues } from '../../../../../__mocks__';
|
||||
|
||||
import { AppLogic } from '../../../../app_logic';
|
||||
jest.mock('../../../../app_logic', () => ({
|
||||
AppLogic: { values: { isOrganization: true } },
|
||||
}));
|
||||
|
||||
import { nextTick } from '@kbn/test/jest';
|
||||
|
||||
import { CustomSource } from '../../../../types';
|
||||
|
||||
import { sourceConfigData } from '../../../../__mocks__/content_sources.mock';
|
||||
|
@ -271,23 +268,21 @@ describe('AddSourceLogic', () => {
|
|||
describe('getSourceConfigData', () => {
|
||||
it('calls API and sets values', async () => {
|
||||
const setSourceConfigDataSpy = jest.spyOn(AddSourceLogic.actions, 'setSourceConfigData');
|
||||
const promise = Promise.resolve(sourceConfigData);
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve(sourceConfigData));
|
||||
|
||||
AddSourceLogic.actions.getSourceConfigData('github');
|
||||
expect(http.get).toHaveBeenCalledWith(
|
||||
'/api/workplace_search/org/settings/connectors/github'
|
||||
);
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(setSourceConfigDataSpy).toHaveBeenCalledWith(sourceConfigData);
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('this is an error'));
|
||||
|
||||
AddSourceLogic.actions.getSourceConfigData('github');
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -302,15 +297,14 @@ describe('AddSourceLogic', () => {
|
|||
AddSourceLogic.actions,
|
||||
'setSourceConnectData'
|
||||
);
|
||||
const promise = Promise.resolve(sourceConnectData);
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve(sourceConnectData));
|
||||
|
||||
AddSourceLogic.actions.getSourceConnectData('github', successCallback);
|
||||
|
||||
expect(clearFlashMessages).toHaveBeenCalled();
|
||||
expect(AddSourceLogic.values.buttonLoading).toEqual(true);
|
||||
expect(http.get).toHaveBeenCalledWith('/api/workplace_search/org/sources/github/prepare');
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(setSourceConnectDataSpy).toHaveBeenCalledWith(sourceConnectData);
|
||||
expect(successCallback).toHaveBeenCalledWith(sourceConnectData.oauthUrl);
|
||||
expect(setButtonNotLoadingSpy).toHaveBeenCalled();
|
||||
|
@ -327,11 +321,10 @@ describe('AddSourceLogic', () => {
|
|||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('this is an error'));
|
||||
|
||||
AddSourceLogic.actions.getSourceConnectData('github', successCallback);
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -343,24 +336,22 @@ describe('AddSourceLogic', () => {
|
|||
AddSourceLogic.actions,
|
||||
'setSourceConnectData'
|
||||
);
|
||||
const promise = Promise.resolve(sourceConnectData);
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve(sourceConnectData));
|
||||
|
||||
AddSourceLogic.actions.getSourceReConnectData('github');
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith(
|
||||
'/api/workplace_search/org/sources/github/reauth_prepare'
|
||||
);
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(setSourceConnectDataSpy).toHaveBeenCalledWith(sourceConnectData);
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('this is an error'));
|
||||
|
||||
AddSourceLogic.actions.getSourceReConnectData('github');
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -372,22 +363,20 @@ describe('AddSourceLogic', () => {
|
|||
AddSourceLogic.actions,
|
||||
'setPreContentSourceConfigData'
|
||||
);
|
||||
const promise = Promise.resolve(config);
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve(config));
|
||||
|
||||
AddSourceLogic.actions.getPreContentSourceConfigData('123');
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith('/api/workplace_search/org/pre_sources/123');
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(setPreContentSourceConfigDataSpy).toHaveBeenCalledWith(config);
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('this is an error'));
|
||||
|
||||
AddSourceLogic.actions.getPreContentSourceConfigData('123');
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -414,8 +403,7 @@ describe('AddSourceLogic', () => {
|
|||
const successCallback = jest.fn();
|
||||
const setButtonNotLoadingSpy = jest.spyOn(AddSourceLogic.actions, 'setButtonNotLoading');
|
||||
const setSourceConfigDataSpy = jest.spyOn(AddSourceLogic.actions, 'setSourceConfigData');
|
||||
const promise = Promise.resolve({ sourceConfigData });
|
||||
http.put.mockReturnValue(promise);
|
||||
http.put.mockReturnValue(Promise.resolve({ sourceConfigData }));
|
||||
|
||||
AddSourceLogic.actions.saveSourceConfig(true, successCallback);
|
||||
|
||||
|
@ -428,7 +416,7 @@ describe('AddSourceLogic', () => {
|
|||
{ body: JSON.stringify({ params }) }
|
||||
);
|
||||
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(successCallback).toHaveBeenCalled();
|
||||
expect(setSourceConfigDataSpy).toHaveBeenCalledWith({ sourceConfigData });
|
||||
expect(setButtonNotLoadingSpy).toHaveBeenCalled();
|
||||
|
@ -453,11 +441,10 @@ describe('AddSourceLogic', () => {
|
|||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.put.mockReturnValue(promise);
|
||||
http.put.mockReturnValue(Promise.reject('this is an error'));
|
||||
|
||||
AddSourceLogic.actions.saveSourceConfig(true);
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -495,8 +482,7 @@ describe('AddSourceLogic', () => {
|
|||
it('calls API and sets values', async () => {
|
||||
const setButtonNotLoadingSpy = jest.spyOn(AddSourceLogic.actions, 'setButtonNotLoading');
|
||||
const setCustomSourceDataSpy = jest.spyOn(AddSourceLogic.actions, 'setCustomSourceData');
|
||||
const promise = Promise.resolve({ sourceConfigData });
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.resolve({ sourceConfigData }));
|
||||
|
||||
AddSourceLogic.actions.createContentSource(serviceType, successCallback, errorCallback);
|
||||
|
||||
|
@ -505,18 +491,17 @@ describe('AddSourceLogic', () => {
|
|||
expect(http.post).toHaveBeenCalledWith('/api/workplace_search/org/create_source', {
|
||||
body: JSON.stringify({ ...params }),
|
||||
});
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(setCustomSourceDataSpy).toHaveBeenCalledWith({ sourceConfigData });
|
||||
expect(successCallback).toHaveBeenCalled();
|
||||
expect(setButtonNotLoadingSpy).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.reject('this is an error'));
|
||||
|
||||
AddSourceLogic.actions.createContentSource(serviceType, successCallback, errorCallback);
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(errorCallback).toHaveBeenCalled();
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
|
|
|
@ -6,11 +6,7 @@
|
|||
|
||||
import { LogicMounter } from '../../../../../__mocks__/kea.mock';
|
||||
|
||||
import {
|
||||
mockFlashMessageHelpers,
|
||||
mockHttpValues,
|
||||
expectedAsyncError,
|
||||
} from '../../../../../__mocks__';
|
||||
import { mockFlashMessageHelpers, mockHttpValues } from '../../../../../__mocks__';
|
||||
|
||||
const contentSource = { id: 'source123' };
|
||||
jest.mock('../../source_logic', () => ({
|
||||
|
@ -22,6 +18,8 @@ jest.mock('../../../../app_logic', () => ({
|
|||
AppLogic: { values: { isOrganization: true } },
|
||||
}));
|
||||
|
||||
import { nextTick } from '@kbn/test/jest';
|
||||
|
||||
import { exampleResult } from '../../../../__mocks__/content_sources.mock';
|
||||
import { LEAVE_UNASSIGNED_FIELD } from './constants';
|
||||
|
||||
|
@ -286,14 +284,13 @@ describe('DisplaySettingsLogic', () => {
|
|||
DisplaySettingsLogic.actions,
|
||||
'onInitializeDisplaySettings'
|
||||
);
|
||||
const promise = Promise.resolve(serverProps);
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve(serverProps));
|
||||
DisplaySettingsLogic.actions.initializeDisplaySettings();
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith(
|
||||
'/api/workplace_search/org/sources/source123/display_settings/config'
|
||||
);
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(onInitializeDisplaySettingsSpy).toHaveBeenCalledWith({
|
||||
...serverProps,
|
||||
isOrganization: true,
|
||||
|
@ -307,14 +304,13 @@ describe('DisplaySettingsLogic', () => {
|
|||
DisplaySettingsLogic.actions,
|
||||
'onInitializeDisplaySettings'
|
||||
);
|
||||
const promise = Promise.resolve(serverProps);
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve(serverProps));
|
||||
DisplaySettingsLogic.actions.initializeDisplaySettings();
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith(
|
||||
'/api/workplace_search/account/sources/source123/display_settings/config'
|
||||
);
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(onInitializeDisplaySettingsSpy).toHaveBeenCalledWith({
|
||||
...serverProps,
|
||||
isOrganization: false,
|
||||
|
@ -322,10 +318,9 @@ describe('DisplaySettingsLogic', () => {
|
|||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('this is an error'));
|
||||
DisplaySettingsLogic.actions.initializeDisplaySettings();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -337,25 +332,23 @@ describe('DisplaySettingsLogic', () => {
|
|||
DisplaySettingsLogic.actions,
|
||||
'setServerResponseData'
|
||||
);
|
||||
const promise = Promise.resolve(serverProps);
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.resolve(serverProps));
|
||||
DisplaySettingsLogic.actions.onInitializeDisplaySettings(serverProps);
|
||||
DisplaySettingsLogic.actions.setServerData();
|
||||
|
||||
expect(http.post).toHaveBeenCalledWith(serverProps.serverRoute, {
|
||||
body: JSON.stringify({ ...searchResultConfig }),
|
||||
});
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(setServerResponseDataSpy).toHaveBeenCalledWith({
|
||||
...serverProps,
|
||||
});
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.reject('this is an error'));
|
||||
DisplaySettingsLogic.actions.setServerData();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
|
|
@ -4,12 +4,9 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import {
|
||||
LogicMounter,
|
||||
mockFlashMessageHelpers,
|
||||
mockHttpValues,
|
||||
expectedAsyncError,
|
||||
} from '../../../../../__mocks__';
|
||||
import { LogicMounter, mockFlashMessageHelpers, mockHttpValues } from '../../../../../__mocks__';
|
||||
|
||||
import { nextTick } from '@kbn/test/jest';
|
||||
|
||||
const contentSource = { id: 'source123' };
|
||||
jest.mock('../../source_logic', () => ({
|
||||
|
@ -198,14 +195,13 @@ describe('SchemaLogic', () => {
|
|||
describe('initializeSchema', () => {
|
||||
it('calls API and sets values (org)', async () => {
|
||||
const onInitializeSchemaSpy = jest.spyOn(SchemaLogic.actions, 'onInitializeSchema');
|
||||
const promise = Promise.resolve(serverResponse);
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve(serverResponse));
|
||||
SchemaLogic.actions.initializeSchema();
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith(
|
||||
'/api/workplace_search/org/sources/source123/schemas'
|
||||
);
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(onInitializeSchemaSpy).toHaveBeenCalledWith(serverResponse);
|
||||
});
|
||||
|
||||
|
@ -213,22 +209,20 @@ describe('SchemaLogic', () => {
|
|||
AppLogic.values.isOrganization = false;
|
||||
|
||||
const onInitializeSchemaSpy = jest.spyOn(SchemaLogic.actions, 'onInitializeSchema');
|
||||
const promise = Promise.resolve(serverResponse);
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve(serverResponse));
|
||||
SchemaLogic.actions.initializeSchema();
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith(
|
||||
'/api/workplace_search/account/sources/source123/schemas'
|
||||
);
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(onInitializeSchemaSpy).toHaveBeenCalledWith(serverResponse);
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('this is an error'));
|
||||
SchemaLogic.actions.initializeSchema();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -297,13 +291,12 @@ describe('SchemaLogic', () => {
|
|||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject({ error: 'this is an error' });
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject({ error: 'this is an error' }));
|
||||
SchemaLogic.actions.initializeSchemaFieldErrors(
|
||||
mostRecentIndexJob.activeReindexJobId,
|
||||
contentSource.id
|
||||
);
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith({
|
||||
error: 'this is an error',
|
||||
|
@ -352,8 +345,7 @@ describe('SchemaLogic', () => {
|
|||
it('calls API and sets values (org)', async () => {
|
||||
AppLogic.values.isOrganization = true;
|
||||
const onSchemaSetSuccessSpy = jest.spyOn(SchemaLogic.actions, 'onSchemaSetSuccess');
|
||||
const promise = Promise.resolve(serverResponse);
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.resolve(serverResponse));
|
||||
SchemaLogic.actions.setServerField(schema, ADD);
|
||||
|
||||
expect(http.post).toHaveBeenCalledWith(
|
||||
|
@ -362,7 +354,7 @@ describe('SchemaLogic', () => {
|
|||
body: JSON.stringify({ ...schema }),
|
||||
}
|
||||
);
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(setSuccessMessage).toHaveBeenCalledWith(SCHEMA_FIELD_ADDED_MESSAGE);
|
||||
expect(onSchemaSetSuccessSpy).toHaveBeenCalledWith(serverResponse);
|
||||
});
|
||||
|
@ -371,8 +363,7 @@ describe('SchemaLogic', () => {
|
|||
AppLogic.values.isOrganization = false;
|
||||
|
||||
const onSchemaSetSuccessSpy = jest.spyOn(SchemaLogic.actions, 'onSchemaSetSuccess');
|
||||
const promise = Promise.resolve(serverResponse);
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.resolve(serverResponse));
|
||||
SchemaLogic.actions.setServerField(schema, ADD);
|
||||
|
||||
expect(http.post).toHaveBeenCalledWith(
|
||||
|
@ -381,16 +372,15 @@ describe('SchemaLogic', () => {
|
|||
body: JSON.stringify({ ...schema }),
|
||||
}
|
||||
);
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(onSchemaSetSuccessSpy).toHaveBeenCalledWith(serverResponse);
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const onSchemaSetFormErrorsSpy = jest.spyOn(SchemaLogic.actions, 'onSchemaSetFormErrors');
|
||||
const promise = Promise.reject({ message: 'this is an error' });
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.reject({ message: 'this is an error' }));
|
||||
SchemaLogic.actions.setServerField(schema, ADD);
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(onSchemaSetFormErrorsSpy).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -400,8 +390,7 @@ describe('SchemaLogic', () => {
|
|||
it('calls API and sets values (org)', async () => {
|
||||
AppLogic.values.isOrganization = true;
|
||||
const onSchemaSetSuccessSpy = jest.spyOn(SchemaLogic.actions, 'onSchemaSetSuccess');
|
||||
const promise = Promise.resolve(serverResponse);
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.resolve(serverResponse));
|
||||
SchemaLogic.actions.setServerField(schema, UPDATE);
|
||||
|
||||
expect(http.post).toHaveBeenCalledWith(
|
||||
|
@ -410,7 +399,7 @@ describe('SchemaLogic', () => {
|
|||
body: JSON.stringify({ ...schema }),
|
||||
}
|
||||
);
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(setSuccessMessage).toHaveBeenCalledWith(SCHEMA_UPDATED_MESSAGE);
|
||||
expect(onSchemaSetSuccessSpy).toHaveBeenCalledWith(serverResponse);
|
||||
});
|
||||
|
@ -419,8 +408,7 @@ describe('SchemaLogic', () => {
|
|||
AppLogic.values.isOrganization = false;
|
||||
|
||||
const onSchemaSetSuccessSpy = jest.spyOn(SchemaLogic.actions, 'onSchemaSetSuccess');
|
||||
const promise = Promise.resolve(serverResponse);
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.resolve(serverResponse));
|
||||
SchemaLogic.actions.setServerField(schema, UPDATE);
|
||||
|
||||
expect(http.post).toHaveBeenCalledWith(
|
||||
|
@ -429,15 +417,14 @@ describe('SchemaLogic', () => {
|
|||
body: JSON.stringify({ ...schema }),
|
||||
}
|
||||
);
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(onSchemaSetSuccessSpy).toHaveBeenCalledWith(serverResponse);
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.reject('this is an error'));
|
||||
SchemaLogic.actions.setServerField(schema, UPDATE);
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
|
|
@ -9,9 +9,10 @@ import {
|
|||
mockKibanaValues,
|
||||
mockFlashMessageHelpers,
|
||||
mockHttpValues,
|
||||
expectedAsyncError,
|
||||
} from '../../../__mocks__';
|
||||
|
||||
import { nextTick } from '@kbn/test/jest';
|
||||
|
||||
import { groups } from '../../__mocks__/groups.mock';
|
||||
import { mockGroupValues } from './__mocks__/group_logic.mock';
|
||||
import { GroupLogic } from './group_logic';
|
||||
|
@ -229,32 +230,29 @@ describe('GroupLogic', () => {
|
|||
describe('initializeGroup', () => {
|
||||
it('calls API and sets values', async () => {
|
||||
const onInitializeGroupSpy = jest.spyOn(GroupLogic.actions, 'onInitializeGroup');
|
||||
const promise = Promise.resolve(group);
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve(group));
|
||||
|
||||
GroupLogic.actions.initializeGroup(sourceIds[0]);
|
||||
expect(http.get).toHaveBeenCalledWith('/api/workplace_search/groups/123');
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(onInitializeGroupSpy).toHaveBeenCalledWith(group);
|
||||
});
|
||||
|
||||
it('handles 404 error', async () => {
|
||||
const promise = Promise.reject({ response: { status: 404 } });
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject({ response: { status: 404 } }));
|
||||
|
||||
GroupLogic.actions.initializeGroup(sourceIds[0]);
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(navigateToUrl).toHaveBeenCalledWith(GROUPS_PATH);
|
||||
expect(setQueuedErrorMessage).toHaveBeenCalledWith('Unable to find group with ID: "123".');
|
||||
});
|
||||
|
||||
it('handles non-404 error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('this is an error'));
|
||||
|
||||
GroupLogic.actions.initializeGroup(sourceIds[0]);
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(navigateToUrl).toHaveBeenCalledWith(GROUPS_PATH);
|
||||
expect(setQueuedErrorMessage).toHaveBeenCalledWith('this is an error');
|
||||
|
@ -266,13 +264,12 @@ describe('GroupLogic', () => {
|
|||
GroupLogic.actions.onInitializeGroup(group);
|
||||
});
|
||||
it('deletes a group', async () => {
|
||||
const promise = Promise.resolve(true);
|
||||
http.delete.mockReturnValue(promise);
|
||||
http.delete.mockReturnValue(Promise.resolve(true));
|
||||
|
||||
GroupLogic.actions.deleteGroup();
|
||||
expect(http.delete).toHaveBeenCalledWith('/api/workplace_search/groups/123');
|
||||
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(navigateToUrl).toHaveBeenCalledWith(GROUPS_PATH);
|
||||
expect(setQueuedSuccessMessage).toHaveBeenCalledWith(
|
||||
'Group "group" was successfully deleted.'
|
||||
|
@ -280,11 +277,10 @@ describe('GroupLogic', () => {
|
|||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.delete.mockReturnValue(promise);
|
||||
http.delete.mockReturnValue(Promise.reject('this is an error'));
|
||||
|
||||
GroupLogic.actions.deleteGroup();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -297,15 +293,14 @@ describe('GroupLogic', () => {
|
|||
});
|
||||
it('updates name', async () => {
|
||||
const onGroupNameChangedSpy = jest.spyOn(GroupLogic.actions, 'onGroupNameChanged');
|
||||
const promise = Promise.resolve(group);
|
||||
http.put.mockReturnValue(promise);
|
||||
http.put.mockReturnValue(Promise.resolve(group));
|
||||
|
||||
GroupLogic.actions.updateGroupName();
|
||||
expect(http.put).toHaveBeenCalledWith('/api/workplace_search/groups/123', {
|
||||
body: JSON.stringify({ group: { name: 'new name' } }),
|
||||
});
|
||||
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(onGroupNameChangedSpy).toHaveBeenCalledWith(group);
|
||||
expect(setSuccessMessage).toHaveBeenCalledWith(
|
||||
'Successfully renamed this group to "group".'
|
||||
|
@ -313,11 +308,10 @@ describe('GroupLogic', () => {
|
|||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.put.mockReturnValue(promise);
|
||||
http.put.mockReturnValue(Promise.reject('this is an error'));
|
||||
|
||||
GroupLogic.actions.updateGroupName();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -330,15 +324,14 @@ describe('GroupLogic', () => {
|
|||
});
|
||||
it('updates name', async () => {
|
||||
const onGroupSourcesSavedSpy = jest.spyOn(GroupLogic.actions, 'onGroupSourcesSaved');
|
||||
const promise = Promise.resolve(group);
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.resolve(group));
|
||||
|
||||
GroupLogic.actions.saveGroupSources();
|
||||
expect(http.post).toHaveBeenCalledWith('/api/workplace_search/groups/123/share', {
|
||||
body: JSON.stringify({ content_source_ids: sourceIds }),
|
||||
});
|
||||
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(onGroupSourcesSavedSpy).toHaveBeenCalledWith(group);
|
||||
expect(setSuccessMessage).toHaveBeenCalledWith(
|
||||
'Successfully updated shared content sources.'
|
||||
|
@ -346,11 +339,10 @@ describe('GroupLogic', () => {
|
|||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.reject('this is an error'));
|
||||
|
||||
GroupLogic.actions.saveGroupSources();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -362,15 +354,14 @@ describe('GroupLogic', () => {
|
|||
});
|
||||
it('updates name', async () => {
|
||||
const onGroupUsersSavedSpy = jest.spyOn(GroupLogic.actions, 'onGroupUsersSaved');
|
||||
const promise = Promise.resolve(group);
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.resolve(group));
|
||||
|
||||
GroupLogic.actions.saveGroupUsers();
|
||||
expect(http.post).toHaveBeenCalledWith('/api/workplace_search/groups/123/assign', {
|
||||
body: JSON.stringify({ user_ids: userIds }),
|
||||
});
|
||||
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(onGroupUsersSavedSpy).toHaveBeenCalledWith(group);
|
||||
expect(setSuccessMessage).toHaveBeenCalledWith(
|
||||
'Successfully updated the users of this group.'
|
||||
|
@ -378,11 +369,10 @@ describe('GroupLogic', () => {
|
|||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.reject('this is an error'));
|
||||
|
||||
GroupLogic.actions.saveGroupUsers();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -397,8 +387,7 @@ describe('GroupLogic', () => {
|
|||
GroupLogic.actions,
|
||||
'onGroupPrioritiesChanged'
|
||||
);
|
||||
const promise = Promise.resolve(group);
|
||||
http.put.mockReturnValue(promise);
|
||||
http.put.mockReturnValue(Promise.resolve(group));
|
||||
|
||||
GroupLogic.actions.saveGroupSourcePrioritization();
|
||||
expect(http.put).toHaveBeenCalledWith('/api/workplace_search/groups/123/boosts', {
|
||||
|
@ -410,7 +399,7 @@ describe('GroupLogic', () => {
|
|||
}),
|
||||
});
|
||||
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(setSuccessMessage).toHaveBeenCalledWith(
|
||||
'Successfully updated shared source prioritization.'
|
||||
);
|
||||
|
@ -418,11 +407,10 @@ describe('GroupLogic', () => {
|
|||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.put.mockReturnValue(promise);
|
||||
http.put.mockReturnValue(Promise.reject('this is an error'));
|
||||
|
||||
GroupLogic.actions.saveGroupSourcePrioritization();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
|
|
@ -4,12 +4,9 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import {
|
||||
LogicMounter,
|
||||
mockFlashMessageHelpers,
|
||||
mockHttpValues,
|
||||
expectedAsyncError,
|
||||
} from '../../../__mocks__';
|
||||
import { LogicMounter, mockFlashMessageHelpers, mockHttpValues } from '../../../__mocks__';
|
||||
|
||||
import { nextTick } from '@kbn/test/jest';
|
||||
|
||||
import { DEFAULT_META } from '../../../shared/constants';
|
||||
import { JSON_HEADER as headers } from '../../../../../common/constants';
|
||||
|
@ -22,7 +19,6 @@ import { GroupsLogic } from './groups_logic';
|
|||
|
||||
// We need to mock out the debounced functionality
|
||||
const TIMEOUT = 400;
|
||||
const delay = () => new Promise((resolve) => setTimeout(resolve, TIMEOUT));
|
||||
|
||||
describe('GroupsLogic', () => {
|
||||
const { mount } = new LogicMounter(GroupsLogic);
|
||||
|
@ -218,21 +214,19 @@ describe('GroupsLogic', () => {
|
|||
describe('initializeGroups', () => {
|
||||
it('calls API and sets values', async () => {
|
||||
const onInitializeGroupsSpy = jest.spyOn(GroupsLogic.actions, 'onInitializeGroups');
|
||||
const promise = Promise.resolve(groupsResponse);
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve(groupsResponse));
|
||||
|
||||
GroupsLogic.actions.initializeGroups();
|
||||
expect(http.get).toHaveBeenCalledWith('/api/workplace_search/groups');
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(onInitializeGroupsSpy).toHaveBeenCalledWith(groupsResponse);
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('this is an error'));
|
||||
|
||||
GroupsLogic.actions.initializeGroups();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -256,15 +250,22 @@ describe('GroupsLogic', () => {
|
|||
headers,
|
||||
};
|
||||
|
||||
beforeAll(() => {
|
||||
jest.useFakeTimers();
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
jest.useRealTimers();
|
||||
});
|
||||
|
||||
it('calls API and sets values', async () => {
|
||||
const setSearchResultsSpy = jest.spyOn(GroupsLogic.actions, 'setSearchResults');
|
||||
const promise = Promise.resolve(groups);
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.resolve(groups));
|
||||
|
||||
GroupsLogic.actions.getSearchResults();
|
||||
await delay();
|
||||
jest.advanceTimersByTime(TIMEOUT);
|
||||
await nextTick();
|
||||
expect(http.post).toHaveBeenCalledWith('/api/workplace_search/groups/search', payload);
|
||||
await promise;
|
||||
expect(setSearchResultsSpy).toHaveBeenCalledWith(groups);
|
||||
});
|
||||
|
||||
|
@ -272,24 +273,22 @@ describe('GroupsLogic', () => {
|
|||
// Set active page to 2 to confirm resetting sends the `payload` value of 1 for the current page.
|
||||
GroupsLogic.actions.setActivePage(2);
|
||||
const setSearchResultsSpy = jest.spyOn(GroupsLogic.actions, 'setSearchResults');
|
||||
const promise = Promise.resolve(groups);
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.resolve(groups));
|
||||
|
||||
GroupsLogic.actions.getSearchResults(true);
|
||||
// Account for `breakpoint` that debounces filter value.
|
||||
await delay();
|
||||
jest.advanceTimersByTime(TIMEOUT);
|
||||
await nextTick();
|
||||
expect(http.post).toHaveBeenCalledWith('/api/workplace_search/groups/search', payload);
|
||||
await promise;
|
||||
expect(setSearchResultsSpy).toHaveBeenCalledWith(groups);
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.reject('this is an error'));
|
||||
|
||||
GroupsLogic.actions.getSearchResults();
|
||||
await expectedAsyncError(promise);
|
||||
await delay();
|
||||
jest.advanceTimersByTime(TIMEOUT);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -298,21 +297,19 @@ describe('GroupsLogic', () => {
|
|||
describe('fetchGroupUsers', () => {
|
||||
it('calls API and sets values', async () => {
|
||||
const setGroupUsersSpy = jest.spyOn(GroupsLogic.actions, 'setGroupUsers');
|
||||
const promise = Promise.resolve(users);
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve(users));
|
||||
|
||||
GroupsLogic.actions.fetchGroupUsers('123');
|
||||
expect(http.get).toHaveBeenCalledWith('/api/workplace_search/groups/123/group_users');
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(setGroupUsersSpy).toHaveBeenCalledWith(users);
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('this is an error'));
|
||||
|
||||
GroupsLogic.actions.fetchGroupUsers('123');
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -323,24 +320,22 @@ describe('GroupsLogic', () => {
|
|||
const GROUP_NAME = 'new group';
|
||||
GroupsLogic.actions.setNewGroupName(GROUP_NAME);
|
||||
const setNewGroupSpy = jest.spyOn(GroupsLogic.actions, 'setNewGroup');
|
||||
const promise = Promise.resolve(groups[0]);
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.resolve(groups[0]));
|
||||
|
||||
GroupsLogic.actions.saveNewGroup();
|
||||
expect(http.post).toHaveBeenCalledWith('/api/workplace_search/groups', {
|
||||
body: JSON.stringify({ group_name: GROUP_NAME }),
|
||||
headers,
|
||||
});
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(setNewGroupSpy).toHaveBeenCalledWith(groups[0]);
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.post.mockReturnValue(promise);
|
||||
http.post.mockReturnValue(Promise.reject('this is an error'));
|
||||
|
||||
GroupsLogic.actions.saveNewGroup();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
|
|
@ -6,12 +6,9 @@
|
|||
|
||||
import { LogicMounter } from '../../../__mocks__/kea.mock';
|
||||
|
||||
import {
|
||||
mockFlashMessageHelpers,
|
||||
mockHttpValues,
|
||||
expectedAsyncError,
|
||||
mockKibanaValues,
|
||||
} from '../../../__mocks__';
|
||||
import { mockFlashMessageHelpers, mockHttpValues, mockKibanaValues } from '../../../__mocks__';
|
||||
|
||||
import { nextTick } from '@kbn/test/jest';
|
||||
|
||||
import { configuredSources, oauthApplication } from '../../__mocks__/content_sources.mock';
|
||||
|
||||
|
@ -89,20 +86,18 @@ describe('SettingsLogic', () => {
|
|||
describe('initializeSettings', () => {
|
||||
it('calls API and sets values', async () => {
|
||||
const setServerPropsSpy = jest.spyOn(SettingsLogic.actions, 'setServerProps');
|
||||
const promise = Promise.resolve(configuredSources);
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve(configuredSources));
|
||||
SettingsLogic.actions.initializeSettings();
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith('/api/workplace_search/org/settings');
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(setServerPropsSpy).toHaveBeenCalledWith(configuredSources);
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('this is an error'));
|
||||
SettingsLogic.actions.initializeSettings();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -114,20 +109,18 @@ describe('SettingsLogic', () => {
|
|||
SettingsLogic.actions,
|
||||
'onInitializeConnectors'
|
||||
);
|
||||
const promise = Promise.resolve(serverProps);
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.resolve(serverProps));
|
||||
SettingsLogic.actions.initializeConnectors();
|
||||
|
||||
expect(http.get).toHaveBeenCalledWith('/api/workplace_search/org/settings/connectors');
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(onInitializeConnectorsSpy).toHaveBeenCalledWith(serverProps);
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.get.mockReturnValue(promise);
|
||||
http.get.mockReturnValue(Promise.reject('this is an error'));
|
||||
SettingsLogic.actions.initializeConnectors();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -138,25 +131,23 @@ describe('SettingsLogic', () => {
|
|||
const NAME = 'updated name';
|
||||
SettingsLogic.actions.onOrgNameInputChange(NAME);
|
||||
const setUpdatedNameSpy = jest.spyOn(SettingsLogic.actions, 'setUpdatedName');
|
||||
const promise = Promise.resolve({ organizationName: NAME });
|
||||
http.put.mockReturnValue(promise);
|
||||
http.put.mockReturnValue(Promise.resolve({ organizationName: NAME }));
|
||||
|
||||
SettingsLogic.actions.updateOrgName();
|
||||
|
||||
expect(http.put).toHaveBeenCalledWith('/api/workplace_search/org/settings/customize', {
|
||||
body: JSON.stringify({ name: NAME }),
|
||||
});
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(setSuccessMessage).toHaveBeenCalledWith(ORG_UPDATED_MESSAGE);
|
||||
expect(setUpdatedNameSpy).toHaveBeenCalledWith({ organizationName: NAME });
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.put.mockReturnValue(promise);
|
||||
http.put.mockReturnValue(Promise.reject('this is an error'));
|
||||
SettingsLogic.actions.updateOrgName();
|
||||
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
});
|
||||
|
@ -168,8 +159,7 @@ describe('SettingsLogic', () => {
|
|||
SettingsLogic.actions,
|
||||
'setUpdatedOauthApplication'
|
||||
);
|
||||
const promise = Promise.resolve({ oauthApplication });
|
||||
http.put.mockReturnValue(promise);
|
||||
http.put.mockReturnValue(Promise.resolve({ oauthApplication }));
|
||||
SettingsLogic.actions.setOauthApplication(oauthApplication);
|
||||
SettingsLogic.actions.updateOauthApplication();
|
||||
|
||||
|
@ -183,16 +173,15 @@ describe('SettingsLogic', () => {
|
|||
}),
|
||||
}
|
||||
);
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(setUpdatedOauthApplicationSpy).toHaveBeenCalledWith({ oauthApplication });
|
||||
expect(setSuccessMessage).toHaveBeenCalledWith(OAUTH_APP_UPDATED_MESSAGE);
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.put.mockReturnValue(promise);
|
||||
http.put.mockReturnValue(Promise.reject('this is an error'));
|
||||
SettingsLogic.actions.updateOauthApplication();
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
@ -203,20 +192,18 @@ describe('SettingsLogic', () => {
|
|||
const NAME = 'baz';
|
||||
|
||||
it('calls API and sets values', async () => {
|
||||
const promise = Promise.resolve({});
|
||||
http.delete.mockReturnValue(promise);
|
||||
http.delete.mockReturnValue(Promise.resolve({}));
|
||||
SettingsLogic.actions.deleteSourceConfig(SERVICE_TYPE, NAME);
|
||||
|
||||
await promise;
|
||||
await nextTick();
|
||||
expect(navigateToUrl).toHaveBeenCalledWith('/settings/connectors');
|
||||
expect(setQueuedSuccessMessage).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('handles error', async () => {
|
||||
const promise = Promise.reject('this is an error');
|
||||
http.delete.mockReturnValue(promise);
|
||||
http.delete.mockReturnValue(Promise.reject('this is an error'));
|
||||
SettingsLogic.actions.deleteSourceConfig(SERVICE_TYPE, NAME);
|
||||
await expectedAsyncError(promise);
|
||||
await nextTick();
|
||||
|
||||
expect(flashAPIErrors).toHaveBeenCalledWith('this is an error');
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue