Add unit tests for UI 84/96084/3
authorxuegao <xg353y@intl.att.com>
Thu, 19 Sep 2019 12:23:14 +0000 (14:23 +0200)
committerxuegao <xg353y@intl.att.com>
Tue, 24 Sep 2019 09:07:36 +0000 (11:07 +0200)
Adding unit tests for React UI

Issue-ID: CLAMP-509
Change-Id: If31bbea7972736aa190fd0fed19336a1aa382af8
Signed-off-by: xuegao <xg353y@intl.att.com>
19 files changed:
docs/swagger/swagger.pdf
src/main/java/org/onap/clamp/clds/config/AafConfiguration.java
src/main/resources/META-INF/resources/swagger.html
ui-react/package.json
ui-react/src/components/dialogs/DeployLoop.js
ui-react/src/components/dialogs/DeployLoop.test.js [new file with mode: 0644]
ui-react/src/components/dialogs/LoopProperties.test.js [new file with mode: 0644]
ui-react/src/components/dialogs/UserInfo.test.js [new file with mode: 0644]
ui-react/src/components/dialogs/__snapshots__/DeployLoop.test.js.snap [new file with mode: 0644]
ui-react/src/components/dialogs/__snapshots__/LoopProperties.test.js.snap [new file with mode: 0644]
ui-react/src/components/dialogs/__snapshots__/UserInfo.test.js.snap [new file with mode: 0644]
ui-react/src/components/loop_viewer/logs/LoopLogs.test.js [new file with mode: 0644]
ui-react/src/components/loop_viewer/logs/__snapshots__/LoopLogs.test.js.snap [new file with mode: 0644]
ui-react/src/components/loop_viewer/status/LoopStatus.test.js [new file with mode: 0644]
ui-react/src/components/loop_viewer/status/__snapshots__/LoopStatus.test.js.snap [new file with mode: 0644]
ui-react/src/components/loop_viewer/svg/LoopSvg.test.js [new file with mode: 0644]
ui-react/src/components/loop_viewer/svg/__snapshots__/LoopSvg.test.js.snap [new file with mode: 0644]
ui-react/src/components/menu/MenuBar.test.js [new file with mode: 0644]
ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap [new file with mode: 0644]

index 12c2216..5f3307b 100644 (file)
@@ -4,8 +4,8 @@
 << /Title (Clamp Rest API)
 /Creator (Asciidoctor PDF 1.5.0.alpha.10, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.10, based on Prawn 1.3.0)
-/CreationDate (D:20190911145449+02'00')
-/ModDate (D:20190911145449+02'00')
+/CreationDate (D:20190919142605+02'00')
+/ModDate (D:20190919142605+02'00')
 >>
 endobj
 2 0 obj
