Remove unused code
[aai/sparky-fe.git] / test / app / tierSupport / SelectedNodeDetails.test.js
1 import React from 'react';
2 import { shallow, mount } from 'enzyme';
3 import {Provider} from 'react-redux'
4 import configureStore from 'redux-mock-store';
5 import Table from 'react-bootstrap/lib/Table';
6
7 import ConnectedSelectedNodeDetails, { SelectedNodeDetails } from 'app/tierSupport/selectedNodeDetails/SelectedNodeDetails.jsx';
8 import { SELECTED_NODE_TABLE_COLUMN_NAMES } from 'app/tierSupport/selectedNodeDetails/SelectedNodeDetailsConstants.js';
9 import LaunchInContext from 'app/tierSupport/launchExternalResource/LaunchExternalResource.jsx';
10
11 describe('SelectedNodeDetails - Shallow render of component', () => {
12   let wrapper;
13   const nodeTypeProp = 'VNF';
14   const uidProp = 'SomeValidUIDName';
15   const nodeDataProp = {
16     'interface-role': 'MPLS',
17     'in-maint': 'false',
18     'interface-type': 'WAN',
19     'port-description': 'MPLS port on 10_NSG16_location4',
20     'resource-version': '123456789',
21     'interface-name': '10_port1_location4',
22     'uri': 'network/pnfs/pnf/10_NSG14_location4/p-interfaces/p-interface/10_port1_location4'
23   };
24
25   beforeEach( () => {
26     wrapper = shallow(
27       <SelectedNodeDetails
28         nodeType={nodeTypeProp}
29         nodeData={nodeDataProp}
30         uid={uidProp}
31       />);
32   })
33
34   it('Render basic component', () => {
35     expect(wrapper.length).toEqual(1);
36   });
37
38   it('Verify node type is displayed as a header', () => {
39     expect(wrapper.contains(<h2>{nodeTypeProp}</h2>)).toBe(true);
40     expect(wrapper.find('h2')).toHaveLength(1);
41   });
42
43   it('Verify uid is displayed', () => {
44     expect(wrapper.contains(<span>{uidProp} <LaunchInContext/></span>)).toBe(true);
45   });
46
47   it('Verify node data table is displayed', () => {
48     // verify table has a row for each node data prop plus one row for the column headers
49     expect(wrapper.find(Table)).toHaveLength(1);
50     expect(wrapper.find(Table).props().bsClass).toEqual('ts-selected-node-table');
51     expect(wrapper.find(Table).children()).toHaveLength(2); // thead and tbody
52
53     // validate the table header content
54     expect(wrapper.find('thead')).toHaveLength(1);
55     let cellClassName;
56     for (let index = 1; index <= SELECTED_NODE_TABLE_COLUMN_NAMES.length; index++) {
57       cellClassName = (index % 2 ? 'left-column-cell' : 'right-column-cell');
58       expect(wrapper.contains(
59         <th className={cellClassName}  key={index}>{SELECTED_NODE_TABLE_COLUMN_NAMES[index-1]}</th>
60       )).toBe(true);
61     }
62
63     // validate the table body content
64     expect(wrapper.find('tbody')).toHaveLength(1);
65     expect(wrapper.find('tbody').children()).toHaveLength(7); // 1 row for each of the 7 properties
66     for (let prop in nodeDataProp) {
67       expect(wrapper.contains(
68         <td className='left-column-cell'>{prop}</td>
69       )).toBe(true);
70       expect(wrapper.contains(
71         <td className='right-column-cell'>{nodeDataProp[prop]}</td>
72       )).toBe(true);
73     }
74   });
75 })
76
77 describe('SelectedNodeDetails - Shallow render of component with no node data', () => {
78   let wrapper;
79   const nodeTypeProp = 'VNF';
80   const uidProp = 'SomeValidUIDName';
81   const nodeDataProp = {};
82
83   beforeEach( () => {
84     wrapper = shallow(
85       <SelectedNodeDetails
86         nodeType={nodeTypeProp}
87         nodeData={nodeDataProp}
88         uid={uidProp}
89       />);
90   })
91
92   it('Render basic component', () => {
93     expect(wrapper.length).toEqual(1);
94   });
95
96   it('Verify node data table is hidden', () => {
97     // verify table is hidden
98     expect(wrapper.find(Table)).toHaveLength(1);
99     expect(wrapper.find(Table).props().bsClass).toEqual('hidden');
100   });
101 })
102
103 describe('SelectedNodeDetails - Render React Component (wrapped in <Provider>)', () => {
104   const initialState = {
105     tierSupport: {
106       launchExternalResourceReducer: {
107         externalResourcePayload: {}
108       },
109       selectedNodeDetails: {
110         nodeType: 'VNF',
111         uid: 'AAI/CLYMR/000509/SD_WAN',
112         nodeData: {
113           'interface-role': 'MPLS',
114           'in-maint': 'false',
115           'interface-type': 'WAN',
116           'port-description': 'MPLS port on 10_NSG16_location4',
117           'resource-version': '123456789',
118           'interface-name': '10_port1_location4',
119           'uri': 'network/pnfs/pnf/10_NSG14_location4/p-interfaces/p-interface/10_port1_location4'
120         }
121       }
122     }
123   };
124   const mockStore = configureStore();
125   let store, wrapper;
126
127   beforeEach( () => {
128     store = mockStore(initialState);
129     wrapper = mount(<Provider store={store}><ConnectedSelectedNodeDetails /></Provider>);
130   })
131
132   it('Render the connected component', () => {
133     expect(wrapper.find(ConnectedSelectedNodeDetails).length).toEqual(1);
134   });
135
136   it('Validate props from store', () => {
137     expect(wrapper.find(SelectedNodeDetails).props().uid).toEqual(initialState.tierSupport.selectedNodeDetails.uid);
138     expect(wrapper.find(SelectedNodeDetails).props().nodeType).toEqual(initialState.tierSupport.selectedNodeDetails.nodeType);
139     expect(wrapper.find(SelectedNodeDetails).props().nodeData).toEqual(initialState.tierSupport.selectedNodeDetails.nodeData);
140   });
141 })