/**
* Copyright (c) 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 React from 'react';
import PropTypes from 'prop-types';
import Accordion from 'sdc-ui/lib/react/Accordion.js';
import SVGIcon from 'sdc-ui/lib/react/SVGIcon.js';
import GridSection from 'nfvo-components/grid/GridSection.jsx';
import GridItem from 'nfvo-components/grid/GridItem.jsx';
import i18n from 'nfvo-utils/i18n/i18n.js';
import unCamelCasedString from 'nfvo-utils/unCamelCaseString.js';
const TestResultComponent = ({ tests }) => {
return (
{tests.map((test, index) => {
let name = 'errorCircle';
let color = 'warning';
if (
test.testResult &&
test.testResult.toLowerCase() === 'pass'
) {
color = 'positive';
name = 'checkCircle';
} else if (
test.testResult &&
test.testResult.toLowerCase() === 'fail'
) {
name = 'exclamationTriangleFull';
}
return (
{test.testName +
' | ' +
test.testResult +
' | ' +
test.notes}
);
})}
);
};
class SoftwareProductValidationResultsView extends React.Component {
static propTypes = {
softwareProductValidation: PropTypes.object
};
constructor(props) {
super(props);
this.state = {
vspId: this.props.softwareProductId,
versionNumber: this.props.version.name
};
}
buildSubAccordions(result) {
if (result.status && result.status.toLowerCase() === 'completed') {
if (!result.results.testResults) {
return (
{i18n('{title} results are not available', {
title: result.scenario
})}
);
}
return (
{Object.keys(result.results.testResults).map(
(key, index) => {
let title = unCamelCasedString(key);
if (result.results.testResults[key].length > 0) {
return (
);
} else {
return (
{i18n(
'{title} results are not available',
{
title: title
}
)}
);
}
}
)}
);
} else if (
result.status &&
result.status.toLowerCase() === 'failed' &&
result.results.errors
) {
return (
{result.results.errors.map((element, index) => {
return (
{element.reason + ' | ' + element.advice}
);
})}
);
} else if (result.message || result.httpStatus) {
return (
{result.message + ' | ' + result.httpStatus}
);
}
}
render() {
let results = this.props.softwareProductValidation.vspTestResults || [];
if (results.length > 0) {
return (
{results.map(row => this.buildSubAccordions(row))}
);
} else {
return (
{i18n('No Validation Checks Performed')}
);
}
}
}
export default SoftwareProductValidationResultsView;