aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openecomp-ui/resources/scss/modules/_softwareProductAttachmentPage.scss33
-rw-r--r--openecomp-ui/src/nfvo-components/panel/NavigationSideBar.jsx9
-rw-r--r--openecomp-ui/src/nfvo-components/panel/versionController/VersionController.jsx11
-rw-r--r--openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProduct.js15
-rw-r--r--openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js26
-rw-r--r--openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js3
-rw-r--r--openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachments.js16
-rw-r--r--openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx79
-rw-r--r--openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsReducer.js7
-rw-r--r--openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js13
-rw-r--r--openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageView.jsx23
-rw-r--r--openecomp-ui/test/softwareProduct/attachments/validationFlow.test.js40
12 files changed, 200 insertions, 75 deletions
diff --git a/openecomp-ui/resources/scss/modules/_softwareProductAttachmentPage.scss b/openecomp-ui/resources/scss/modules/_softwareProductAttachmentPage.scss
index 0ae3f00a29..ad98ec0595 100644
--- a/openecomp-ui/resources/scss/modules/_softwareProductAttachmentPage.scss
+++ b/openecomp-ui/resources/scss/modules/_softwareProductAttachmentPage.scss
@@ -24,13 +24,12 @@
.attachments-view-controllers {
position: absolute;
right: 40px;
- top: 15px;
+ top: 10px;
display: flex;
-
+
.icon-component {
- margin-right: 30px;
-
+ margin-right: 30px;
}
input[type="file"] {
@@ -39,6 +38,32 @@
padding: 0;
margin-left: -1px;
}
+
+ .proceed-to-validation-btn {
+ width: 191px;
+ margin-right: 30px;
+ height: 36px;
+ }
+ .go-to-overview-btn {
+ width: 191px;
+ margin-right: 36px;
+ height: 36px;
+ }
+ .separator {
+ height: 27px;
+ border: 1px solid $light-gray;
+ margin-right: 31px;
+ margin-left: 0px;
+ margin-top: 3px;
+ }
+ .abort-btn {
+ fill: $blue;
+ color: $blue;
+ &:hover {
+ color: $light-blue;
+ fill: $light-blue;
+ }
+ }
}
}
diff --git a/openecomp-ui/src/nfvo-components/panel/NavigationSideBar.jsx b/openecomp-ui/src/nfvo-components/panel/NavigationSideBar.jsx
index 02552fcb7e..2eda7e69bf 100644
--- a/openecomp-ui/src/nfvo-components/panel/NavigationSideBar.jsx
+++ b/openecomp-ui/src/nfvo-components/panel/NavigationSideBar.jsx
@@ -1,5 +1,5 @@
/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,7 +23,8 @@ class NavigationSideBar extends React.Component {
activeItemId: PropTypes.string.isRequired,
onSelect: PropTypes.func,
onToggle: PropTypes.func,
- groups: PropTypes.array
+ groups: PropTypes.array,
+ disabled: PropTypes.bool
};
constructor(props) {
@@ -35,10 +36,10 @@ class NavigationSideBar extends React.Component {
}
render() {
- let {groups, activeItemId} = this.props;
+ let {groups, activeItemId, disabled = false} = this.props;
return (
- <div className='navigation-side-content'>
+ <div className={`navigation-side-content ${disabled ? 'disabled' : ''}`}>
{groups.map(group => (
<NavigationMenu menu={group} activeItemId={activeItemId} onNavigationItemClick={this.handleItemClicked} key={'menu_' + group.id} />
))}
diff --git a/openecomp-ui/src/nfvo-components/panel/versionController/VersionController.jsx b/openecomp-ui/src/nfvo-components/panel/versionController/VersionController.jsx
index 5273785f07..fdc86d417d 100644
--- a/openecomp-ui/src/nfvo-components/panel/versionController/VersionController.jsx
+++ b/openecomp-ui/src/nfvo-components/panel/versionController/VersionController.jsx
@@ -1,5 +1,5 @@
/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -43,10 +43,11 @@ class VersionController extends React.Component {
render() {
let {version = {}, viewableVersions = [], onVersionSwitching, onMoreVersionsClick, callVCAction, onSave, isReadOnlyMode, itemPermission,
- isFormDataValid, onClose, onManagePermissions, permissions = {}, userInfo, usersList, itemName, onOpenCommentCommitModal, onOpenRevisionsModal, isManual} = this.props;
+ isFormDataValid, onClose, onManagePermissions, permissions = {}, userInfo, usersList, itemName,
+ onOpenCommentCommitModal, onOpenRevisionsModal, isManual, candidateInProcess} = this.props;
return (
<div className='version-controller-bar'>
- <div className='vc-container'>
+ <div className={`vc-container ${candidateInProcess ? 'disabled' : ''}`}>
<div className='version-status-container'>
<VersionSelector
viewableVersions={viewableVersions}
@@ -58,7 +59,7 @@ class VersionController extends React.Component {
<ActionButtons onSubmit={callVCAction ? () => this.submit(callVCAction, version) : undefined}
onRevert={callVCAction ? () => this.revert(callVCAction, version) : undefined}
onOpenRevisionsModal={onOpenRevisionsModal}
- onSave={onSave ? () => onSave() : undefined}
+ onSave={onSave ? () => onSave() : undefined}
permissions={permissions}
userInfo={userInfo}
onManagePermissions={onManagePermissions}
@@ -70,7 +71,7 @@ class VersionController extends React.Component {
onCommit={callVCAction ? (comment) => this.commit(callVCAction, version, comment) : undefined}
isFormDataValid={isFormDataValid}
itemPermissions={itemPermission}
- isReadOnlyMode={isReadOnlyMode}
+ isReadOnlyMode={isReadOnlyMode || candidateInProcess}
isManual={isManual} />
<div className='vc-separator'></div>
<NotificationsView />
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProduct.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProduct.js
index cdaf189fc0..683dd4f682 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProduct.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProduct.js
@@ -1,5 +1,5 @@
/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -90,7 +90,7 @@ const buildComponentNavigationBarGroups = ({componentId, meta}) => {
const buildNavigationBarProps = ({softwareProduct, meta, screen, componentId, componentsList, mapOfExpandedIds}) => {
const {softwareProductEditor: {data: currentSoftwareProduct = {}}} = softwareProduct;
- const {id, name, onboardingMethod, candidateOnboardingOrigin} = currentSoftwareProduct;
+ const {id, name, onboardingMethod, candidateOnboardingOrigin, onboardingOrigin} = currentSoftwareProduct;
const groups = [{
id: id,
name: name,
@@ -126,7 +126,7 @@ const buildNavigationBarProps = ({softwareProduct, meta, screen, componentId, co
id: enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS,
name: i18n('Attachments'),
disabled: false,
- hidden: candidateOnboardingOrigin === onboardingOriginTypes.NONE,
+ hidden: !candidateOnboardingOrigin && !onboardingOrigin,
meta
}, {
id: enums.SCREEN.SOFTWARE_PRODUCT_ACTIVITY_LOG,
@@ -159,14 +159,14 @@ const buildNavigationBarProps = ({softwareProduct, meta, screen, componentId, co
}];
let activeItemId = getActiveNavigationId(screen, componentId);
return {
- activeItemId, groups
+ activeItemId, groups, disabled: !!candidateOnboardingOrigin
};
};
const buildVersionControllerProps = ({softwareProduct, versions, currentVersion, permissions, userInfo, usersList, itemPermission, isReadOnlyMode}) => {
const {softwareProductEditor = {data: {}}} = softwareProduct;
- const {isValidityData = true, data: {name, onboardingMethod}} = softwareProductEditor;
-
+ const {isValidityData = true, data: {name, onboardingMethod, candidateOnboardingOrigin}} = softwareProductEditor;
+
return {
version: currentVersion,
viewableVersions: versions,
@@ -177,7 +177,8 @@ const buildVersionControllerProps = ({softwareProduct, versions, currentVersion,
isReadOnlyMode,
userInfo,
usersList,
- isManual: onboardingMethod === onboardingMethodType.MANUAL
+ isManual: onboardingMethod === onboardingMethodType.MANUAL,
+ candidateInProcess: !!candidateOnboardingOrigin
};
};
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js
index ebd660f71c..9ed6005397 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js
@@ -1,17 +1,17 @@
-/*
- * Copyright © 2016-2017 European Support Limited
+/*!
+ * Copyright © 2016-2018 European Support Limited
*
* 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
+ * 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.
+ * 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 RestAPIUtil from 'nfvo-utils/RestAPIUtil.js';
import showFileSaveDialog from 'nfvo-utils/ShowFileSaveDialog.js';
@@ -116,6 +116,10 @@ function fetchOrchestrationTemplateCandidate(softwareProductId, version, ) {
return RestAPIUtil.fetch(`${baseUrl()}${softwareProductId}/versions/${version.id}/orchestration-template-candidate`, {dataType: 'binary'});
}
+function abortValidationProcess(softwareProductId, version) {
+ return RestAPIUtil.destroy(`${baseUrl()}${softwareProductId}/versions/${version.id}/orchestration-template-candidate`);
+}
+
function objToString(obj) {
let str = '';
if (obj instanceof Array) {
@@ -242,6 +246,8 @@ const SoftwareProductActionHelper = {
if (response.status === 'Success') {
SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(dispatch, {softwareProductId, version});
SoftwareProductActionHelper.fetchSoftwareProduct(dispatch, {softwareProductId, version});
+ } else {
+ SoftwareProductActionHelper.fetchSoftwareProduct(dispatch, {softwareProductId, version});
}
});
},
@@ -267,6 +273,10 @@ const SoftwareProductActionHelper = {
screen: enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS_SETUP, screenType: screenTypes.SOFTWARE_PRODUCT,
props: {softwareProductId, version}
});
+ dispatch({
+ type: actionTypes.CANDIDATE_IN_PROCESS,
+ inProcess: true
+ });
break;
case onboardingOriginTypes.CSAR:
ScreensHelper.loadScreen(dispatch, {
@@ -540,6 +550,10 @@ const SoftwareProductActionHelper = {
screen: enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE, screenType: screenTypes.SOFTWARE_PRODUCT,
props: {softwareProductId, version: {id: newVer, label: newVer}}
}));
+ },
+
+ abortCandidateValidation(dispatch, {softwareProductId, version}) {
+ return abortValidationProcess(softwareProductId, version);
}
};
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js
index 7df46589c3..c82483740f 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js
@@ -1,5 +1,5 @@
/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,6 +24,7 @@ export const actionTypes = keyMirror({
SOFTWARE_PRODUCT_QUESTIONNAIRE_UPDATE: null,
LOAD_LICENSING_VERSIONS_LIST: null,
TOGGLE_NAVIGATION_ITEM: null,
+ CANDIDATE_IN_PROCESS: null,
softwareProductEditor: {
OPEN: null,
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachments.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachments.js
index 234953ec3b..d942172973 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachments.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachments.js
@@ -1,5 +1,5 @@
/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -55,7 +55,8 @@ export const mapStateToProps = (state) => {
HeatSetupComponent: HeatSetup,
version,
onboardingOrigin,
- activeTab
+ activeTab,
+ candidateInProcess: !!currentSoftwareProduct.candidateOnboardingOrigin
};
};
@@ -67,6 +68,8 @@ export const mapActionsToProps = (dispatch, {softwareProductId, version}) => {
data:{
msg: i18n('Upload will erase existing data. Do you want to continue?'),
confirmationButtonText: i18n('Continue'),
+ title: i18n('WARNING'),
+
onConfirmed: ()=>SoftwareProductActionHelper.uploadFile(dispatch, {
softwareProductId,
formData,
@@ -75,6 +78,15 @@ export const mapActionsToProps = (dispatch, {softwareProductId, version}) => {
})
}
}),
+ onUploadAbort: () => {
+ SoftwareProductActionHelper.abortCandidateValidation(dispatch, {softwareProductId, version})
+ .then(()=>{
+ ScreensHelper.loadScreen(dispatch, {
+ screen: enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE, screenType: screenTypes.SOFTWARE_PRODUCT,
+ props: {softwareProductId, version}
+ });
+ });
+ },
onInvalidFileUpload: () => dispatch({
type: modalActionTypes.GLOBAL_MODAL_ERROR,
data: {
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx
index a23015732b..90dd7692bf 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx
@@ -1,5 +1,5 @@
/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,6 +21,7 @@ import {tabsMapping} from './SoftwareProductAttachmentsConstants.js';
import i18n from 'nfvo-utils/i18n/i18n.js';
import HeatValidation from './validation/HeatValidation.js';
import {onboardingOriginTypes} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js';
+import Button from 'sdc-ui/lib/react/Button.js';
class HeatScreenView extends Component {
@@ -30,40 +31,56 @@ class HeatScreenView extends Component {
setActiveTab: PropTypes.func
};
+ componentDidMount() {
+ if (!this.props.goToOverview && this.props.candidateInProcess) {
+ this.props.setActiveTab({activeTab: tabsMapping.VALIDATION});
+ }
+ }
+
render() {
- let {isValidationAvailable, isReadOnlyMode, heatDataExist, onDownload, softwareProductId, onProcessAndValidate,
- heatSetup, HeatSetupComponent, onGoToOverview, version, onboardingOrigin, activeTab, setActiveTab, ...other} = this.props;
+ let {isValidationAvailable, isReadOnlyMode, heatDataExist, onDownload, softwareProductId, onProcessAndValidate, onUploadAbort,
+ candidateInProcess, heatSetup, HeatSetupComponent, onGoToOverview, version, onboardingOrigin, activeTab, setActiveTab, ...other} = this.props;
return (
<div className='vsp-attachments-view'>
<div className='attachments-view-controllers'>
- {(activeTab === tabsMapping.SETUP) &&
- <SVGIcon
- disabled={heatDataExist ? false : true}
- name='download'
- className='icon-component'
- label={i18n('Export Validation')}
- labelPosition='right'
- color='secondary'
- onClick={heatDataExist ? () => onDownload({heatCandidate: heatSetup, isReadOnlyMode, version}) : undefined}
- data-test-id='download-heat'/>}
+ {(activeTab === tabsMapping.SETUP) &&
+ <Button btnType='outline'
+ data-test-id='proceed-to-validation-btn'
+ disabled={!isValidationAvailable}
+ className='proceed-to-validation-btn'
+ onClick={()=>this.handleTabPress(tabsMapping.VALIDATION)}>{i18n('PROCEED TO VALIDATION')}</Button>
+ }
+ {candidateInProcess && <SVGIcon
+ onClick={onUploadAbort}
+ name='close'
+ className='icon-component abort-btn'
+ label={i18n('ABORT')}
+ labelPosition='right'
+ color='secondary'
+ data-test-id='abort-btn'/>
+ }
+
{(activeTab === tabsMapping.VALIDATION && softwareProductId) &&
- <SVGIcon
+ <Button btnType='outline'
+ data-test-id='go-to-overview'
disabled={this.props.goToOverview !== true}
- onClick={this.props.goToOverview ? () => onGoToOverview({version}) : undefined}
- name='proceedToOverview'
- className='icon-component'
- label={i18n('Go to Overview')}
- labelPosition='right'
- color={this.props.goToOverview ? 'primary' : 'secondary'}
- data-test-id='go-to-overview'/>}
+ className='go-to-overview-btn'
+ onClick={this.props.goToOverview ? () => onGoToOverview({version}) : undefined}>{i18n('GO TO OVERVIEW')}</Button>}
+ <div className='separator'></div>
+ <SVGIcon
+ disabled={heatDataExist ? false : true}
+ name='download'
+ className='icon-component'
+ color='dark-gray'
+ onClick={heatDataExist ? () => onDownload({heatCandidate: heatSetup, isReadOnlyMode, version}) : undefined}
+ data-test-id='download-heat'/>
+
<SVGIcon
name='upload'
- className='icon-component'
- label={i18n('Upload New File')}
- labelPosition='right'
- color='secondary'
- disabled={isReadOnlyMode}
+ className='icon-component'
+ color='dark-gray'
+ disabled={isReadOnlyMode || candidateInProcess}
onClick={isReadOnlyMode ? undefined : evt => this.refs.hiddenImportFileInput.click(evt)}
data-test-id='upload-heat'/>
<input
@@ -73,11 +90,11 @@ class HeatScreenView extends Component {
accept='.zip, .csar'
onChange={evt => this.handleImport(evt)}/>
</div>
- <Tabs
- className='attachments-tabs'
- type='header'
- activeTab={activeTab}
- onTabClick={key => this.handleTabPress(key)}>
+ <Tabs
+ className='attachments-tabs'
+ type='header'
+ activeTab={activeTab}
+ onTabClick={key => this.handleTabPress(key)}>
<Tab tabId={tabsMapping.SETUP} title='Setup' disabled={onboardingOrigin === onboardingOriginTypes.CSAR}>
<HeatSetupComponent
heatDataExist={heatDataExist}
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsReducer.js
index 54dc1a4d37..1a293264c3 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsReducer.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsReducer.js
@@ -1,5 +1,5 @@
/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -50,6 +50,11 @@ export default (state = {}, action) => {
...state,
licensingVersionsList: action.licensingVersionsList
};
+ case actionTypes.CANDIDATE_IN_PROCESS:
+ return {
+ ...state,
+ data: {...state.data, candidateOnboardingOrigin: true}
+ };
default:
return state;
}
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js
index 90ea182dfa..64e0d562ce 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js
@@ -1,5 +1,5 @@
/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2016-2018 European Support Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -27,7 +27,7 @@ export const mapStateToProps = ({
softwareProduct,
licenseModel: {licenseAgreement},
}) => {
- let {softwareProductEditor: {data:currentSoftwareProduct = {}}, softwareProductComponents, softwareProductCategories = []} = softwareProduct;
+ let {softwareProductEditor: {data:currentSoftwareProduct = {}}, softwareProductComponents, softwareProductCategories = [], } = softwareProduct;
let {licensingData = {}} = currentSoftwareProduct;
let {licenseAgreementList} = licenseAgreement;
let {componentsList} = softwareProductComponents;
@@ -53,8 +53,8 @@ export const mapStateToProps = ({
currentSoftwareProduct: {
...currentSoftwareProduct,
licenseAgreementName,
- fullCategoryDisplayName
- },
+ fullCategoryDisplayName
+ },
componentsList,
isManual: currentSoftwareProduct.onboardingMethod === onboardingMethod.MANUAL
};
@@ -67,7 +67,10 @@ const mapActionsToProps = (dispatch, {version}) => {
screen: enums.SCREEN.SOFTWARE_PRODUCT_DETAILS, screenType: screenTypes.SOFTWARE_PRODUCT,
props: {softwareProductId, version}
}),
-
+ onCandidateInProcess: (softwareProductId) => ScreensHelper.loadScreen(dispatch, {
+ screen: enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS_SETUP, screenType: screenTypes.SOFTWARE_PRODUCT,
+ props: {softwareProductId, version}
+ }),
onUpload: (softwareProductId, formData) =>
SoftwareProductActionHelper.uploadFile(dispatch, {
softwareProductId,
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageView.jsx
index 76228b0731..70c04f01a3 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageView.jsx
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageView.jsx
@@ -1,17 +1,17 @@
-/*
- * Copyright © 2016-2017 European Support Limited
+/*!
+ * Copyright © 2016-2018 European Support Limited
*
* 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
- *
+ *
+ * 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.
+ * 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 React from 'react';
import PropTypes from 'prop-types';
@@ -65,7 +65,12 @@ class SoftwareProductLandingPageView extends React.Component {
onComponentSelect: PropTypes.func,
onAddComponent: PropTypes.func
};
-
+ componentDidMount() {
+ const {onCandidateInProcess, currentSoftwareProduct} = this.props;
+ if (currentSoftwareProduct.candidateOnboardingOrigin) {
+ onCandidateInProcess(currentSoftwareProduct.id);
+ }
+ }
render() {
let {currentSoftwareProduct, isReadOnlyMode, isManual, onDetailsSelect} = this.props;
return (
diff --git a/openecomp-ui/test/softwareProduct/attachments/validationFlow.test.js b/openecomp-ui/test/softwareProduct/attachments/validationFlow.test.js
new file mode 100644
index 0000000000..b095aeda29
--- /dev/null
+++ b/openecomp-ui/test/softwareProduct/attachments/validationFlow.test.js
@@ -0,0 +1,40 @@
+/*!
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * 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 {VSPEditorFactoryWithLicensingData} from 'test-utils/factories/softwareProduct/SoftwareProductEditorFactories.js';
+import {storeCreator} from 'sdc-app/AppStore.js';
+import {actionTypes} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js';
+
+describe('SoftwareProduct Attachments - validation flow test: ', function () {
+
+ it('candidate in process flag test', () => {
+ const softwareProduct = VSPEditorFactoryWithLicensingData.build();
+ const store = storeCreator({
+ softwareProduct: {
+ softwareProductEditor: {data: softwareProduct},
+ softwareProductQuestionnaire: {qdata: 'test', qschema: {type: 'string'}}
+ }
+ });
+ store.dispatch({
+ type: actionTypes.CANDIDATE_IN_PROCESS,
+ inProcess: true
+ });
+ let unsubscribe = store.subscribe(() => {
+ expect(store.getState().softwareProduct.softwareProductEditor.data.onboardingOrigin).toEqual(true);
+ });
+ unsubscribe();
+ });
+
+}); \ No newline at end of file