/** * 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;