2 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
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.
17 import deepFreeze from 'deep-freeze';
18 import mockRest from 'test-utils/MockRest.js';
19 import {cloneAndSet} from 'test-utils/Util.js';
20 import {storeCreator} from 'sdc-app/AppStore.js';
21 import Configuration from 'sdc-app/config/Configuration.js';
22 import SoftwareProductComponentsActionHelper from 'sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsActionHelper.js';
24 import {default as VSPComponentsStorageFactory, VSPComponentsStorageDataMapFactory} from 'test-utils/factories/softwareProduct/SoftwareProductComponentsStorageFactory.js';
25 import VersionFactory from 'test-utils/factories/common/VersionFactory.js';
27 const softwareProductId = '123';
28 const vspComponentId = '111';
29 const version = VersionFactory.build();
31 describe('Software Product Components Storage Module Tests', function () {
35 beforeAll(function() {
36 restPrefix = Configuration.get('restPrefix');
37 deepFreeze(restPrefix);
40 it('Get Software Products Components Storage', () => {
41 const store = storeCreator();
42 deepFreeze(store.getState());
44 const storage = VSPComponentsStorageFactory.build();
45 const dataMap = VSPComponentsStorageDataMapFactory.build();
47 const softwareProductComponentStorage = {
48 data: JSON.stringify(storage),
49 schema: JSON.stringify(storage)
51 deepFreeze(softwareProductComponentStorage);
53 const softwareProductComponentStorageData = {
58 deepFreeze(softwareProductComponentStorageData);
60 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentEditor', softwareProductComponentStorageData);
62 mockRest.addHandler('fetch', ({options, data, baseUrl}) => {
63 expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${vspComponentId}/questionnaire`);
64 expect(data).toEqual(undefined);
65 expect(options).toEqual(undefined);
66 return softwareProductComponentStorage;
69 return SoftwareProductComponentsActionHelper.fetchSoftwareProductComponentQuestionnaire(store.dispatch, {softwareProductId, version, vspComponentId}).then(() => {
70 expect(store.getState()).toEqual(expectedStore);
74 it('Get Empty Software Products Components Storage', () => {
75 const store = storeCreator();
76 deepFreeze(store.getState());
78 const storage = VSPComponentsStorageFactory.build();
80 const softwareProductComponentQuestionnaire = {
82 schema: JSON.stringify(storage)
84 deepFreeze(softwareProductComponentQuestionnaire);
86 const softwareProductComponentQuestionnaireData = {
91 deepFreeze(softwareProductComponentQuestionnaireData);
93 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentEditor', softwareProductComponentQuestionnaireData);
95 mockRest.addHandler('fetch', ({options, data, baseUrl}) => {
96 expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${vspComponentId}/questionnaire`);
97 expect(data).toEqual(undefined);
98 expect(options).toEqual(undefined);
99 return softwareProductComponentQuestionnaire;
102 return SoftwareProductComponentsActionHelper.fetchSoftwareProductComponentQuestionnaire(store.dispatch, {softwareProductId, version, vspComponentId}).then(() => {
103 expect(store.getState()).toEqual(expectedStore);