2 * Copyright © 2016-2017 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
13 * or implied. See the License for the specific language governing
14 * permissions and limitations under the License.
18 import React from 'react';
20 import TestUtils from 'react-addons-test-utils';
21 import VersionController from 'nfvo-components/panel/versionController/VersionController.jsx';
22 import {actionsEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js';
23 import {scryRenderedDOMComponentsWithTestId} from 'test-utils/Util.js';
24 import {VSPComponentsVersionControllerFactory} from 'test-utils/factories/softwareProduct/SoftwareProductComponentsNetworkFactories.js';
25 import { Provider } from 'react-redux';
26 import {storeCreator} from 'sdc-app/AppStore.js';
28 describe('versionController UI Component', () => {
29 let onSave, onClose, onVersionSwitching = onSave = onClose = () => {return Promise.resolve();};
30 const versionData = VSPComponentsVersionControllerFactory.build();
31 const isFormDataValid = true;
32 const viewableVersions = versionData.viewableVersions;
33 const version = versionData.version;
34 const itemPermission = {isCertified: false, isCollaborator: true, isDirty: false};
35 const props = {onSave, onClose, isFormDataValid, viewableVersions, version, onVersionSwitching, itemPermission};
36 const store = storeCreator();
38 it('function does exist', () => {
39 var renderer = TestUtils.createRenderer();
41 renderer.render(<Provider store={store}><VersionController {...props} /></Provider>);
42 var renderedOutput = renderer.getRenderOutput();
43 expect(renderedOutput).toBeTruthy();
46 it('validating submit function', () => {
47 let provider = TestUtils.renderIntoDocument(<Provider store={store}>
48 <VersionController {...props} /></Provider>);
49 let versionController = TestUtils.findRenderedComponentWithType(
53 let cb = action => expect(action).toBe(actionsEnum.SUBMIT);
54 versionController.submit(cb);
57 it('validating revert function', () => {
58 let provider = TestUtils.renderIntoDocument(<Provider store={store}><VersionController {...props} /></Provider>);
59 let versionController = TestUtils.findRenderedComponentWithType(
63 let cb = action => expect(action).toBe(actionsEnum.REVERT);
64 versionController.revert(cb);
67 it('does not show the save button when no onSave available', () => {
68 let noSaveProps = {...props, onSave: null };
69 let versionController = TestUtils.renderIntoDocument(<Provider store={store}><VersionController {...noSaveProps} /></Provider>);
70 let elem = scryRenderedDOMComponentsWithTestId(versionController,'vc-save-btn');
71 expect(elem).toBeTruthy();
72 expect(elem.length).toBe(0);
75 it('does not show the submit button when no callVCAction available', () => {
76 let callVCActionProps = {...props, callVCAction: null};
77 let versionController = TestUtils.renderIntoDocument(<Provider store={store}><VersionController {...callVCActionProps} /></Provider>);
78 let elem = scryRenderedDOMComponentsWithTestId(versionController,'vc-submit-btn');
79 expect(elem).toBeTruthy();
80 expect(elem.length).toBe(0);
83 it('does not show the revert button when no callVCAction available', () => {
84 let callVCActionProps = {...props, callVCAction: null};
85 let versionController = TestUtils.renderIntoDocument(<Provider store={store}><VersionController {...callVCActionProps} /></Provider>);
86 let elem = scryRenderedDOMComponentsWithTestId(versionController,'vc-revert-btn');
87 expect(elem).toBeTruthy();
88 expect(elem.length).toBe(0);
91 it('Shows the save button when onSave available', () => {
92 let versionController = TestUtils.renderIntoDocument(<Provider store={store}><VersionController {...props} /></Provider>);
93 let elem = scryRenderedDOMComponentsWithTestId(versionController,'vc-save-btn');
94 expect(elem).toBeTruthy();
95 expect(elem.length).toBe(1);
98 it('Shows the submit button when callVCAction available and user is owner', () => {
99 const permissions = {owner: {userId: '111'}},
100 userInfo = {userId: '111'};
101 let callVCActionProps = { ...props, callVCAction: function(){}, permissions, userInfo};
102 let versionController = TestUtils.renderIntoDocument(<Provider store={store}><VersionController {...callVCActionProps} /></Provider>);
103 let elem = scryRenderedDOMComponentsWithTestId(versionController,'vc-submit-btn');
104 expect(elem).toBeTruthy();
105 expect(elem.length).toBe(1);
108 it('Shows the submit button when callVCAction available and user is contributor', () => {
109 const permissions = {owner: {userId: '111'}, contributors: ['232']},
110 userInfo = {userId: '232'};
111 let callVCActionProps = { ...props, callVCAction: function(){}, permissions, userInfo};
112 let versionController = TestUtils.renderIntoDocument(<Provider store={store}><VersionController {...callVCActionProps} /></Provider>);
113 let elem = scryRenderedDOMComponentsWithTestId(versionController,'vc-submit-btn');
114 expect(elem).toBeTruthy();
115 expect(elem.length).toBe(1);
118 it('Doesn\'t show the submit button when user is not owner or contributor', () => {
119 const permissions = {owner: {userId: '111'}, contributors: ['232']},
120 userInfo = {userId: '222'};
121 const propsViewer = {...props,
122 itemPermission: {isCertified: false, isCollaborator: false, isDirty: false}};
123 let callVCActionProps = { ...propsViewer, callVCAction: function(){}, permissions, userInfo};
124 let versionController = TestUtils.renderIntoDocument(<Provider store={store}><VersionController {...callVCActionProps} /></Provider>);
125 let elem = scryRenderedDOMComponentsWithTestId(versionController,'vc-submit-btn');
126 expect(elem).toBeTruthy();
127 expect(elem.length).toBe(0);
130 it('Shows the revert button when callVCAction available', () => {
131 let callVCActionProps = { ...props, callVCAction: function(){} };
132 let versionController = TestUtils.renderIntoDocument(<Provider store={store}><VersionController {...callVCActionProps} /></Provider>);
133 let elem = scryRenderedDOMComponentsWithTestId(versionController,'vc-revert-btn');
134 expect(elem).toBeTruthy();
135 expect(elem.length).toBe(1);