Skip to content

Commit

Permalink
[Workplace Search] Fix external connector button stuck loading (#128617)
Browse files Browse the repository at this point in the history
* [Workplace Search] Fix external connector button stuck loading
  • Loading branch information
sphilipse authored Mar 28, 2022
1 parent d202b73 commit 7494a91
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,16 @@ describe('ExternalConnectorLogic', () => {
insecureUrl: true,
};

const DEFAULT_VALUES_SUCCESS: ExternalConnectorValues = {
...DEFAULT_VALUES,
externalConnectorApiKey: 'asdf1234',
externalConnectorUrl: 'https://www.elastic.co',
formDisabled: false,
insecureUrl: false,
dataLoading: false,
sourceConfigData,
};

beforeEach(() => {
jest.clearAllMocks();
mount();
Expand All @@ -61,38 +71,56 @@ describe('ExternalConnectorLogic', () => {
});

it('turns off the data loading flag', () => {
expect(ExternalConnectorLogic.values.dataLoading).toEqual(false);
expect(ExternalConnectorLogic.values).toEqual({
...DEFAULT_VALUES_SUCCESS,
dataLoading: false,
});
});

it('saves the external url', () => {
expect(ExternalConnectorLogic.values.externalConnectorUrl).toEqual(
sourceConfigData.configuredFields.externalConnectorUrl
);
expect(ExternalConnectorLogic.values).toEqual({
...DEFAULT_VALUES_SUCCESS,
externalConnectorUrl: sourceConfigData.configuredFields.externalConnectorUrl,
});
});

it('saves the source config', () => {
expect(ExternalConnectorLogic.values.sourceConfigData).toEqual(sourceConfigData);
expect(ExternalConnectorLogic.values).toEqual({
...DEFAULT_VALUES_SUCCESS,
sourceConfigData,
});
});

it('sets undefined url to empty string', () => {
ExternalConnectorLogic.actions.fetchExternalSourceSuccess({
const newSourceConfigData = {
...sourceConfigData,
configuredFields: {
...sourceConfigData.configuredFields,
externalConnectorUrl: undefined,
},
};
ExternalConnectorLogic.actions.fetchExternalSourceSuccess(newSourceConfigData);
expect(ExternalConnectorLogic.values).toEqual({
...DEFAULT_VALUES_SUCCESS,
externalConnectorUrl: '',
insecureUrl: true,
sourceConfigData: newSourceConfigData,
});
expect(ExternalConnectorLogic.values.externalConnectorUrl).toEqual('');
});
it('sets undefined api key to empty string', () => {
ExternalConnectorLogic.actions.fetchExternalSourceSuccess({
const newSourceConfigData = {
...sourceConfigData,
configuredFields: {
...sourceConfigData.configuredFields,
externalConnectorApiKey: undefined,
},
};
ExternalConnectorLogic.actions.fetchExternalSourceSuccess(newSourceConfigData);
expect(ExternalConnectorLogic.values).toEqual({
...DEFAULT_VALUES_SUCCESS,
externalConnectorApiKey: '',
sourceConfigData: newSourceConfigData,
});
expect(ExternalConnectorLogic.values.externalConnectorApiKey).toEqual('');
});
});

Expand All @@ -104,39 +132,59 @@ describe('ExternalConnectorLogic', () => {

ExternalConnectorLogic.actions.saveExternalConnectorConfigSuccess('external');

expect(ExternalConnectorLogic.values.buttonLoading).toEqual(false);
expect(ExternalConnectorLogic.values).toEqual({ ...DEFAULT_VALUES, buttonLoading: false });
});
});

describe('saveExternalConnectorConfigError', () => {
it('turns off the button loading flag', () => {
mount({
buttonLoading: true,
});

ExternalConnectorLogic.actions.saveExternalConnectorConfigError();

expect(ExternalConnectorLogic.values).toEqual({ ...DEFAULT_VALUES, buttonLoading: false });
});
});

describe('setExternalConnectorApiKey', () => {
it('updates the api key', () => {
ExternalConnectorLogic.actions.setExternalConnectorApiKey('abcd1234');

expect(ExternalConnectorLogic.values.externalConnectorApiKey).toEqual('abcd1234');
expect(ExternalConnectorLogic.values).toEqual({
...DEFAULT_VALUES,
externalConnectorApiKey: 'abcd1234',
});
});
});

describe('setExternalConnectorUrl', () => {
it('updates the url', () => {
ExternalConnectorLogic.actions.setExternalConnectorUrl('https://www.elastic.co');

expect(ExternalConnectorLogic.values.externalConnectorUrl).toEqual(
'https://www.elastic.co'
);
expect(ExternalConnectorLogic.values).toEqual({
...DEFAULT_VALUES,
externalConnectorUrl: 'https://www.elastic.co',
insecureUrl: false,
});
});
});
describe('setUrlValidation', () => {
it('updates the url validation', () => {
ExternalConnectorLogic.actions.setUrlValidation(false);

expect(ExternalConnectorLogic.values.urlValid).toEqual(false);
expect(ExternalConnectorLogic.values).toEqual({ ...DEFAULT_VALUES, urlValid: false });
});
});
describe('setShowInsecureUrlCallout', () => {
it('updates the url validation', () => {
ExternalConnectorLogic.actions.setShowInsecureUrlCallout(true);

expect(ExternalConnectorLogic.values.showInsecureUrlCallout).toEqual(true);
expect(ExternalConnectorLogic.values).toEqual({
...DEFAULT_VALUES,
showInsecureUrlCallout: true,
});
});
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import { AddSourceLogic, SourceConfigData } from '../add_source_logic';
export interface ExternalConnectorActions {
fetchExternalSource: () => true;
fetchExternalSourceSuccess(sourceConfigData: SourceConfigData): SourceConfigData;
saveExternalConnectorConfigError: () => true;
saveExternalConnectorConfigSuccess(externalConnectorId: string): string;
setExternalConnectorApiKey(externalConnectorApiKey: string): string;
saveExternalConnectorConfig(config: ExternalConnectorConfig): ExternalConnectorConfig;
Expand Down Expand Up @@ -59,6 +60,7 @@ export const ExternalConnectorLogic = kea<
actions: {
fetchExternalSource: true,
fetchExternalSourceSuccess: (sourceConfigData) => sourceConfigData,
saveExternalConnectorConfigError: true,
saveExternalConnectorConfigSuccess: (externalConnectorId) => externalConnectorId,
saveExternalConnectorConfig: (config) => config,
setExternalConnectorApiKey: (externalConnectorApiKey: string) => externalConnectorApiKey,
Expand All @@ -78,6 +80,7 @@ export const ExternalConnectorLogic = kea<
false,
{
saveExternalConnectorConfigSuccess: () => false,
saveExternalConnectorConfigError: () => false,
saveExternalConnectorConfig: () => true,
},
],
Expand Down Expand Up @@ -168,6 +171,7 @@ export const ExternalConnectorLogic = kea<
getSourcesPath(`${getAddPath('external')}`, AppLogic.values.isOrganization)
);
} catch (e) {
actions.saveExternalConnectorConfigError();
flashAPIErrors(e);
}
}
Expand Down

0 comments on commit 7494a91

Please sign in to comment.