blob: 2ef1d9fce8fbc65865a46a21cdfc35afe54113c8 [file] [log] [blame]
svishnev1eb66b72018-01-11 14:39:45 +02001/*
Einav Weiss Keidard2f57942018-02-14 14:00:07 +02002 * Copyright © 2016-2018 European Support Limited
AviZi280f8012017-06-09 02:39:56 +03003 *
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
Einav Weiss Keidard2f57942018-02-14 14:00:07 +02007 *
svishnev1eb66b72018-01-11 14:39:45 +02008 * http://www.apache.org/licenses/LICENSE-2.0
Einav Weiss Keidard2f57942018-02-14 14:00:07 +02009 *
AviZi280f8012017-06-09 02:39:56 +030010 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
svishnev1eb66b72018-01-11 14:39:45 +020012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
AviZi280f8012017-06-09 02:39:56 +030015 */
16
AviZi280f8012017-06-09 02:39:56 +030017import React from 'react';
Einav Weiss Keidard2f57942018-02-14 14:00:07 +020018import TestUtils from 'react-dom/test-utils';
AviZi280f8012017-06-09 02:39:56 +030019
talig8e9c0652017-12-20 14:30:43 +020020import {Provider} from 'react-redux';
21import {storeCreator} from 'sdc-app/AppStore.js';
22
AviZi280f8012017-06-09 02:39:56 +030023import {VSPEditorFactory} from 'test-utils/factories/softwareProduct/SoftwareProductEditorFactories.js';
24import {CategoryWithSubFactory} from 'test-utils/factories/softwareProduct/VSPCategoriesFactory.js';
25import {LicenseAgreementStoreFactory} from 'test-utils/factories/licenseModel/LicenseAgreementFactories.js';
26import {FeatureGroupStoreFactory} from 'test-utils/factories/licenseModel/FeatureGroupFactories.js';
27import {default as SoftwareProductQSchemaFactory} from 'test-utils/factories/softwareProduct/SoftwareProductQSchemaFactory.js';
28import {default as VspQdataFactory} from 'test-utils/factories/softwareProduct/VspQdataFactory.js';
29import {VSPComponentsFactory} from 'test-utils/factories/softwareProduct/SoftwareProductComponentsFactories.js';
30import {FinalizedLicenseModelFactory} from 'test-utils/factories/licenseModel/LicenseModelFactories.js';
talig8e9c0652017-12-20 14:30:43 +020031import CurrentScreenFactory from 'test-utils/factories/common/CurrentScreenFactory.js';
AviZi280f8012017-06-09 02:39:56 +030032
33import {mapStateToProps} from 'sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js';
34import SoftwareProductLandingPageView from 'sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageView.jsx';
35
36
37describe('Software Product Landing Page: ', function () {
38
talig8e9c0652017-12-20 14:30:43 +020039 let currentSoftwareProduct = {}, softwareProductCategories = [], currentScreen = {},
AviZi280f8012017-06-09 02:39:56 +030040 finalizedLicenseModelList, licenseAgreementList, featureGroupsList, qschema, qdata = {};
41 const dummyFunc = () => {};
talig8e9c0652017-12-20 14:30:43 +020042
AviZi280f8012017-06-09 02:39:56 +030043 beforeAll(function() {
44 finalizedLicenseModelList = FinalizedLicenseModelFactory.buildList(2);
talig8e9c0652017-12-20 14:30:43 +020045 currentSoftwareProduct = VSPEditorFactory.build({id:'RTRTG454545', vendorId: finalizedLicenseModelList[0].id, vendorName: finalizedLicenseModelList[0].name, onBoardingMethod: 'HEAT'});
AviZi280f8012017-06-09 02:39:56 +030046 softwareProductCategories = CategoryWithSubFactory.buildList(2,{},{quantity: 1});
47 licenseAgreementList = LicenseAgreementStoreFactory.buildList(2);
48 featureGroupsList = FeatureGroupStoreFactory.buildList(2,{referencingLicenseAgreements:[licenseAgreementList[0].id]});
talig8e9c0652017-12-20 14:30:43 +020049 currentScreen = CurrentScreenFactory.build();
AviZi280f8012017-06-09 02:39:56 +030050 qdata = VspQdataFactory.build();
51 qschema = SoftwareProductQSchemaFactory.build(qdata);
AviZi280f8012017-06-09 02:39:56 +030052 });
53
AviZi280f8012017-06-09 02:39:56 +030054 it('should mapper exist', () => {
55 expect(mapStateToProps).toBeTruthy();
56 });
57
58 it('should mapper return vsp basic data', () => {
talig8e9c0652017-12-20 14:30:43 +020059 const state = {
60 currentScreen,
AviZi280f8012017-06-09 02:39:56 +030061 softwareProduct: {
62 softwareProductEditor: {
63 data: currentSoftwareProduct
64 },
65 softwareProductCategories,
66 softwareProductQuestionnaire: {
67 qdata,
68 qschema
69 },
70 softwareProductComponents: {
71 componentsList:[]
talig8e9c0652017-12-20 14:30:43 +020072 },
73 softwareProductAttachments: {
74 heatSetup: {}
AviZi280f8012017-06-09 02:39:56 +030075 }
76 },
77 finalizedLicenseModelList,
78 licenseModel: {
79 licenseAgreement: {
80 licenseAgreementList
81 },
82 featureGroup: {
83 featureGroupsList
84 }
85 }
86 };
87
talig8e9c0652017-12-20 14:30:43 +020088 const result = mapStateToProps(state);
AviZi280f8012017-06-09 02:39:56 +030089 expect(result.currentSoftwareProduct).toBeTruthy();
AviZi280f8012017-06-09 02:39:56 +030090
91 });
92
93 it('vsp landing basic view', () => {
94
95 const params = {
talig8e9c0652017-12-20 14:30:43 +020096 ...currentScreen.props,
AviZi280f8012017-06-09 02:39:56 +030097 currentSoftwareProduct,
marine34532642021-06-18 17:51:46 +020098 componentsList: VSPComponentsFactory.buildList(2),
xuegao6d9f2912021-07-15 08:56:52 +020099 features: [{name:'EXTERNAL_LICENSE', active: true}]
AviZi280f8012017-06-09 02:39:56 +0300100 };
101
Avi Zivb8e2faf2017-07-18 19:45:38 +0300102 const store = storeCreator();
talig8e9c0652017-12-20 14:30:43 +0200103 let vspLandingView = TestUtils.renderIntoDocument(
104 <Provider store={store}>
105 <SoftwareProductLandingPageView {...params}/>
106 </Provider>
107 );
AviZi280f8012017-06-09 02:39:56 +0300108 expect(vspLandingView).toBeTruthy();
109 });
110
JerzySzachniewiczf2c0a412021-02-12 13:53:13 +0100111 it('vsp licence agreement type change', () => {
112 const params = {
113 ...currentScreen.props,
114 currentSoftwareProduct,
marine34532642021-06-18 17:51:46 +0200115 componentsList: VSPComponentsFactory.buildList(2),
xuegao6d9f2912021-07-15 08:56:52 +0200116 features: [{name:'EXTERNAL_LICENSE', active: true}]
JerzySzachniewiczf2c0a412021-02-12 13:53:13 +0100117 };
118 const e = { target: {
119 value: 'INTERNAL'
120 }};
121 const obj = {dummyFunction: x => true};
122 const store = storeCreator();
123 let vspLandingView = TestUtils.renderIntoDocument(
124 <Provider store={store}>
125 <SoftwareProductLandingPageView {...params}/>
126 </Provider>
127 );
128 let vspLandingViewWrapper = TestUtils.findRenderedComponentWithType(
129 vspLandingView,
130 SoftwareProductLandingPageView
131 );
132 const spy = jest.spyOn(obj, "dummyFunction");
133 vspLandingViewWrapper.licenceChange(e, currentSoftwareProduct, obj.dummyFunction);
134 expect(spy).toHaveBeenCalled();
135 expect(currentSoftwareProduct.licenseType).toBe("INTERNAL");
136 expect(vspLandingViewWrapper).toBeTruthy();
137
138 })
139
AviZi280f8012017-06-09 02:39:56 +0300140 it('vsp landing handleOnDragEnter test ', () => {
141
142 const params = {
143 currentSoftwareProduct,
talig8e9c0652017-12-20 14:30:43 +0200144 ...currentScreen.props,
marine34532642021-06-18 17:51:46 +0200145 componentsList: VSPComponentsFactory.buildList(2),
xuegao6d9f2912021-07-15 08:56:52 +0200146 features: [{name:'EXTERNAL_LICENSE', active: true}]
AviZi280f8012017-06-09 02:39:56 +0300147 };
148
Avi Zivb8e2faf2017-07-18 19:45:38 +0300149 const store = storeCreator();
talig8e9c0652017-12-20 14:30:43 +0200150 let vspLandingView = TestUtils.renderIntoDocument(
151 <Provider store={store}>
152 <SoftwareProductLandingPageView {...params}/>
153 </Provider>
154 );
Avi Zivb8e2faf2017-07-18 19:45:38 +0300155 let vspLandingViewWrapper = TestUtils.findRenderedComponentWithType(
156 vspLandingView,
157 SoftwareProductLandingPageView
158 );
AviZi280f8012017-06-09 02:39:56 +0300159 expect(vspLandingView).toBeTruthy();
Avi Zivb8e2faf2017-07-18 19:45:38 +0300160 vspLandingViewWrapper.handleOnDragEnter(false);
161 expect(vspLandingViewWrapper.state.dragging).toEqual(true);
AviZi280f8012017-06-09 02:39:56 +0300162 });
163
164
165 it('vsp landing handleImportSubmit test ', () => {
166
167 const params = {
talig8e9c0652017-12-20 14:30:43 +0200168 ...currentScreen.props,
AviZi280f8012017-06-09 02:39:56 +0300169 currentSoftwareProduct,
AviZi280f8012017-06-09 02:39:56 +0300170 componentsList: VSPComponentsFactory.buildList(2),
171 onUploadConfirmation: dummyFunc,
172 onUpload: dummyFunc,
marine34532642021-06-18 17:51:46 +0200173 onInvalidFileSizeUpload: dummyFunc,
xuegao6d9f2912021-07-15 08:56:52 +0200174 features: [{name:'EXTERNAL_LICENSE', active: true}]
AviZi280f8012017-06-09 02:39:56 +0300175 };
svishnev1eb66b72018-01-11 14:39:45 +0200176
AviZi280f8012017-06-09 02:39:56 +0300177 const files = [
178 {
179 name: 'aaa',
180 size: 123
181 }
182 ];
183
Avi Zivb8e2faf2017-07-18 19:45:38 +0300184 const store = storeCreator();
185
talig8e9c0652017-12-20 14:30:43 +0200186 let vspLandingView = TestUtils.renderIntoDocument(
187 <Provider store={store}>
188 <SoftwareProductLandingPageView {...params}/>
189 </Provider>
190 );
191
Avi Zivb8e2faf2017-07-18 19:45:38 +0300192 let vspLandingViewWrapper = TestUtils.findRenderedComponentWithType(
193 vspLandingView,
194 SoftwareProductLandingPageView
195 );
196 expect(vspLandingView).toBeTruthy();
197 vspLandingViewWrapper.handleImportSubmit(files, false);
198 expect(vspLandingViewWrapper.state.dragging).toEqual(false);
199 expect(vspLandingViewWrapper.state.fileName).toEqual(files[0].name);
AviZi280f8012017-06-09 02:39:56 +0300200 const files1 = [
201 {
202 name: 'bbb',
203 size: 0
204 }
205 ];
Avi Zivb8e2faf2017-07-18 19:45:38 +0300206 vspLandingViewWrapper.handleImportSubmit(files1, false);
AviZi280f8012017-06-09 02:39:56 +0300207 });
208
209 it('vsp landing handleImportSubmit with damaged file test ', () => {
210
211 const params = {
212 currentSoftwareProduct,
talig8e9c0652017-12-20 14:30:43 +0200213 ...currentScreen.props,
AviZi280f8012017-06-09 02:39:56 +0300214 componentsList: VSPComponentsFactory.buildList(2),
215 onUploadConfirmation: dummyFunc,
216 onUpload: dummyFunc,
marine34532642021-06-18 17:51:46 +0200217 onInvalidFileSizeUpload: dummyFunc,
xuegao6d9f2912021-07-15 08:56:52 +0200218 features: [{name:'EXTERNAL_LICENSE', active: true}]
AviZi280f8012017-06-09 02:39:56 +0300219 };
220
Avi Zivb8e2faf2017-07-18 19:45:38 +0300221 const store = storeCreator();
222
talig8e9c0652017-12-20 14:30:43 +0200223 let vspLandingView = TestUtils.renderIntoDocument(
224 <Provider store={store}>
225 <SoftwareProductLandingPageView {...params}/>
226 </Provider>
227 );
Avi Zivb8e2faf2017-07-18 19:45:38 +0300228
229 let vspLandingViewWrapper = TestUtils.findRenderedComponentWithType(
230 vspLandingView,
231 SoftwareProductLandingPageView
svishnev1eb66b72018-01-11 14:39:45 +0200232 );
AviZi280f8012017-06-09 02:39:56 +0300233 expect(vspLandingView).toBeTruthy();
234 const files = [
235 {
236 name: 'aaa',
237 size: 0
238 }
239 ];
240
Avi Zivb8e2faf2017-07-18 19:45:38 +0300241 vspLandingViewWrapper.handleImportSubmit(files, false);
242 expect(vspLandingViewWrapper.state.dragging).toEqual(false);
243 expect(vspLandingViewWrapper.state.fileName).toEqual('');
AviZi280f8012017-06-09 02:39:56 +0300244 });
245});