Skip to content

Commit

Permalink
Move onsave out from getTopNavConfig function and added unit tests
Browse files Browse the repository at this point in the history
Signed-off-by: abbyhu2000 <[email protected]>
  • Loading branch information
abbyhu2000 committed Sep 30, 2022
1 parent 7c2619f commit 9f88aaa
Show file tree
Hide file tree
Showing 4 changed files with 317 additions and 99 deletions.
2 changes: 1 addition & 1 deletion config/opensearch_dashboards.yml
Original file line number Diff line number Diff line change
Expand Up @@ -222,4 +222,4 @@

# Set the value of this setting to true to start exploring wizard
# functionality in Visualization.
# wizard.enabled: false
wizard.enabled: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

import { WizardServices } from '../../types';
import { getOnSave } from './get_top_nav_config';
import { createWizardServicesMock } from './mocks';

describe('getOnSave', () => {
let savedWizardVis: any;
let originatingApp: string | undefined;
let visualizationIdFromUrl: string;
let dispatch: any;
let mockServices: jest.Mocked<WizardServices>;
let onSaveProps: {
newTitle: string;
newCopyOnSave: boolean;
isTitleDuplicateConfirmed: boolean;
onTitleDuplicate: any;
newDescription: string;
returnToOrigin: boolean;
};

beforeEach(() => {
savedWizardVis = {
id: '1',
title: 'save wizard wiz title',
description: '',
visualizationState: '',
styleState: '',
version: 0,
copyOnSave: true,
searchSourceFields: {},
save: jest.fn().mockReturnValue('1'),
};
originatingApp = '';
visualizationIdFromUrl = '';
dispatch = jest.fn();
mockServices = createWizardServicesMock();

onSaveProps = {
newTitle: 'new title',
newCopyOnSave: false,
isTitleDuplicateConfirmed: false,
onTitleDuplicate: jest.fn(),
newDescription: 'new description',
returnToOrigin: true,
};
});

test('return undefined when savedWizardVis is null', async () => {
savedWizardVis = null;
const onSave = getOnSave(
savedWizardVis,
originatingApp,
visualizationIdFromUrl,
dispatch,
mockServices
);
const onSaveResult = await onSave(onSaveProps);

expect(onSaveResult).toBeUndefined();
});

test('savedWizardVis get saved correctly', async () => {
const onSave = getOnSave(
savedWizardVis,
originatingApp,
visualizationIdFromUrl,
dispatch,
mockServices
);
const onSaveReturn = await onSave(onSaveProps);
expect(savedWizardVis).toMatchInlineSnapshot(`
Object {
"copyOnSave": false,
"description": "new description",
"id": "1",
"save": [MockFunction] {
"calls": Array [
Array [
Object {
"confirmOverwrite": false,
"isTitleDuplicateConfirmed": false,
"onTitleDuplicate": [MockFunction],
"returnToOrigin": true,
},
],
],
"results": Array [
Object {
"type": "return",
"value": "1",
},
],
},
"searchSourceFields": Object {},
"styleState": "",
"title": "new title",
"version": 0,
"visualizationState": "",
}
`);
expect(onSaveReturn?.id).toBe('1');
});

test('savedWizardVis does not change title with a null id', async () => {
savedWizardVis.save = jest.fn().mockReturnValue(null);
const onSave = getOnSave(
savedWizardVis,
originatingApp,
visualizationIdFromUrl,
dispatch,
mockServices
);
const onSaveResult = await onSave(onSaveProps);
expect(savedWizardVis.title).toBe('save wizard wiz title');
expect(onSaveResult?.id).toBeNull();
});

test('create a new wizard from dashboard', async () => {
savedWizardVis.id = null;
savedWizardVis.save = jest.fn().mockReturnValue('2');
originatingApp = 'dashboard';
onSaveProps.returnToOrigin = true;

const onSave = getOnSave(
savedWizardVis,
originatingApp,
visualizationIdFromUrl,
dispatch,
mockServices
);
const onSaveResult = await onSave(onSaveProps);
expect(onSaveResult?.id).toBe('2');
expect(dispatch).toBeCalledTimes(0);
});

test('edit an exising wizard from dashboard', async () => {
savedWizardVis.copyOnSave = false;
originatingApp = 'dashboard';
onSaveProps.returnToOrigin = true;
const onSave = getOnSave(
savedWizardVis,
originatingApp,
visualizationIdFromUrl,
dispatch,
mockServices
);
const onSaveResult = await onSave(onSaveProps);
expect(onSaveResult?.id).toBe('1');
expect(mockServices.application.navigateToApp).toBeCalledTimes(1);
});
});
Loading

0 comments on commit 9f88aaa

Please sign in to comment.