blob: 3be1d68bbcc532d96de69b166574022c8754b80c [file] [log] [blame]
/*
* Copyright © 2019 Vodafone Group
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import deepFreeze from 'deep-freeze';
import mockRest from 'test-utils/MockRest.js';
import { cloneAndSet } from 'test-utils/Util.js';
import { storeCreator } from 'sdc-app/AppStore.js';
import SoftwareProductValidationActionHelper from 'sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationActionHelper.js';
import { tabsMapping } from 'sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationConstants.js';
import Configuration from 'sdc-app/config/Configuration.js';
import { VSPComplianceCheckedFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
import { VSPCertificationCheckedFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
import { VSPTestResultKeysFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationResultsFactory.js';
import { VSPChecksFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
import { VSPTestsMapFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
import { VSPTestsRequestFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
import { VSPGeneralInfoFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
import { VSPTestResultsSuccessFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationResultsFactory.js';
import { mapActionsToProps } from 'sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidation.js';
import { VSPTestRequestFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
describe('Software Product Validation Action Helper Tests', function() {
const store = storeCreator();
deepFreeze(store.getState());
const vspChecksList = VSPChecksFactory.build();
const vspTestsMap = VSPTestsMapFactory.build();
const certificationChecked = VSPCertificationCheckedFactory.build();
const complianceChecked = VSPComplianceCheckedFactory.build();
const activeTab = { activeTab: tabsMapping.INPUTS };
const errorMessage = { msg: 'Test Error Message' };
const testsRequest = VSPTestsRequestFactory.build();
const generalInfo = VSPGeneralInfoFactory.build();
const isValidationDisabled = false;
const vspTestResults = VSPTestResultsSuccessFactory.build();
const testResultKeys = VSPTestResultKeysFactory.build();
let restPrefix = Configuration.get('restPrefix');
let onClose = () => {};
const vspTestRequest = VSPTestRequestFactory.build();
const modal = {
type: 'error',
title: 'Error',
modalComponentName: 'Error',
modalComponentProps: {
onClose: onClose
},
msg: {
msg: 'Test Error Message'
},
cancelButtonText: 'OK'
};
// deepFreeze(vspTestsMap.vspTestsMap);
// deepFreeze(certificationChecked.certificationChecked);
// deepFreeze(complianceChecked.complianceChecked);
// deepFreeze(activeTab);
// deepFreeze(testsRequest);
// deepFreeze(generalInfo.generalInfo);
// deepFreeze(isVspValidationDisabled);
it('Software Products Validation Action Helper : fetch vsp', () => {
let expectedStore = cloneAndSet(
store.getState(),
'softwareProduct.softwareProductValidation.vspChecks',
vspChecksList
);
mockRest.addHandler('fetch', ({ baseUrl }) => {
expect(baseUrl).toEqual(
`${restPrefix}/v1.0/externaltesting/testcasetree`
);
return vspChecksList;
});
return SoftwareProductValidationActionHelper.fetchVspChecks(
store.dispatch
)
.then(() => {
expect(store.getState()).toEqual(expectedStore);
})
.catch(() => {
console.log('Fetch VSP returned Error');
});
});
it('Software Products Validation Action Helper : post test', () => {
const str = storeCreator({
softwareProduct: {
softwareProductValidation: {
testResultKeys: testResultKeys.testResultKeys
}
}
});
deepFreeze(str.getState());
let expectedStore = cloneAndSet(
str.getState(),
'softwareProduct.softwareProductValidation.vspTestResults',
vspTestResults.vspTestResults
);
const version = {
id: 12345,
name: 1
};
const requestId = "1"
const softwareProductId = '1234';
const status = 'success';
mockRest.addHandler('post', ({ options, data, baseUrl }) => {
expect(baseUrl).toEqual(
`${restPrefix}/v1.0/externaltesting/executions?vspId=${softwareProductId}&vspVersionId=${version.id}&requestId=${requestId}`
);
return vspTestResults.vspTestResults ;
});
SoftwareProductValidationActionHelper.navigateToSoftwareProductValidationResults(
str.dispatch,{
softwareProductId: softwareProductId,
version: version,
status: status,
tests :vspTestRequest.vspTestRequest,
requestId: requestId
}
).then(() => {
expect(str.getState()).toEqual(expectedStore);
})
.catch((e) => {
console.log('Executions test returned Error');
});
});
it('Software Products Validation Action Helper : setCertificationChecked', () => {
let expectedStore = cloneAndSet(
store.getState(),
'softwareProduct.softwareProductValidation.certificationChecked',
certificationChecked.certificationChecked
);
mapActionsToProps(store.dispatch).setCertificationChecked({
checked: certificationChecked.certificationChecked
});
expect(store.getState()).toEqual(expectedStore);
});
it('Software Products Validation Action Helper : onErrorThrown', () => {
let expectedStore = cloneAndSet(store.getState(), 'modal', modal);
mapActionsToProps(store.dispatch).onErrorThrown(errorMessage);
expect(JSON.stringify(store.getState())).toEqual(
JSON.stringify(expectedStore)
);
});
it('Software Products Validation Action Helper : setComplianceChecked', () => {
let expectedStore = cloneAndSet(
store.getState(),
'softwareProduct.softwareProductValidation.complianceChecked',
complianceChecked.complianceChecked
);
mapActionsToProps(store.dispatch).setComplianceChecked({
checked: complianceChecked.complianceChecked
});
expect(store.getState()).toEqual(expectedStore);
});
it('Software Products Validation Action Helper : setActiveTab', () => {
let expectedStore = cloneAndSet(
store.getState(),
'softwareProduct.softwareProductValidation.activeTab',
activeTab.activeTab
);
mapActionsToProps(store.dispatch).setActiveTab(activeTab);
expect(store.getState()).toEqual(expectedStore);
});
it('Software Products Validation Action Helper : setGeneralInfo', () => {
let expectedStore = cloneAndSet(
store.getState(),
'softwareProduct.softwareProductValidation.generalInfo',
generalInfo.generalInfo
);
mapActionsToProps(store.dispatch).setGeneralInfo(
generalInfo.generalInfo
);
expect(store.getState()).toEqual(expectedStore);
});
it('Software Products Validation Action Helper : setIsVspValidationDisabled', () => {
let expectedStore = cloneAndSet(
store.getState(),
'softwareProduct.softwareProductValidation.isValidationDisabled',
isValidationDisabled
);
SoftwareProductValidationActionHelper.setIsVspValidationDisabled(
store.dispatch,
{
isValidationDisabled
}
);
expect(store.getState()).toEqual(expectedStore);
});
it('Software Products Validation Action Helper : setTestsRequest', () => {
let expectedStore = cloneAndSet(
store.getState(),
'softwareProduct.softwareProductValidation.testsRequest',
testsRequest.testsRequest
);
expectedStore = cloneAndSet(
expectedStore,
'softwareProduct.softwareProductValidation.generalInfo',
generalInfo.generalInfo
);
mapActionsToProps(store.dispatch).setTestsRequest(
testsRequest.testsRequest,
generalInfo.generalInfo
);
expect(store.getState()).toEqual(expectedStore);
});
it('Software Products Validation Action Helper : setVspTestsMap', () => {
let expectedStore = cloneAndSet(
store.getState(),
'softwareProduct.softwareProductValidation.vspTestsMap',
vspTestsMap.vspTestsMap
);
SoftwareProductValidationActionHelper.setVspTestsMap(
store.dispatch,
vspTestsMap.vspTestsMap
);
expect(store.getState()).toEqual(expectedStore);
});
});