From f8ec2dcdcec8a686d3e58d82a99aa097df2f0c41 Mon Sep 17 00:00:00 2001 From: brunomilitzer Date: Thu, 27 Jan 2022 17:51:58 +0000 Subject: Added Menu and Loop Jest Tests Issue-ID: POLICY-3876 Change-Id: I5f4d80aefdff8b837a40742b66727b888e985b86 Signed-off-by: brunomilitzer --- .../src/components/dialogs/Loop/ModifyLoopModal.js | 4 +- .../dialogs/Loop/ModifyLoopModal.test.js | 32 +++-- .../components/dialogs/Policy/ViewAllPolicies.js | 7 +- .../dialogs/Policy/ViewAllPolicies.test.js | 135 +++++++++++++++++++++ .../dialogs/Policy/toscaModels.test.json | 23 ++++ .../dialogs/Policy/toscaPoliciesData.test.json | 92 ++++++++++++++ .../dialogs/Policy/toscaPoliciesList.test.json | 94 ++++++++++++++ .../ui-react/src/components/menu/MenuBar.test.js | 46 ++++++- 8 files changed, 415 insertions(+), 18 deletions(-) create mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/ViewAllPolicies.test.js create mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/toscaModels.test.json create mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/toscaPoliciesData.test.json create mode 100644 gui-clamp/ui-react/src/components/dialogs/Policy/toscaPoliciesList.test.json (limited to 'gui-clamp/ui-react') diff --git a/gui-clamp/ui-react/src/components/dialogs/Loop/ModifyLoopModal.js b/gui-clamp/ui-react/src/components/dialogs/Loop/ModifyLoopModal.js index 0d20341..32ae209 100644 --- a/gui-clamp/ui-react/src/components/dialogs/Loop/ModifyLoopModal.js +++ b/gui-clamp/ui-react/src/components/dialogs/Loop/ModifyLoopModal.js @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2020 AT&T Intellectual Property. All rights - * reserved. + * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/gui-clamp/ui-react/src/components/dialogs/Loop/ModifyLoopModal.test.js b/gui-clamp/ui-react/src/components/dialogs/Loop/ModifyLoopModal.test.js index 79267af..ef57998 100644 --- a/gui-clamp/ui-react/src/components/dialogs/Loop/ModifyLoopModal.test.js +++ b/gui-clamp/ui-react/src/components/dialogs/Loop/ModifyLoopModal.test.js @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2020 AT&T Intellectual Property. All rights - * reserved. + * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,15 +28,18 @@ import LoopService from '../../../api/LoopService'; import PolicyToscaService from '../../../api/PolicyToscaService'; describe('Verify ModifyLoopModal', () => { + const toscaPolicyModels = [{ + "policyModelType": "test", + "policyAcronym": "test", + "version": "1.0.0", + "updatedBy": "", + "updatedDate": "" + }]; + const selectedPolicyModels = []; + beforeEach(() => { PolicyToscaService.getToscaPolicyModels = jest.fn().mockImplementation(() => { - return Promise.resolve([{ - "policyModelType": "test", - "policyAcronym": "test", - "version": "1.0.0", - "updatedBy": "", - "updatedDate": "" - }]); + return Promise.resolve(toscaPolicyModels); }); PolicyToscaService.getToscaPolicyModelYaml = jest.fn().mockImplementation(() => { return Promise.resolve("OK"); @@ -62,7 +65,6 @@ describe('Verify ModifyLoopModal', () => { } }); const historyMock = { push: jest.fn() }; - const flushPromises = () => new Promise(setImmediate); it('Test handleClose', () => { const handleClose = jest.spyOn(ModifyLoopModal.prototype, 'handleClose'); @@ -106,4 +108,14 @@ describe('Verify ModifyLoopModal', () => { instance.handleYamlContent(event); expect(component.state('content')).toEqual("testValue"); }); + + it('Test initializeToscaPolicyModelsInfo', () => { + const component = mount() + component.setState({ + toscaPolicyModelsData: toscaPolicyModels, + selectedPolicyModelsData: selectedPolicyModels + }); + expect(component.state('toscaPolicyModelsData')).toEqual(toscaPolicyModels); + expect(component.state('selectedPolicyModelsData')).toEqual(selectedPolicyModels); + }); }); diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/ViewAllPolicies.js b/gui-clamp/ui-react/src/components/dialogs/Policy/ViewAllPolicies.js index f571bc1..0aed5f4 100644 --- a/gui-clamp/ui-react/src/components/dialogs/Policy/ViewAllPolicies.js +++ b/gui-clamp/ui-react/src/components/dialogs/Policy/ViewAllPolicies.js @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * ONAP POLICY-CLAMP * ================================================================================ - * Copyright (C) 2021 AT&T Intellectual Property. All rights - * reserved. + * Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,11 +44,9 @@ import DehazeIcon from '@material-ui/icons/Dehaze'; import ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos'; import AddIcon from '@material-ui/icons/Add'; import PublishIcon from '@material-ui/icons/Publish'; -import Switch from '@material-ui/core/Switch'; import MaterialTable from "material-table"; import PolicyService from '../../../api/PolicyService'; import PolicyToscaService from '../../../api/PolicyToscaService'; -import Select from '@material-ui/core/Select'; import Alert from 'react-bootstrap/Alert'; import Tabs from 'react-bootstrap/Tabs'; import Tab from 'react-bootstrap/Tab'; @@ -251,6 +249,7 @@ export default class ViewAllPolicies extends React.Component { } handleClose() { + console.log("handleClose called"); this.setState({ show: false }); this.props.history.push('/') } diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/ViewAllPolicies.test.js b/gui-clamp/ui-react/src/components/dialogs/Policy/ViewAllPolicies.test.js new file mode 100644 index 0000000..d477c9a --- /dev/null +++ b/gui-clamp/ui-react/src/components/dialogs/Policy/ViewAllPolicies.test.js @@ -0,0 +1,135 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2022 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +import {shallow} from "enzyme"; +import React from "react"; +import ViewAllPolicies from "./ViewAllPolicies"; +import fs from "fs"; +import PolicyToscaService from "../../../api/PolicyToscaService"; +import PolicyService from "../../../api/PolicyService"; +import CreateLoopModal from "../Loop/CreateLoopModal"; + +describe('Verify ViewAllPolicies', () => { + let toscaPolicyModels = fs.readFileSync('src/components/dialogs/Policy/toscaData.test.json', { + encoding: 'utf8', + flag: 'r' + }); + let toscaPoliciesList = fs.readFileSync('src/components/dialogs/Policy/toscaPoliciesList.test.json', { + encoding: 'utf8', + flag: 'r' + }); + + it('Test handleClose', () => { + const historyMock = {push: jest.fn()}; + const handleClose = jest.spyOn(ViewAllPolicies.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(); + }); + + it('handleClose called when top-right button clicked', () => { + const historyMock = {push: jest.fn()}; + const handleClose = jest.spyOn(ViewAllPolicies.prototype, 'handleClose'); + const component = shallow(); + + component.find('[size="xl"]').get(0).props.onHide(); + + expect(handleClose).toHaveBeenCalledTimes(1); + expect(component.state('show')).toEqual(false); + expect(historyMock.push.mock.calls[0]).toEqual(['/']); + + handleClose.mockClear(); + }); + + it('Test getAllToscaModels', () => { + PolicyToscaService.getToscaPolicyModels = jest.fn().mockImplementation(() => { + return Promise.resolve(toscaPolicyModels); + }); + + const getAllToscaModels = jest.spyOn(ViewAllPolicies.prototype, 'getAllToscaModels'); + shallow(); + + expect(getAllToscaModels).toHaveBeenCalledTimes(1); + }); + + it('Test setToscaModelsListData', async () => { + PolicyToscaService.getToscaPolicyModel = jest.fn().mockImplementation(() => { + return Promise.resolve(toscaPolicyModels); + }); + + const component = shallow(); + component.setState({toscaModelsListData: toscaPolicyModels}) + expect(component.state('toscaModelsListData')).toEqual(toscaPolicyModels); + }); + + it('Test getAllPolicies', () => { + PolicyService.getPoliciesList = jest.fn().mockImplementation(() => { + return Promise.resolve(toscaPoliciesList); + }); + + const getAllPolicies = jest.spyOn(ViewAllPolicies.prototype, 'getAllPolicies'); + shallow(); + + expect(getAllPolicies).toHaveBeenCalledTimes(1); + }); + + it('Test setPoliciesListData', async () => { + PolicyService.getPoliciesList = jest.fn().mockImplementation(() => { + return Promise.resolve(toscaPoliciesList); + }); + + const component = shallow(); + component.setState({policiesListData: toscaPoliciesList}); + component.setState({policiesListDataFiltered: toscaPoliciesList}); + + expect(component.state('policiesListData')).toEqual(toscaPoliciesList); + expect(component.state('policiesListDataFiltered')).toEqual(toscaPoliciesList); + }); + + it('Test handleDeletePolicy event rowdata', async () => { + const rowData = { + type: 'onap.policies.monitoring.tcagen2', + type_version: '1.0.0', + name: 'MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0', + version: '1.0.0' + } + + PolicyService.deletePolicy = await jest.fn().mockImplementation(() => { + return Promise.resolve({}); + }); + + const event = { target: {value: 'event'}} + const component = shallow(); + + component.setState({showSuccessAlert: true}); + component.setState({showMessage: 'Policy successfully Deleted'}); + + component.find('input').simulate('click', event, rowData); + component.update(); + + expect(component.state('showSuccessAlert')).toEqual(true); + expect(component.state('showMessage')).toEqual('Policy successfully Deleted'); + }); +}); diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaModels.test.json b/gui-clamp/ui-react/src/components/dialogs/Policy/toscaModels.test.json new file mode 100644 index 0000000..aa757a8 --- /dev/null +++ b/gui-clamp/ui-react/src/components/dialogs/Policy/toscaModels.test.json @@ -0,0 +1,23 @@ +[ + { + "policyModelType": "onap.policies.controlloop.guard.common.Blacklist", + "version": "1.0.0", + "policyAcronym": "Blacklist", + "policyPdpGroup": { + "supportedPdpGroups": [ + { + "controlloop": [ + "xacml" + ] + } + ] + }, + "createdDate": "2021-06-17T15:15:11.250177Z", + "updatedDate": "2021-06-17T15:15:11.450816Z", + "updatedBy": "Not found", + "createdBy": "Not found", + "tableData": { + "id": 0 + } + } +] \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaPoliciesData.test.json b/gui-clamp/ui-react/src/components/dialogs/Policy/toscaPoliciesData.test.json new file mode 100644 index 0000000..9305243 --- /dev/null +++ b/gui-clamp/ui-react/src/components/dialogs/Policy/toscaPoliciesData.test.json @@ -0,0 +1,92 @@ +[ + { + "type": "onap.policies.monitoring.tcagen2", + "type_version": "1.0.0", + "properties": { + "tca.policy": { + "domain": "measurementsForVfScaling", + "metricsPerEventName": [ + { + "policyScope": "DCAE", + "thresholds": [ + { + "version": "1.0.2", + "severity": "MAJOR", + "thresholdValue": 200, + "closedLoopEventStatus": "ONSET", + "closedLoopControlName": "LOOP_test", + "direction": "LESS_OR_EQUAL", + "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta" + } + ], + "eventName": "vLoadBalancer", + "policyVersion": "v0.0.1", + "controlLoopSchemaType": "VM", + "policyName": "DCAE.Config_tca-hi-lo" + } + ] + } + }, + "name": "MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", + "version": "1.0.0", + "metadata": { + "policy-id": "MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", + "policy-version": "1.0.0" + }, + "pdpGroupInfo": [ + { + "monitoring": { + "name": "monitoring", + "description": "This group should be used for managing all monitoring related policies and pdps", + "pdpGroupState": "ACTIVE", + "properties": {}, + "pdpSubgroups": [ + { + "pdpType": "xacml", + "supportedPolicyTypes": [ + { + "name": "onap.policies.monitoring.*", + "version": "1.0.0" + }, + { + "name": "onap.policies.Naming", + "version": "1.0.0" + } + ], + "policies": [ + { + "name": "MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", + "version": "1.0.0" + } + ], + "currentInstanceCount": 0, + "desiredInstanceCount": 1, + "properties": {}, + "pdpInstances": [ + { + "instanceId": "monitoring-f8287777-5f3e-4f0f-b21b-d8829c93f57b", + "pdpState": "ACTIVE", + "healthy": "HEALTHY", + "message": "Pdp Heartbeat", + "lastUpdate": "2021-09-29T02:51:21Z" + } + ] + } + ] + } + } + ], + "supportedPdpGroups": [ + { + "monitoring": [ + "xacml" + ] + } + ], + "supportedPdpGroupsString": "monitoring/xacml\r\n", + "pdpGroupInfoString": "monitoring/xacml (ACTIVE)\r\n", + "tableData": { + "id": 0 + } + } +] \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/toscaPoliciesList.test.json b/gui-clamp/ui-react/src/components/dialogs/Policy/toscaPoliciesList.test.json new file mode 100644 index 0000000..0da8beb --- /dev/null +++ b/gui-clamp/ui-react/src/components/dialogs/Policy/toscaPoliciesList.test.json @@ -0,0 +1,94 @@ +{ + "policies": [ + { + "type": "onap.policies.monitoring.tcagen2", + "type_version": "1.0.0", + "properties": { + "tca.policy": { + "domain": "measurementsForVfScaling", + "metricsPerEventName": [ + { + "policyScope": "DCAE", + "thresholds": [ + { + "version": "1.0.2", + "severity": "MAJOR", + "thresholdValue": 200, + "closedLoopEventStatus": "ONSET", + "closedLoopControlName": "LOOP_test", + "direction": "LESS_OR_EQUAL", + "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta" + } + ], + "eventName": "vLoadBalancer", + "policyVersion": "v0.0.1", + "controlLoopSchemaType": "VM", + "policyName": "DCAE.Config_tca-hi-lo" + } + ] + } + }, + "name": "MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", + "version": "1.0.0", + "metadata": { + "policy-id": "MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", + "policy-version": "1.0.0" + }, + "pdpGroupInfo": [ + { + "monitoring": { + "name": "monitoring", + "description": "This group should be used for managing all monitoring related policies and pdps", + "pdpGroupState": "ACTIVE", + "properties": {}, + "pdpSubgroups": [ + { + "pdpType": "xacml", + "supportedPolicyTypes": [ + { + "name": "onap.policies.monitoring.*", + "version": "1.0.0" + }, + { + "name": "onap.policies.Naming", + "version": "1.0.0" + } + ], + "policies": [ + { + "name": "MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", + "version": "1.0.0" + } + ], + "currentInstanceCount": 0, + "desiredInstanceCount": 1, + "properties": {}, + "pdpInstances": [ + { + "instanceId": "monitoring-f8287777-5f3e-4f0f-b21b-d8829c93f57b", + "pdpState": "ACTIVE", + "healthy": "HEALTHY", + "message": "Pdp Heartbeat", + "lastUpdate": "2021-09-29T02:51:21Z" + } + ] + } + ] + } + } + ], + "supportedPdpGroups": [ + { + "monitoring": [ + "xacml" + ] + } + ], + "supportedPdpGroupsString": "monitoring/xacml\r\n", + "pdpGroupInfoString": "monitoring/xacml (ACTIVE)\r\n", + "tableData": { + "id": 0 + } + } + ] +} \ No newline at end of file diff --git a/gui-clamp/ui-react/src/components/menu/MenuBar.test.js b/gui-clamp/ui-react/src/components/menu/MenuBar.test.js index 81117bb..1e6dd1c 100644 --- a/gui-clamp/ui-react/src/components/menu/MenuBar.test.js +++ b/gui-clamp/ui-react/src/components/menu/MenuBar.test.js @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights - * reserved. + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,7 @@ import React from 'react'; import { shallow } from 'enzyme'; import MenuBar from './MenuBar'; +import DropdownItem from "react-bootstrap/DropdownItem"; describe('Verify MenuBar', () => { @@ -43,4 +44,45 @@ describe('Verify MenuBar', () => { component.setProps({ loopName: "Empty (NO loop loaded yet)" }); expect(component.state('disabled')).toBe(true); }); + + it('Find 20 DropdownItem', () => { + const component = shallow() + expect(component.find('DropdownItem').length).toEqual(20); + }); + + it('Finds POLICY Framework Menu', () => { + const component = shallow().childAt(0).dive(); + expect(component.find({ tile: 'POLICY Framework' })); + }); + + it('Finds POLICY Framework Menu', () => { + const component = shallow().childAt(1).dive(); + expect(component.find({ tile: 'CLAMP Options' })); + }); + + it('Finds POLICY Framework Menu', () => { + const component = shallow().childAt(2).dive(); + expect(component.find({ tile: 'LOOP Instance' })); + }); + + it('Finds POLICY Framework Menu', () => { + const component = shallow().childAt(3).dive(); + expect(component.find({ tile: 'LOOP Operations' })); + }); + + it('Finds POLICY Framework Menu', () => { + const component = shallow().childAt(4).dive(); + expect(component.find({ tile: 'TOSCA Control Loop' })); + }); + + it('Finds POLICY Framework Menu', () => { + const component = shallow().childAt(5).dive(); + expect(component.find({ tile: 'Help' })); + }); + + it('Finds StyledNavLink', () => { + const component = shallow(); + console.log(component.debug()); + expect(component.find('Styled(NavLink)').length).toEqual(2); + }); }); -- cgit 1.2.3-korg