Add react ui test
[clamp.git] / ui-react / src / components / dialogs / DeployLoop.test.js
index bb08baf..2959ed6 100644 (file)
@@ -24,6 +24,8 @@ import React from 'react';
 import { shallow } from 'enzyme';
 import DeployLoop from './DeployLoop';
 import LoopCache from '../../api/LoopCache';
+import LoopActionService from '../../api/LoopActionService';
+import LoopService from '../../api/LoopService';
 
 describe('Verify DeployLoop', () => {
        const loopCache = new LoopCache({
@@ -43,4 +45,67 @@ describe('Verify DeployLoop', () => {
 
        expect(component).toMatchSnapshot();
        });
+       
+       it('Test handleClose', () => {
+               const historyMock = { push: jest.fn() };
+               const handleClose = jest.spyOn(DeployLoop.prototype,'handleClose');
+               const component = shallow(<DeployLoop history={historyMock} loopCache={loopCache}/>)
+
+               component.find('[variant="secondary"]').prop('onClick')();
+
+               expect(handleClose).toHaveBeenCalledTimes(1);
+               expect(historyMock.push.mock.calls[0]).toEqual([ '/']);
+       });
+
+       it('Test handleSave successful', async () => {
+               const flushPromises = () => new Promise(setImmediate);
+               const historyMock = { push: jest.fn() };
+               const updateLoopFunction = jest.fn();
+               const handleSave = jest.spyOn(DeployLoop.prototype,'handleSave');
+               LoopService.updateGlobalProperties = jest.fn().mockImplementation(() => {
+                       return Promise.resolve({
+                               ok: true,
+                               status: 200,
+                               text: () => "OK"
+                       });
+               });
+               LoopActionService.performAction = jest.fn().mockImplementation(() => {
+                       return Promise.resolve({
+                               ok: true,
+                               status: 200,
+                               json: () => {}
+                       });
+               });
+               LoopActionService.refreshStatus = jest.fn().mockImplementation(() => {
+                       return Promise.resolve({
+                               ok: true,
+                               status: 200,
+                               json: () => {}
+                       });
+               });
+               const jsdomAlert = window.alert;
+               window.alert = () => {};
+               const component = shallow(<DeployLoop history={historyMock} 
+                                               loopCache={loopCache} updateLoopFunction={updateLoopFunction} />)
+
+               component.find('[variant="primary"]').prop('onClick')();
+               await flushPromises();
+               component.update();
+
+               expect(handleSave).toHaveBeenCalledTimes(1);
+               expect(component.state('show')).toEqual(false);
+               expect(historyMock.push.mock.calls[0]).toEqual([ '/']);
+               window.alert = jsdomAlert;
+               handleSave.mockClear();
+       });
+
+       it('Onchange event', () => {
+               const event = { target: { name: "location_id", value: "testLocation"} };
+               const component = shallow(<DeployLoop loopCache={loopCache}/>);
+               const forms = component.find('StateManager');
+
+               component.find('[name="location_id"]').simulate('change', event);
+               component.update();
+               expect(component.state('temporaryPropertiesJson').dcaeDeployParameters.location_id).toEqual("testLocation");
+       });
 });
\ No newline at end of file