index b137378..5bcb0c5 100644 (file)
@@ -60,7 +60,6 @@ public class AafConfiguration {
         registration.addUrlPatterns("/restservices/clds/v1/dictionary/*");
         registration.addUrlPatterns("/restservices/clds/v1/user/*");
         registration.addUrlPatterns("/restservices/clds/v2/loop/*");
-        //registration.addUrlPatterns("*");
         registration.setName("cadiFilter");
         registration.setOrder(0);
         return registration;
index 49bbe0f..17507b6 100644 (file)
@@ -2388,7 +2388,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2019-09-11 13:30:19 CEST
+Last updated 2019-05-27 14:30:20 CEST
 </div>
 </div>
 </body>
index dffe698..4a363ab 100644 (file)
                "coverageReporters": [
                        "lcov"
                ],
-               "setupFiles": ["./src/setupTests.js"],
-               "snapshotSerializers": ["enzyme-to-json/serializer"]
+               "moduleNameMapper": {
+               "\\.(css|png)$": "identity-obj-proxy"
+               },
+               "setupFiles": [
+                       "./src/setupTests.js"
+               ],
+               "snapshotSerializers": [
+                       "enzyme-to-json/serializer"
+               ]
        },
        "babel": {
                "presets": [
index 2ec395d..805f0f2 100644 (file)
@@ -58,7 +58,7 @@ export default class DeployLoop extends React.Component {
        handleClose(){
                this.props.history.push('/');
        }
-       handleSave(e) {
+       handleSave() {
                const loopName = this.props.loopCache.getLoopName();
                // save the global propserties
                LoopService.updateGlobalProperties(loopName, this.state.temporaryPropertiesJson).then(resp => {
diff --git a/ui-react/src/components/dialogs/DeployLoop.test.js b/ui-react/src/components/dialogs/DeployLoop.test.js
new file mode 100644 (file)
index 0000000..bb08baf
--- /dev/null
@@ -0,0 +1,46 @@
+/*-
+ * ============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 DeployLoop from './DeployLoop';
+import LoopCache from '../../api/LoopCache';
+
+describe('Verify DeployLoop', () => {
+       const loopCache = new LoopCache({
+               "name": "LOOP_Jbv1z_v1_0_ResourceInstanceName1_tca",
+               "globalPropertiesJson": {
+                       "dcaeDeployParameters": {
+                               "location_id": "",
+                               "policy_id": "TCA_h2NMX_v1_0_ResourceInstanceName1_tca"
+                       }
+               }
+       });
+
+       it('Test the render method', () => {
+               const component = shallow(
+                       <DeployLoop loopCache={loopCache}/>
+               )
+
+       expect(component).toMatchSnapshot();
+       });
+});
\ No newline at end of file
diff --git a/ui-react/src/components/dialogs/LoopProperties.test.js b/ui-react/src/components/dialogs/LoopProperties.test.js
new file mode 100644 (file)
index 0000000..fadb909
--- /dev/null
@@ -0,0 +1,61 @@
+/*-
+ * ============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 LoopProperties from './LoopProperties';
+import LoopCache from '../../api/LoopCache';
+
+describe('Verify LoopProperties', () => {
+       const loopCache = new LoopCache({
+               "name": "LOOP_Jbv1z_v1_0_ResourceInstanceName1_tca",
+               "globalPropertiesJson": {
+                       "dcaeDeployParameters": {
+                               "location_id": "",
+                               "policy_id": "TCA_h2NMX_v1_0_ResourceInstanceName1_tca"
+                       }
+               }
+       });
+
+       it('Test the render method', () => {
+               const component = shallow(
+                       <LoopProperties loopCache={loopCache}/>
+               )
+               component.setState({ show: true,
+                       temporaryPropertiesJson: {
+                               "dcaeDeployParameters": {
+                                       "location_id": "",
+                                       "policy_id": "TCA_h2NMX_v1_0_ResourceInstanceName1_tca"
+                               }
+                       }
+               });
+
+       expect(component.state('temporaryPropertiesJson')).toEqual({
+       "dcaeDeployParameters": {
+               "location_id": "",
+               "policy_id": "TCA_h2NMX_v1_0_ResourceInstanceName1_tca"}
+       });
+       expect(component.state('show')).toEqual(true);
+
+       expect(component).toMatchSnapshot();
+       });
+});
diff --git a/ui-react/src/components/dialogs/UserInfo.test.js b/ui-react/src/components/dialogs/UserInfo.test.js
new file mode 100644 (file)
index 0000000..186dac8
--- /dev/null
@@ -0,0 +1,86 @@
+/*-
+ * ============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 UserInfo from './UserInfo';
+
+describe('Verify UserInfo', () => {
+
+       beforeEach(() => {
+               fetch.resetMocks();
+               fetch.mockImplementation(() => {
+                       return Promise.resolve({
+                               ok: true,
+                               status: 200,
+                               json: () => {
+                                       return Promise.resolve({
+                                               "userName": "test",
+                                               "cldsVersion": "1.0.0",
+                                       });
+                       }});
+               });
+       })
+
+       it('Test the render method full permission', () => {
+               const component = shallow(<UserInfo />)
+               component.setState({ userInfo: {
+                       "userName": "test",
+                       "cldsVersion": "1.0.0",
+                       "permissionReadCl": true,
+                       "permissionReadTemplate" : true,
+                       "permissionReadTosca" : true,
+                       "permissionUpdateTemplate" : true,
+                       "permissionUpdateCl" : true,
+                       "permissionUpdateTosca": true
+               }});
+               expect(component).toMatchSnapshot();
+       });
+
+       it('Test the render method no permission', () => {
+               const component = shallow(<UserInfo />)
+               component.setState({ userInfo: {}
+               });
+
+               expect(component.find('FormControl').length).toEqual(0);
+       });
+
+       it('Test the render method read permission', () => {
+               const component = shallow(<UserInfo />)
+               component.setState({ userInfo: {
+                       "userName": "test",
+                       "cldsVersion": "1.0.0",
+                       "permissionReadCl": true,
+                       "permissionReadTemplate" : true,
+                       "permissionReadTosca" : true
+               }});
+
+               expect(component.find('FormControl').length).toEqual(5);
+
+               const forms = component.find('FormControl');
+               expect(forms.get(0).props.defaultValue).toEqual("test");
+               expect(forms.get(1).props.defaultValue).toEqual("1.0.0");
+               expect(forms.get(2).props.defaultValue).toEqual("Read Template");
+               expect(forms.get(3).props.defaultValue).toEqual("Read Model");
+               expect(forms.get(4).props.defaultValue).toEqual("Read Tosca");
+       });
+});
diff --git a/ui-react/src/components/dialogs/__snapshots__/DeployLoop.test.js.snap b/ui-react/src/components/dialogs/__snapshots__/DeployLoop.test.js.snap
new file mode 100644 (file)
index 0000000..1fd4b10
--- /dev/null
@@ -0,0 +1,66 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Verify DeployLoop Test the render method 1`] = `
+<Styled(Bootstrap(Modal))
+  onHide={[Function]}
+  show={true}
+  size="lg"
+>
+  <ModalHeader
+    closeButton={true}
+    closeLabel="Close"
+  >
+    <ModalTitle>
+      Deployment parameters
+    </ModalTitle>
+  </ModalHeader>
+  <Styled(FormGroup)>
+    <FormLabel
+      column={false}
+      srOnly={false}
+    >
+      location_id
+    </FormLabel>
+    <FormControl
+      defaultValue=""
+      name="location_id"
+      onChange={[Function]}
+      type="text"
+    />
+  </Styled(FormGroup)>
+  <Styled(FormGroup)>
+    <FormLabel
+      column={false}
+      srOnly={false}
+    >
+      policy_id
+    </FormLabel>
+    <FormControl
+      defaultValue="TCA_h2NMX_v1_0_ResourceInstanceName1_tca"
+      name="policy_id"
+      onChange={[Function]}
+      type="text"
+    />
+  </Styled(FormGroup)>
+  <ModalFooter>
+    <Button
+      active={false}
+      disabled={false}
+      onClick={[Function]}
+      type="null"
+      variant="secondary"
+    >
+      Cancel
+    </Button>
+    <Button
+      active={false}
+      disabled={false}
+      onClick={[Function]}
+      type="submit"
+      variant="primary"
+    >
+      Deploy
+    </Button>
+  </ModalFooter>
+</Styled(Bootstrap(Modal))>
+`;
diff --git a/ui-react/src/components/dialogs/__snapshots__/LoopProperties.test.js.snap b/ui-react/src/components/dialogs/__snapshots__/LoopProperties.test.js.snap
new file mode 100644 (file)
index 0000000..c7e81c3
--- /dev/null
@@ -0,0 +1,59 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Verify LoopProperties Test the render method 1`] = `
+<Styled(Bootstrap(Modal))
+  onHide={[Function]}
+  show={true}
+  size="lg"
+>
+  <ModalHeader
+    closeButton={true}
+    closeLabel="Close"
+  >
+    <ModalTitle>
+      Model Properties
+    </ModalTitle>
+  </ModalHeader>
+  <ModalBody>
+    <Form
+      inline={false}
+    >
+      <FormGroup>
+        <FormLabel
+          column={false}
+          srOnly={false}
+        >
+          Deploy Parameters
+        </FormLabel>
+        <FormControl
+          as="textarea"
+          defaultValue="{\\"location_id\\":\\"\\",\\"policy_id\\":\\"TCA_h2NMX_v1_0_ResourceInstanceName1_tca\\"}"
+          name="dcaeDeployParameters"
+          onChange={[Function]}
+          rows="3"
+        />
+      </FormGroup>
+    </Form>
+  </ModalBody>
+  <ModalFooter>
+    <Button
+      active={false}
+      disabled={false}
+      onClick={[Function]}
+      type="null"
+      variant="secondary"
+    >
+      Cancel
+    </Button>
+    <Button
+      active={false}
+      disabled={false}
+      onClick={[Function]}
+      type="submit"
+      variant="primary"
+    >
+      Save Changes
+    </Button>
+  </ModalFooter>
+</Styled(Bootstrap(Modal))>
+`;
diff --git a/ui-react/src/components/dialogs/__snapshots__/UserInfo.test.js.snap b/ui-react/src/components/dialogs/__snapshots__/UserInfo.test.js.snap
new file mode 100644 (file)
index 0000000..1ae567a
--- /dev/null
@@ -0,0 +1,137 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Verify UserInfo Test the render method full permission 1`] = `
+<Styled(Bootstrap(Modal))
+  onHide={[Function]}
+  show={true}
+  size="lg"
+>
+  <ModalHeader
+    closeButton={true}
+    closeLabel="Close"
+  >
+    <ModalTitle>
+      User Info
+    </ModalTitle>
+  </ModalHeader>
+  <ModalBody>
+    <FormGroup
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "defaultProps": Object {
+            "noGutters": false,
+          },
+          "render": [Function],
+        }
+      }
+      controlId="userName"
+    >
+      <FormLabel
+        column={true}
+        sm="3"
+        srOnly={false}
+      >
+        Current User:
+      </FormLabel>
+      <Col>
+        <FormControl
+          defaultValue="test"
+          plaintext={true}
+          readOnly={true}
+        />
+      </Col>
+    </FormGroup>
+    <FormGroup
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "defaultProps": Object {
+            "noGutters": false,
+          },
+          "render": [Function],
+        }
+      }
+      controlId="cldsVersion"
+    >
+      <FormLabel
+        column={true}
+        sm="3"
+        srOnly={false}
+      >
+        CLDS Version:
+      </FormLabel>
+      <Col>
+        <FormControl
+          defaultValue="1.0.0"
+          plaintext={true}
+          readOnly={true}
+        />
+      </Col>
+    </FormGroup>
+    <FormGroup
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "defaultProps": Object {
+            "noGutters": false,
+          },
+          "render": [Function],
+        }
+      }
+      controlId="userPermissions"
+    >
+      <FormLabel
+        column={true}
+        sm="3"
+        srOnly={false}
+      >
+        User Permissions:
+      </FormLabel>
+      <Col>
+        <FormControl
+          defaultValue="Read Template"
+          plaintext={true}
+          readOnly={true}
+        />
+        <FormControl
+          defaultValue="Read Model"
+          plaintext={true}
+          readOnly={true}
+        />
+        <FormControl
+          defaultValue="Read Tosca"
+          plaintext={true}
+          readOnly={true}
+        />
+        <FormControl
+          defaultValue="Edit Template"
+          plaintext={true}
+          readOnly={true}
+        />
+        <FormControl
+          defaultValue="Edit Model"
+          plaintext={true}
+          readOnly={true}
+        />
+        <FormControl
+          defaultValue="Edit Tosca"
+          plaintext={true}
+          readOnly={true}
+        />
+      </Col>
+    </FormGroup>
+  </ModalBody>
+  <ModalFooter>
+    <Button
+      active={false}
+      disabled={false}
+      onClick={[Function]}
+      type="null"
+      variant="secondary"
+    >
+      Cancel
+    </Button>
+  </ModalFooter>
+</Styled(Bootstrap(Modal))>
+`;
diff --git a/ui-react/src/components/loop_viewer/logs/LoopLogs.test.js b/ui-react/src/components/loop_viewer/logs/LoopLogs.test.js
new file mode 100644 (file)
index 0000000..3c76405
--- /dev/null
@@ -0,0 +1,48 @@
+/*-
+ * ============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 LoopLogs from './LoopLogs';
+import LoopCache from '../../../api/LoopCache';
+
+describe('Verify LoopLogs', () => {
+
+       const loopCache = new LoopCache({
+               "name": "LOOP_Jbv1z_v1_0_ResourceInstanceName1_tca",
+                       "loopLogs": [
+                       {
+                               "id": 1,
+                               "logType": "INFO",
+                               "logComponent": "CLAMP",
+                               "message": "Operational and Guard policies UPDATED",
+                               "logInstant": "2019-07-08T09:44:37Z"
+                       }
+               ]
+       });
+
+       it('Test the render method', () => {
+               const component = shallow(<LoopLogs loopCache={loopCache}/>)
+
+               expect(component).toMatchSnapshot();
+       });
+});
\ No newline at end of file
diff --git a/ui-react/src/components/loop_viewer/logs/__snapshots__/LoopLogs.test.js.snap b/ui-react/src/components/loop_viewer/logs/__snapshots__/LoopLogs.test.js.snap
new file mode 100644 (file)
index 0000000..174a320
--- /dev/null
@@ -0,0 +1,61 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Verify LoopLogs Test the render method 1`] = `
+<styled.div>
+  <label>
+    Loop Logs
+  </label>
+  <Styled(Bootstrap(Table))
+    hover={true}
+    responsive={true}
+    striped={true}
+    variant={true}
+  >
+    <thead>
+      <tr>
+        <th>
+          <span
+            align="left"
+          >
+            Date
+          </span>
+        </th>
+        <th>
+          <span
+            align="left"
+          >
+            Type
+          </span>
+        </th>
+        <th>
+          <span
+            align="left"
+          >
+            Component
+          </span>
+        </th>
+        <th>
+          <span
+            align="right"
+          >
+            Log
+          </span>
+        </th>
+      </tr>
+    </thead>
+    <tbody>
+      <TableRow
+        logRow={
+          Object {
+            "id": 1,
+            "logComponent": "CLAMP",
+            "logInstant": "2019-07-08T09:44:37Z",
+            "logType": "INFO",
+            "message": "Operational and Guard policies UPDATED",
+          }
+        }
+      />
+    </tbody>
+  </Styled(Bootstrap(Table))>
+</styled.div>
+`;
diff --git a/ui-react/src/components/loop_viewer/status/LoopStatus.test.js b/ui-react/src/components/loop_viewer/status/LoopStatus.test.js
new file mode 100644 (file)
index 0000000..2be825e
--- /dev/null
@@ -0,0 +1,54 @@
+/*-
+ * ============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 LoopStatus from './LoopStatus';
+import LoopCache from '../../../api/LoopCache';
+
+describe('Verify LoopStatus', () => {
+
+       const loopCache = new LoopCache({
+               "name": "LOOP_Jbv1z_v1_0_ResourceInstanceName1_tca",
+               "lastComputedState": "DESIGN",
+               "components": {
+                       "POLICY": {
+                               "componentState": {
+                                       "stateName": "NOT_SENT",
+                                       "description": "The policies defined have NOT yet been created on the policy engine"
+                               }
+                       },
+                       "DCAE": {
+                               "componentState": {
+                                       "stateName": "BLUEPRINT_DEPLOYED",
+                                       "description": "The DCAE blueprint has been found in the DCAE inventory but not yet instancianted for this loop"
+                               }
+                       }
+               }
+       });
+
+       it('Test the render method', () => {
+               const component = shallow(<LoopStatus loopCache={loopCache}/>)
+
+               expect(component).toMatchSnapshot();
+       });
+});
\ No newline at end of file
diff --git a/ui-react/src/components/loop_viewer/status/__snapshots__/LoopStatus.test.js.snap b/ui-react/src/components/loop_viewer/status/__snapshots__/LoopStatus.test.js.snap
new file mode 100644 (file)
index 0000000..275933e
--- /dev/null
@@ -0,0 +1,64 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Verify LoopStatus Test the render method 1`] = `
+<styled.div>
+  <label>
+    Loop Status: 
+    DESIGN
+  </label>
+  <div>
+    <Styled(Bootstrap(Table))
+      hover={true}
+      responsive={true}
+      striped={true}
+      variant={true}
+    >
+      <thead>
+        <tr>
+          <th>
+            <span
+              align="left"
+            >
+              Component Name
+            </span>
+          </th>
+          <th>
+            <span
+              align="left"
+            >
+              Component State
+            </span>
+          </th>
+          <th>
+            <span
+              align="right"
+            >
+              Description
+            </span>
+          </th>
+        </tr>
+      </thead>
+      <tbody>
+        <TableRow
+          statusRow={
+            Object {
+              "componentName": "POLICY",
+              "description": "The policies defined have NOT yet been created on the policy engine",
+              "stateName": "NOT_SENT",
+            }
+          }
+        />
+        <TableRow
+          statusRow={
+            Object {
+              "componentName": "DCAE",
+              "description": "The DCAE blueprint has been found in the DCAE inventory but not yet instancianted for this loop",
+              "stateName": "BLUEPRINT_DEPLOYED",
+            }
+          }
+        />
+      </tbody>
+    </Styled(Bootstrap(Table))>
+  </div>
+</styled.div>
+`;
diff --git a/ui-react/src/components/loop_viewer/svg/LoopSvg.test.js b/ui-react/src/components/loop_viewer/svg/LoopSvg.test.js
new file mode 100644 (file)
index 0000000..5a28328
--- /dev/null
@@ -0,0 +1,34 @@
+/*-
+ * ============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 LoopSvg from './LoopSvg';
+
+describe('Verify LoopSvg', () => {
+
+       it('Test the render method', () => {
+               const component = shallow(<LoopSvg />)
+
+               expect(component).toMatchSnapshot();
+       });
+});
diff --git a/ui-react/src/components/loop_viewer/svg/__snapshots__/LoopSvg.test.js.snap b/ui-react/src/components/loop_viewer/svg/__snapshots__/LoopSvg.test.js.snap
new file mode 100644 (file)
index 0000000..23d2225
--- /dev/null
@@ -0,0 +1,7 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Verify LoopSvg Test the render method 1`] = `
+<ContextConsumer>
+  <Component />
+</ContextConsumer>
+`;
diff --git a/ui-react/src/components/menu/MenuBar.test.js b/ui-react/src/components/menu/MenuBar.test.js
new file mode 100644 (file)
index 0000000..3e96dbf
--- /dev/null
@@ -0,0 +1,46 @@
+/*-
+ * ============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 MenuBar from './MenuBar';
+
+describe('Verify MenuBar', () => {
+
+       it('Test the render method', () => {
+               const component = shallow(<MenuBar />)
+
+               expect(component).toMatchSnapshot();
+       });
+
+       it('Update loopName', () => {
+               const component = shallow(<MenuBar />)
+               component.setProps({ loopName: "newLoop" });
+               expect(component.state('disabled')).toBe(false);
+       });
+
+       it('Default loopName', () => {
+               const component = shallow(<MenuBar />)
+               component.setProps({ loopName: "Empty (NO loop loaded yet)" });
+               expect(component.state('disabled')).toBe(true);
+       });
+});
diff --git a/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap b/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap
new file mode 100644 (file)
index 0000000..3ee7334
--- /dev/null
@@ -0,0 +1,594 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Verify MenuBar Test the render method 1`] = `
+<NavbarCollapse>
+  <Styled(NavDropdown)
+    title="Closed Loop"
+  >
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-kpOJdX",
+            "isStatic": false,
+            "rules": Array [
+              "
+       color: ",
+              [Function],
+              ";
+       background-color: ",
+              [Function],
+              ";
+       font-weight: normal;
+       display: block;
+       width: 100%;
+       padding: .25rem 1.5rem;
+       clear: both;
+       text-align: inherit;
+       white-space: nowrap;
+       border: 0;
+       :hover {
+               text-decoration: none;
+               background-color: ",
+              [Function],
+              ";
+               color:  ",
+              [Function],
+              ";
+       }
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-kpOJdX",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={false}
+      to="/openLoop"
+    >
+      Open CL
+    </DropdownItem>
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-kpOJdX",
+            "isStatic": false,
+            "rules": Array [
+              "
+       color: ",
+              [Function],
+              ";
+       background-color: ",
+              [Function],
+              ";
+       font-weight: normal;
+       display: block;
+       width: 100%;
+       padding: .25rem 1.5rem;
+       clear: both;
+       text-align: inherit;
+       white-space: nowrap;
+       border: 0;
+       :hover {
+               text-decoration: none;
+               background-color: ",
+              [Function],
+              ";
+               color:  ",
+              [Function],
+              ";
+       }
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-kpOJdX",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={true}
+      to="/loopProperties"
+    >
+      Properties CL
+    </DropdownItem>
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-kpOJdX",
+            "isStatic": false,
+            "rules": Array [
+              "
+       color: ",
+              [Function],
+              ";
+       background-color: ",
+              [Function],
+              ";
+       font-weight: normal;
+       display: block;
+       width: 100%;
+       padding: .25rem 1.5rem;
+       clear: both;
+       text-align: inherit;
+       white-space: nowrap;
+       border: 0;
+       :hover {
+               text-decoration: none;
+               background-color: ",
+              [Function],
+              ";
+               color:  ",
+              [Function],
+              ";
+       }
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-kpOJdX",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={true}
+      to="/closeLoop"
+    >
+      Close Model
+    </DropdownItem>
+  </Styled(NavDropdown)>
+  <Styled(NavDropdown)
+    title="Manage"
+  >
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-kpOJdX",
+            "isStatic": false,
+            "rules": Array [
+              "
+       color: ",
+              [Function],
+              ";
+       background-color: ",
+              [Function],
+              ";
+       font-weight: normal;
+       display: block;
+       width: 100%;
+       padding: .25rem 1.5rem;
+       clear: both;
+       text-align: inherit;
+       white-space: nowrap;
+       border: 0;
+       :hover {
+               text-decoration: none;
+               background-color: ",
+              [Function],
+              ";
+               color:  ",
+              [Function],
+              ";
+       }
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-kpOJdX",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={true}
+      to="/submit"
+    >
+      Submit
+    </DropdownItem>
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-kpOJdX",
+            "isStatic": false,
+            "rules": Array [
+              "
+       color: ",
+              [Function],
+              ";
+       background-color: ",
+              [Function],
+              ";
+       font-weight: normal;
+       display: block;
+       width: 100%;
+       padding: .25rem 1.5rem;
+       clear: both;
+       text-align: inherit;
+       white-space: nowrap;
+       border: 0;
+       :hover {
+               text-decoration: none;
+               background-color: ",
+              [Function],
+              ";
+               color:  ",
+              [Function],
+              ";
+       }
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-kpOJdX",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={true}
+      to="/stop"
+    >
+      Stop
+    </DropdownItem>
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-kpOJdX",
+            "isStatic": false,
+            "rules": Array [
+              "
+       color: ",
+              [Function],
+              ";
+       background-color: ",
+              [Function],
+              ";
+       font-weight: normal;
+       display: block;
+       width: 100%;
+       padding: .25rem 1.5rem;
+       clear: both;
+       text-align: inherit;
+       white-space: nowrap;
+       border: 0;
+       :hover {
+               text-decoration: none;
+               background-color: ",
+              [Function],
+              ";
+               color:  ",
+              [Function],
+              ";
+       }
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-kpOJdX",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={true}
+      to="/restart"
+    >
+      Restart
+    </DropdownItem>
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-kpOJdX",
+            "isStatic": false,
+            "rules": Array [
+              "
+       color: ",
+              [Function],
+              ";
+       background-color: ",
+              [Function],
+              ";
+       font-weight: normal;
+       display: block;
+       width: 100%;
+       padding: .25rem 1.5rem;
+       clear: both;
+       text-align: inherit;
+       white-space: nowrap;
+       border: 0;
+       :hover {
+               text-decoration: none;
+               background-color: ",
+              [Function],
+              ";
+               color:  ",
+              [Function],
+              ";
+       }
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-kpOJdX",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={true}
+      to="/delete"
+    >
+      Delete
+    </DropdownItem>
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-kpOJdX",
+            "isStatic": false,
+            "rules": Array [
+              "
+       color: ",
+              [Function],
+              ";
+       background-color: ",
+              [Function],
+              ";
+       font-weight: normal;
+       display: block;
+       width: 100%;
+       padding: .25rem 1.5rem;
+       clear: both;
+       text-align: inherit;
+       white-space: nowrap;
+       border: 0;
+       :hover {
+               text-decoration: none;
+               background-color: ",
+              [Function],
+              ";
+               color:  ",
+              [Function],
+              ";
+       }
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-kpOJdX",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={true}
+      to="/deploy"
+    >
+      Deploy
+    </DropdownItem>
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-kpOJdX",
+            "isStatic": false,
+            "rules": Array [
+              "
+       color: ",
+              [Function],
+              ";
+       background-color: ",
+              [Function],
+              ";
+       font-weight: normal;
+       display: block;
+       width: 100%;
+       padding: .25rem 1.5rem;
+       clear: both;
+       text-align: inherit;
+       white-space: nowrap;
+       border: 0;
+       :hover {
+               text-decoration: none;
+               background-color: ",
+              [Function],
+              ";
+               color:  ",
+              [Function],
+              ";
+       }
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-kpOJdX",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={true}
+      to="/undeploy"
+    >
+      UnDeploy
+    </DropdownItem>
+  </Styled(NavDropdown)>
+  <Styled(NavDropdown)
+    title="View"
+  >
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-kpOJdX",
+            "isStatic": false,
+            "rules": Array [
+              "
+       color: ",
+              [Function],
+              ";
+       background-color: ",
+              [Function],
+              ";
+       font-weight: normal;
+       display: block;
+       width: 100%;
+       padding: .25rem 1.5rem;
+       clear: both;
+       text-align: inherit;
+       white-space: nowrap;
+       border: 0;
+       :hover {
+               text-decoration: none;
+               background-color: ",
+              [Function],
+              ";
+               color:  ",
+              [Function],
+              ";
+       }
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-kpOJdX",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={true}
+      to="/refreshStatus"
+    >
+      Refresh Status
+    </DropdownItem>
+  </Styled(NavDropdown)>
+  <Styled(NavDropdown)
+    title="Help"
+  >
+    <Styled(NavLink)
+      href="https://wiki.onap.org/"
+      target="_blank"
+    >
+      Wiki
+    </Styled(NavLink)>
+    <Styled(NavLink)
+      href="mailto:onap-discuss@lists.onap.org?subject=CLAMP&body=Please send us suggestions or feature enhancements or defect. If possible, please send us the steps to replicate any defect."
+    >
+      Contact Us
+    </Styled(NavLink)>
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-kpOJdX",
+            "isStatic": false,
+            "rules": Array [
+              "
+       color: ",
+              [Function],
+              ";
+       background-color: ",
+              [Function],
+              ";
+       font-weight: normal;
+       display: block;
+       width: 100%;
+       padding: .25rem 1.5rem;
+       clear: both;
+       text-align: inherit;
+       white-space: nowrap;
+       border: 0;
+       :hover {
+               text-decoration: none;
+               background-color: ",
+              [Function],
+              ";
+               color:  ",
+              [Function],
+              ";
+       }
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-kpOJdX",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={false}
+      to="/userInfo"
+    >
+      User Info
+    </DropdownItem>
+  </Styled(NavDropdown)>
+</NavbarCollapse>
+`;