blob: 5516f9edaa47a3c60f49027dfab8a53fe3e1779c [file] [log] [blame]
svishnev1eb66b72018-01-11 14:39:45 +02001/*
2 * Copyright © 2016-2017 European Support Limited
AviZi280f8012017-06-09 02:39:56 +03003 *
Michael Landoefa037d2017-02-19 12:57:33 +02004 * 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
svishnev1eb66b72018-01-11 14:39:45 +02007 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
Michael Landoefa037d2017-02-19 12:57:33 +020010 * 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.
Michael Landoefa037d2017-02-19 12:57:33 +020015 */
Michael Landoefa037d2017-02-19 12:57:33 +020016import React from 'react';
svishnevaa2eece2018-01-18 17:52:06 +020017import TestUtils from 'react-addons-test-utils';
18
Michael Landoefa037d2017-02-19 12:57:33 +020019import {mapStateToProps} from 'sdc-app/onboarding/softwareProduct/details/SoftwareProductDetails.js';
20import SoftwareProductDetailsView from 'sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsView.jsx';
AviZi280f8012017-06-09 02:39:56 +030021import {VSPEditorFactory} from 'test-utils/factories/softwareProduct/SoftwareProductEditorFactories.js';
22import {CategoryWithSubFactory} from 'test-utils/factories/softwareProduct/VSPCategoriesFactory.js';
23import {LicenseAgreementStoreFactory} from 'test-utils/factories/licenseModel/LicenseAgreementFactories.js';
24import {FeatureGroupStoreFactory} from 'test-utils/factories/licenseModel/FeatureGroupFactories.js';
25import {SchemaGenericFieldInfoFactory} from 'test-utils/factories/softwareProduct/SoftwareProductQSchemaFactory.js';
26import {default as VspQdataFactory, VspDataMapFactory} from 'test-utils/factories/softwareProduct/VspQdataFactory.js';
27import {FinalizedLicenseModelFactory} from 'test-utils/factories/licenseModel/LicenseModelFactories.js';
talig8e9c0652017-12-20 14:30:43 +020028import VersionFactory from 'test-utils/factories/common/VersionFactory.js';
29import CurrentScreenFactory from 'test-utils/factories/common/CurrentScreenFactory.js';
Michael Landoefa037d2017-02-19 12:57:33 +020030
31describe('Software Product Details: ', function () {
32
talig8e9c0652017-12-20 14:30:43 +020033 let currentSoftwareProduct = {}, currentSoftwareProductWithLicensingData = {}, softwareProductCategories = [], licensingVersionsList = [], currentScreen = {},
AviZi280f8012017-06-09 02:39:56 +030034 finalizedLicenseModelList, licenseAgreementList, featureGroupsList, qdata = {}, dataMap = {}, genericFieldInfo = {}, qGenericFieldInfo = {};
Michael Landoefa037d2017-02-19 12:57:33 +020035 let dummyFunc = () => {};
36
AviZi280f8012017-06-09 02:39:56 +030037 beforeAll(function() {
38 finalizedLicenseModelList = FinalizedLicenseModelFactory.buildList(2);
39 currentSoftwareProduct = VSPEditorFactory.build({
40 id: 'RTRTG454545',
talig8e9c0652017-12-20 14:30:43 +020041 licensingVersion: undefined,
AviZi280f8012017-06-09 02:39:56 +030042 vendorId: finalizedLicenseModelList[0].id,
talig8e9c0652017-12-20 14:30:43 +020043 vendorName: finalizedLicenseModelList[0].name
AviZi280f8012017-06-09 02:39:56 +030044 });
45 softwareProductCategories = CategoryWithSubFactory.buildList(2, {}, {quantity: 1});
46 licenseAgreementList = LicenseAgreementStoreFactory.buildList(2);
talig8e9c0652017-12-20 14:30:43 +020047 licensingVersionsList = [
48 {
49 "id":"0127b419e9574a11aab8e031a78fc534",
50 "name":"1.0","description":"Initial version",
51 "baseId":"","status":"Certified","creationTime":1506409288390,"modificationTime":1506409288390,"additionalInfo":{"OptionalCreationMethods":["minor"]}},{"id":"ea159ffedd9a4f9a8a56d53ba66b7314","name":"2.0","description":"ggggg","baseId":"0127b419e9574a11aab8e031a78fc534","status":"Draft","creationTime":1508839019802,"modificationTime":1508839019802,"additionalInfo":{"OptionalCreationMethods":[]}}
52 ];
AviZi280f8012017-06-09 02:39:56 +030053 featureGroupsList = FeatureGroupStoreFactory.buildList(2, {referencingLicenseAgreements: [licenseAgreementList[0].id]});
54 qdata = VspQdataFactory.build();
55 dataMap = VspDataMapFactory.build();
56 currentSoftwareProductWithLicensingData = {
57 ...currentSoftwareProduct,
58 licensingData: {
59 licenseAgreement: licenseAgreementList[0].id,
60 featureGroups: [featureGroupsList[0].id]
talig8e9c0652017-12-20 14:30:43 +020061 },
62 licensingVersion : licensingVersionsList[0].id
Michael Landoefa037d2017-02-19 12:57:33 +020063 };
AviZi280f8012017-06-09 02:39:56 +030064 genericFieldInfo = {
65 'name': {
66 isValid: true,
67 errorText: '',
68 validations: [{type: 'validateName', data: true}, {type: 'maxLength', data: 120}, {
69 type: 'required',
70 data: true
71 }]
72 },
73 'description': {
74 isValid: true,
75 errorText: '',
76 validations: [{type: 'required', data: true}]
77 }
78 };
79 qGenericFieldInfo = SchemaGenericFieldInfoFactory.build();
talig8e9c0652017-12-20 14:30:43 +020080 currentScreen = CurrentScreenFactory.build();
Michael Landoefa037d2017-02-19 12:57:33 +020081 });
82
83 it('should mapper exist', () => {
AviZi280f8012017-06-09 02:39:56 +030084 expect(mapStateToProps).toBeTruthy();
Michael Landoefa037d2017-02-19 12:57:33 +020085 });
86
87 it('should mapper return vsp basic data', () => {
AviZi280f8012017-06-09 02:39:56 +030088
Michael Landoefa037d2017-02-19 12:57:33 +020089 var obj = {
talig8e9c0652017-12-20 14:30:43 +020090 currentScreen,
Michael Landoefa037d2017-02-19 12:57:33 +020091 softwareProduct: {
92 softwareProductEditor: {
AviZi280f8012017-06-09 02:39:56 +030093 data: currentSoftwareProduct,
talig8e9c0652017-12-20 14:30:43 +020094 genericFieldInfo,
95 licensingVersionsList
Michael Landoefa037d2017-02-19 12:57:33 +020096 },
AviZi280f8012017-06-09 02:39:56 +030097 softwareProductCategories,
Michael Landoefa037d2017-02-19 12:57:33 +020098 softwareProductQuestionnaire: {
AviZi280f8012017-06-09 02:39:56 +030099 qdata,
100 genericFieldInfo: qGenericFieldInfo,
101 dataMap
Michael Landoefa037d2017-02-19 12:57:33 +0200102 }
103 },
AviZi280f8012017-06-09 02:39:56 +0300104 finalizedLicenseModelList,
Michael Landoefa037d2017-02-19 12:57:33 +0200105 licenseModel: {
106 licenseAgreement: {
107 licenseAgreementList: []
108 },
109 featureGroup: {
110 featureGroupsList: []
111 }
112 }
113 };
114
115 var result = mapStateToProps(obj);
116 expect(result.currentSoftwareProduct).toEqual(currentSoftwareProduct);
117 expect(result.finalizedLicenseModelList).toEqual(finalizedLicenseModelList);
118 expect(result.finalizedLicenseModelList.length).toBeGreaterThan(0);
AviZi280f8012017-06-09 02:39:56 +0300119 expect(finalizedLicenseModelList[0]).toMatchObject({
Michael Landoefa037d2017-02-19 12:57:33 +0200120 id: result.currentSoftwareProduct.vendorId,
talig8e9c0652017-12-20 14:30:43 +0200121 name: result.currentSoftwareProduct.vendorName
Michael Landoefa037d2017-02-19 12:57:33 +0200122 });
AviZi280f8012017-06-09 02:39:56 +0300123 expect(result.softwareProductCategories).toEqual(softwareProductCategories);
Michael Landoefa037d2017-02-19 12:57:33 +0200124 expect(result.licenseAgreementList).toEqual([]);
125 expect(result.featureGroupsList).toEqual([]);
AviZi280f8012017-06-09 02:39:56 +0300126 expect(result.qdata).toEqual(qdata);
127 expect(result.dataMap).toEqual(dataMap);
128 expect(result.isFormValid).toEqual(true);
Michael Landoefa037d2017-02-19 12:57:33 +0200129 });
130
131 it('should mapper return vsp data with selected licenseAgreement and featureGroup', () => {
AviZi280f8012017-06-09 02:39:56 +0300132
Michael Landoefa037d2017-02-19 12:57:33 +0200133 var obj = {
talig8e9c0652017-12-20 14:30:43 +0200134 currentScreen,
Michael Landoefa037d2017-02-19 12:57:33 +0200135 softwareProduct: {
136 softwareProductEditor: {
AviZi280f8012017-06-09 02:39:56 +0300137 data: currentSoftwareProductWithLicensingData,
talig8e9c0652017-12-20 14:30:43 +0200138 genericFieldInfo,
139 licensingVersionsList
Michael Landoefa037d2017-02-19 12:57:33 +0200140 },
AviZi280f8012017-06-09 02:39:56 +0300141 softwareProductCategories,
Michael Landoefa037d2017-02-19 12:57:33 +0200142 softwareProductQuestionnaire: {
AviZi280f8012017-06-09 02:39:56 +0300143 qdata,
144 genericFieldInfo: qGenericFieldInfo,
145 dataMap
Michael Landoefa037d2017-02-19 12:57:33 +0200146 }
147 },
148 finalizedLicenseModelList: finalizedLicenseModelList,
149 licenseModel: {
150 licenseAgreement: {
151 licenseAgreementList: licenseAgreementList
152 },
153 featureGroup: {
154 featureGroupsList: featureGroupsList
155 }
156 }
157 };
158
159 var result = mapStateToProps(obj);
AviZi280f8012017-06-09 02:39:56 +0300160 expect(result.currentSoftwareProduct).toEqual(currentSoftwareProductWithLicensingData);
Michael Landoefa037d2017-02-19 12:57:33 +0200161 expect(result.finalizedLicenseModelList).toEqual(finalizedLicenseModelList);
162 expect(result.finalizedLicenseModelList.length).toBeGreaterThan(0);
AviZi280f8012017-06-09 02:39:56 +0300163 expect(result.finalizedLicenseModelList[0]).toMatchObject({
Michael Landoefa037d2017-02-19 12:57:33 +0200164 id: result.currentSoftwareProduct.vendorId,
talig8e9c0652017-12-20 14:30:43 +0200165 name: result.currentSoftwareProduct.vendorName
Michael Landoefa037d2017-02-19 12:57:33 +0200166 });
AviZi280f8012017-06-09 02:39:56 +0300167 expect(result.softwareProductCategories).toEqual(softwareProductCategories);
Michael Landoefa037d2017-02-19 12:57:33 +0200168 expect(result.licenseAgreementList).toEqual(licenseAgreementList);
AviZi280f8012017-06-09 02:39:56 +0300169 expect(result.licenseAgreementList[0]).toMatchObject({...licenseAgreementList[0], id: result.currentSoftwareProduct.licensingData.licenseAgreement});
Michael Landoefa037d2017-02-19 12:57:33 +0200170 result.currentSoftwareProduct.licensingData.featureGroups.forEach(fg => {
AviZi280f8012017-06-09 02:39:56 +0300171 expect(featureGroupsList[0]).toMatchObject({...featureGroupsList[0], id: fg});
Michael Landoefa037d2017-02-19 12:57:33 +0200172 });
AviZi280f8012017-06-09 02:39:56 +0300173 expect(result.qdata).toEqual(qdata);
Michael Landoefa037d2017-02-19 12:57:33 +0200174 });
175
176 it('VSP Details view test', () => {
AviZi280f8012017-06-09 02:39:56 +0300177
Michael Landoefa037d2017-02-19 12:57:33 +0200178 let params = {
talig8e9c0652017-12-20 14:30:43 +0200179 ...currentScreen.props,
AviZi280f8012017-06-09 02:39:56 +0300180 currentSoftwareProduct,
181 softwareProductCategories,
182 qdata,
183 dataMap,
184 isFormValid: true,
185 finalizedLicenseModelList,
186 licenseAgreementList,
187 featureGroupsList,
talig8e9c0652017-12-20 14:30:43 +0200188 licensingVersionsList,
AviZi280f8012017-06-09 02:39:56 +0300189 genericFieldInfo,
190 qGenericFieldInfo,
Michael Landoefa037d2017-02-19 12:57:33 +0200191 };
svishnevaa2eece2018-01-18 17:52:06 +0200192 var renderer = TestUtils.createRenderer();
Michael Landoefa037d2017-02-19 12:57:33 +0200193 renderer.render(
194 <SoftwareProductDetailsView
195 {...params}
196 onSubmit = {dummyFunc}
197 onDataChanged = {dummyFunc}
198 onValidityChanged = {dummyFunc}
199 onQDataChanged = {dummyFunc}
200 onVendorParamChanged = {dummyFunc}/>
201 );
202 let renderedOutput = renderer.getRenderOutput();
AviZi280f8012017-06-09 02:39:56 +0300203 expect(renderedOutput).toBeTruthy();
talig8e9c0652017-12-20 14:30:43 +0200204 expect(renderedOutput.props.children.props.isReadOnlyMode).toBe(false);
205
Michael Landoefa037d2017-02-19 12:57:33 +0200206 });
207
208 it('in view: should change vendorId and update vsp licensing-version', done => {
AviZi280f8012017-06-09 02:39:56 +0300209
Michael Landoefa037d2017-02-19 12:57:33 +0200210 let params = {
AviZi280f8012017-06-09 02:39:56 +0300211 currentSoftwareProduct: currentSoftwareProductWithLicensingData,
212 softwareProductCategories,
213 qdata,
214 dataMap,
215 isFormValid: true,
216 genericFieldInfo,
217 qGenericFieldInfo,
218 finalizedLicenseModelList,
219 licenseAgreementList,
talig8e9c0652017-12-20 14:30:43 +0200220 licensingVersionsList,
AviZi280f8012017-06-09 02:39:56 +0300221 featureGroupsList
Michael Landoefa037d2017-02-19 12:57:33 +0200222 };
223 const onVendorChangedListener = (deltaData) => {
AviZi280f8012017-06-09 02:39:56 +0300224 expect(deltaData.vendorId).toEqual(finalizedLicenseModelList[1].id);
talig8e9c0652017-12-20 14:30:43 +0200225 expect(deltaData.vendorName).toEqual(finalizedLicenseModelList[1].name);
Michael Landoefa037d2017-02-19 12:57:33 +0200226 expect(deltaData.licensingVersion).toEqual('');
227 expect(deltaData.licensingData).toEqual({});
228 done();
229 };
230
231 var vspDetailsView = TestUtils.renderIntoDocument(<SoftwareProductDetailsView
232 currentSoftwareProduct = {params.currentSoftwareProduct}
233 softwareProductCategories = {params.softwareProductCategories}
234 qdata = {params.qdata}
AviZi280f8012017-06-09 02:39:56 +0300235 qGenericFieldInfo = {params.qGenericFieldInfo}
236 genericFieldInfo = {params.genericFieldInfo}
talig8e9c0652017-12-20 14:30:43 +0200237 licensingVersionsList={params.licensingVersionsList}
AviZi280f8012017-06-09 02:39:56 +0300238 isFormValid={params.isFormValid}
239 dataMap={params.dataMap}
Michael Landoefa037d2017-02-19 12:57:33 +0200240 finalizedLicenseModelList = {params.finalizedLicenseModelList}
241 licenseAgreementList = {params.licenseAgreementList}
242 featureGroupsList = {params.featureGroupsList}
243 onSubmit = {dummyFunc}
244 onDataChanged = {dummyFunc}
245 onValidityChanged = {dummyFunc}
246 onQDataChanged = {dummyFunc}
247 onVendorParamChanged = {(deltaData) => onVendorChangedListener(deltaData)}/>);
AviZi280f8012017-06-09 02:39:56 +0300248 expect(vspDetailsView).toBeTruthy();
249 vspDetailsView.onVendorParamChanged({vendorId: finalizedLicenseModelList[1].id});
Michael Landoefa037d2017-02-19 12:57:33 +0200250 });
251
252 it('in view: should change licensing-version and update licensing data', done => {
253 let params = {
254 currentSoftwareProduct: currentSoftwareProduct,
AviZi280f8012017-06-09 02:39:56 +0300255 softwareProductCategories,
256 qdata,
257 dataMap,
talig8e9c0652017-12-20 14:30:43 +0200258 licensingVersionsList,
AviZi280f8012017-06-09 02:39:56 +0300259 isFormValid: true,
260 genericFieldInfo,
261 qGenericFieldInfo,
262 finalizedLicenseModelList,
263 licenseAgreementList,
264 featureGroupsList
Michael Landoefa037d2017-02-19 12:57:33 +0200265 };
266 const onVendorChangedListener = (deltaData) => {
AviZi280f8012017-06-09 02:39:56 +0300267 expect(deltaData.vendorId).toEqual(finalizedLicenseModelList[1].id);
talig8e9c0652017-12-20 14:30:43 +0200268 expect(deltaData.vendorName).toEqual(finalizedLicenseModelList[1].name);
269 expect(deltaData.licensingVersion).toEqual(licensingVersionsList[1]);
Michael Landoefa037d2017-02-19 12:57:33 +0200270 expect(deltaData.licensingData).toEqual({});
271 done();
272 };
273
274 let vspDetailsView = TestUtils.renderIntoDocument(<SoftwareProductDetailsView
275 {...params}
276 onSubmit = {dummyFunc}
277 onDataChanged = {dummyFunc}
278 onValidityChanged = {dummyFunc}
279 onQDataChanged = {dummyFunc}
280 onVendorParamChanged = {(deltaData) => onVendorChangedListener(deltaData)}/>);
AviZi280f8012017-06-09 02:39:56 +0300281 expect(vspDetailsView).toBeTruthy();
talig8e9c0652017-12-20 14:30:43 +0200282 vspDetailsView.onVendorParamChanged({vendorId: finalizedLicenseModelList[1].id, licensingVersion: licensingVersionsList[1]});
Michael Landoefa037d2017-02-19 12:57:33 +0200283 });
284
285 it('in view: should change subcategory', done => {
286 let params = {
287 currentSoftwareProduct: currentSoftwareProduct,
AviZi280f8012017-06-09 02:39:56 +0300288 softwareProductCategories,
289 qdata,
290 dataMap,
291 isFormValid: true,
292 genericFieldInfo,
293 qGenericFieldInfo,
talig8e9c0652017-12-20 14:30:43 +0200294 licensingVersionsList,
AviZi280f8012017-06-09 02:39:56 +0300295 finalizedLicenseModelList,
296 licenseAgreementList,
297 featureGroupsList
Michael Landoefa037d2017-02-19 12:57:33 +0200298 };
299 const onDataChangedListener = ({category, subCategory}) => {
AviZi280f8012017-06-09 02:39:56 +0300300 expect(category).toEqual(softwareProductCategories[1].uniqueId);
301 expect(subCategory).toEqual(softwareProductCategories[1].subcategories[0].uniqueId);
Michael Landoefa037d2017-02-19 12:57:33 +0200302 done();
303 };
304
305 let vspDetailsView = TestUtils.renderIntoDocument(<SoftwareProductDetailsView
306 {...params}
307 onSubmit = {dummyFunc}
308 onDataChanged = {({category, subCategory}) => onDataChangedListener({category, subCategory})}
309 onValidityChanged = {dummyFunc}
310 onQDataChanged = {dummyFunc}
311 onVendorParamChanged = {dummyFunc}/>);
AviZi280f8012017-06-09 02:39:56 +0300312 expect(vspDetailsView).toBeTruthy();
313 vspDetailsView.onSelectSubCategory(softwareProductCategories[1].subcategories[0].uniqueId);
Michael Landoefa037d2017-02-19 12:57:33 +0200314 });
315
316 it('in view: should change feature groups', done => {
AviZi280f8012017-06-09 02:39:56 +0300317
Michael Landoefa037d2017-02-19 12:57:33 +0200318 let params = {
AviZi280f8012017-06-09 02:39:56 +0300319 currentSoftwareProduct: currentSoftwareProductWithLicensingData,
320 softwareProductCategories,
321 qdata,
322 dataMap,
323 isFormValid: true,
324 genericFieldInfo,
325 qGenericFieldInfo,
talig8e9c0652017-12-20 14:30:43 +0200326 licensingVersionsList,
AviZi280f8012017-06-09 02:39:56 +0300327 finalizedLicenseModelList,
328 licenseAgreementList,
329 featureGroupsList
Michael Landoefa037d2017-02-19 12:57:33 +0200330 };
331 const onDataChangedListener = ({licensingData}) => {
AviZi280f8012017-06-09 02:39:56 +0300332 expect(licensingData.licenseAgreement).toEqual(licenseAgreementList[0].id);
Michael Landoefa037d2017-02-19 12:57:33 +0200333 expect(licensingData.featureGroups).toEqual([
AviZi280f8012017-06-09 02:39:56 +0300334 {enum: featureGroupsList[0].id, title: featureGroupsList[0].name},
335 {enum: featureGroupsList[1].id, title: featureGroupsList[1].name}
Michael Landoefa037d2017-02-19 12:57:33 +0200336 ]);
337 done();
338 };
339
340 let vspDetailsView = TestUtils.renderIntoDocument(<SoftwareProductDetailsView
341 {...params}
342 onSubmit = {dummyFunc}
343 onDataChanged = {({licensingData}) => onDataChangedListener({licensingData})}
344 onValidityChanged = {dummyFunc}
345 onQDataChanged = {dummyFunc}
346 onVendorParamChanged = {dummyFunc}/>);
AviZi280f8012017-06-09 02:39:56 +0300347 expect(vspDetailsView).toBeTruthy();
Michael Landoefa037d2017-02-19 12:57:33 +0200348 vspDetailsView.onFeatureGroupsChanged({featureGroups: [
AviZi280f8012017-06-09 02:39:56 +0300349 {enum: featureGroupsList[0].id, title: featureGroupsList[0].name},
350 {enum: featureGroupsList[1].id, title: featureGroupsList[1].name}
Michael Landoefa037d2017-02-19 12:57:33 +0200351 ]});
352 });
353
AviZi280f8012017-06-09 02:39:56 +0300354
talig8e9c0652017-12-20 14:30:43 +0200355 it('in view: should change license agreement', done => {
Michael Landoefa037d2017-02-19 12:57:33 +0200356 let params = {
AviZi280f8012017-06-09 02:39:56 +0300357 currentSoftwareProduct: currentSoftwareProductWithLicensingData,
358 softwareProductCategories,
359 qdata,
360 dataMap,
361 isFormValid: true,
362 genericFieldInfo,
363 qGenericFieldInfo,
talig8e9c0652017-12-20 14:30:43 +0200364 licensingVersionsList,
AviZi280f8012017-06-09 02:39:56 +0300365 finalizedLicenseModelList,
366 licenseAgreementList,
367 featureGroupsList
Michael Landoefa037d2017-02-19 12:57:33 +0200368 };
369 const onDataChangedListener = ({licensingData}) => {
AviZi280f8012017-06-09 02:39:56 +0300370 expect(licensingData.licenseAgreement).toEqual(licenseAgreementList[1].id);
Michael Landoefa037d2017-02-19 12:57:33 +0200371 expect(licensingData.featureGroups).toEqual([]);
372 done();
373 };
374
375 let vspDetailsView = TestUtils.renderIntoDocument(<SoftwareProductDetailsView
376 {...params}
377 onSubmit = {dummyFunc}
378 onDataChanged = {({licensingData}) => onDataChangedListener({licensingData})}
379 onValidityChanged = {dummyFunc}
380 onQDataChanged = {dummyFunc}
381 onVendorParamChanged = {dummyFunc}/>);
AviZi280f8012017-06-09 02:39:56 +0300382 expect(vspDetailsView).toBeTruthy();
383 vspDetailsView.onLicensingDataChanged({licenseAgreement: licenseAgreementList[1].id, featureGroups: []});
Michael Landoefa037d2017-02-19 12:57:33 +0200384 });
talig8e9c0652017-12-20 14:30:43 +0200385
Michael Landoefa037d2017-02-19 12:57:33 +0200386});