From 3b7f669088d5867056578b275bf4314af3a439c6 Mon Sep 17 00:00:00 2001 From: sebdet Date: Mon, 17 Feb 2020 06:03:31 -0800 Subject: Fix the loop template view Fix the loop template view modal as the rest api has been changed + the database model as well Issue-ID: CLAMP-589 Change-Id: I57521bc1c3afaf4ca5a2acf4c59823df06fd4cd9 Signed-off-by: sebdet --- .../dialogs/Tosca/ViewLoopTemplatesModal.test.js | 186 +++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.test.js (limited to 'ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.test.js') diff --git a/ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.test.js b/ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.test.js new file mode 100644 index 000000000..94d4acdc8 --- /dev/null +++ b/ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.test.js @@ -0,0 +1,186 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END============================================ + * =================================================================== + * + */ +import React from 'react'; +import { shallow } from 'enzyme'; +import ViewLoopTemplatesModal from './ViewLoopTemplatesModal'; +import { mount } from 'enzyme'; + +describe('Verify ViewLoopTemplatesModal', () => { + beforeEach(() => { + fetch.resetMocks(); + } + ); + + it('Test API Successful', () => { + fetch.mockImplementationOnce(() => { + return Promise.resolve({ + ok: true, + status: 200, + json: () => { + return Promise.resolve({ + "index": "1", + "name": "MTCA version 1", + "modelService.serviceDetails.name": "MTCA", + "allowedLoopType" : "CLOSED", + "maximumInstancesAllowed":1, + "updatedDate":"2019-09-06 19:09:42" + }); + } + }); + }); + const component = shallow(); + }); + + it('Test API Exception', () => { + fetch.mockImplementationOnce(() => { + return Promise.resolve({ + ok: false, + status: 500, + json: () => { + return Promise.resolve({ + "index": "1", + "name": "MTCA version 1", + "modelService.serviceDetails.name": "MTCA", + "allowedLoopType" : "CLOSED", + "maximumInstancesAllowed":1, + "updatedDate":"2019-09-06 19:09:42" + }); + } + }); + }); + const component = shallow(); + }); + + it('Test API Rejection', () => { + const myMockFunc = fetch.mockImplementationOnce(() => Promise.reject('error')); + setTimeout( () => myMockFunc().catch(e => { + console.log(e); + }), + 100 + ); + new Promise(resolve => setTimeout(resolve, 200)); + const component = shallow(); + expect(myMockFunc.mock.calls.length).toBe(1); + }); + + it('Test the tosca model view render method', () => { + fetch.mockImplementationOnce(() => { + return Promise.resolve({ + ok: true, + status: 200, + json: () => { + return Promise.resolve({ + "index": "1", + "name": "MTCA version 1", + "modelService.serviceDetails.name": "MTCA", + "allowedLoopType" : "CLOSED", + "maximumInstancesAllowed":1, + "updatedDate":"2019-09-06 19:09:42" + }); + } + }); + }); + const component = shallow(); + component.setState({ loopTemplateData: { + "index": "1", + "name": "MTCA version 1", + "modelService.serviceDetails.name": "MTCA", + "allowedLoopType" : "CLOSED", + "maximumInstancesAllowed":1, + "updatedDate":"2019-09-06 19:09:42" + } + }); + expect(component).toMatchSnapshot(); + }); + + it('Test Table icons', () => { + fetch.mockImplementationOnce(() => { + return Promise.resolve({ + ok: true, + status: 200, + json: () => { + return Promise.resolve({ + "index": "1", + "name": "MTCA version 1", + "modelService.serviceDetails.name": "MTCA", + "allowedLoopType" : "CLOSED", + "maximumInstancesAllowed":1, + "updatedDate":"2019-09-06 19:09:42" + }); + } + }); + }); + const component = mount(); + expect(component.find('[className="MuiSelect-icon MuiTablePagination-selectIcon"]')).toBeTruthy(); + }); + + it('Test handleYamlContent', () => { + fetch.mockImplementationOnce(() => { + return Promise.resolve({ + ok: true, + status: 200, + json: () => { + return Promise.resolve({ + "index": "1", + "name": "MTCA version 1", + "modelService.serviceDetails.name": "MTCA", + "allowedLoopType" : "CLOSED", + "maximumInstancesAllowed":1, + "updatedDate":"2019-09-06 19:09:42" + }); + } + }); + }); + const yamlContent = 'MTCA version 1'; + const component = shallow(); + component.find('[value="Please select a loop template to display it"]').prop('onChange')({ target: { value: yamlContent }}); + expect(component.state('content')).toEqual(yamlContent); + }); + + it('Test handleClose', () => { + fetch.mockImplementationOnce(() => { + return Promise.resolve({ + ok: true, + status: 200, + json: () => { + return Promise.resolve({ + "index": "1", + "name": "MTCA version 1", + "modelService.serviceDetails.name": "MTCA", + "allowedLoopType" : "CLOSED", + "maximumInstancesAllowed":1, + "updatedDate":"2019-09-06 19:09:42" + }); + } + }); + }); + const historyMock = { push: jest.fn() }; + const handleClose = jest.spyOn(ViewLoopTemplatesModal.prototype,'handleClose'); + const component = shallow() + component.find('[variant="secondary"]').prop('onClick')(); + expect(handleClose).toHaveBeenCalledTimes(1); + expect(component.state('show')).toEqual(false); + expect(historyMock.push.mock.calls[0]).toEqual([ '/']); + handleClose.mockClear(); + }); + }); \ No newline at end of file -- cgit 1.2.3-korg