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';
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';
11 describe('SelectedNodeDetails - Shallow render of component', () => {
13 const nodeTypeProp = 'VNF';
14 const uidProp = 'SomeValidUIDName';
15 const nodeDataProp = {
16 'interface-role': 'MPLS',
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'
28 nodeType={nodeTypeProp}
29 nodeData={nodeDataProp}
34 it('Render basic component', () => {
35 expect(wrapper.length).toEqual(1);
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);
43 it('Verify uid is displayed', () => {
44 expect(wrapper.contains(<span>{uidProp} <LaunchInContext/></span>)).toBe(true);
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
53 // validate the table header content
54 expect(wrapper.find('thead')).toHaveLength(1);
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>
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>
70 expect(wrapper.contains(
71 <td className='right-column-cell'>{nodeDataProp[prop]}</td>
77 describe('SelectedNodeDetails - Shallow render of component with no node data', () => {
79 const nodeTypeProp = 'VNF';
80 const uidProp = 'SomeValidUIDName';
81 const nodeDataProp = {};
86 nodeType={nodeTypeProp}
87 nodeData={nodeDataProp}
92 it('Render basic component', () => {
93 expect(wrapper.length).toEqual(1);
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');
103 describe('SelectedNodeDetails - Render React Component (wrapped in <Provider>)', () => {
104 const initialState = {
106 launchExternalResourceReducer: {
107 externalResourcePayload: {}
109 selectedNodeDetails: {
111 uid: 'AAI/CLYMR/000509/SD_WAN',
113 'interface-role': 'MPLS',
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'
124 const mockStore = configureStore();
128 store = mockStore(initialState);
129 wrapper = mount(<Provider store={store}><ConnectedSelectedNodeDetails /></Provider>);
132 it('Render the connected component', () => {
133 expect(wrapper.find(ConnectedSelectedNodeDetails).length).toEqual(1);
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);