All files / modules/70-pipeline/pages/execution/ExecutionInputsView ExecutionInputsView.tsx

85.71% Statements 18/21
58% Branches 29/50
100% Functions 2/2
85.71% Lines 18/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79              2x 2x     2x 2x 2x     2x 2x           2x   1x   1x   1x                             1x 1x 1x   1x     1x         1x       1x                                    
/*
 * Copyright 2021 Harness Inc. All rights reserved.
 * Use of this source code is governed by the PolyForm Shield 1.0.0 license
 * that can be found in the licenses directory at the root of this repository, also available at
 * https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt.
 */
 
import React, { useState, useEffect } from 'react'
import { useParams } from 'react-router-dom'
 
import type { ExecutionPathProps, PipelineType } from '@common/interfaces/RouteInterfaces'
import { useGetInputsetYamlV2 } from 'services/pipeline-ng'
import { PageSpinner } from '@common/components'
import { RunPipelineForm } from '@pipeline/components/RunPipelineModal/RunPipelineForm'
import type { ResponseJsonNode } from 'services/cd-ng'
 
import { useExecutionContext } from '@pipeline/context/ExecutionContext'
import css from './ExecutionInputsView.module.scss'
 
interface ExecutionInputsViewInterface {
  mockData?: ResponseJsonNode
}
 
export default function ExecutionInputsView(props: ExecutionInputsViewInterface): React.ReactElement {
  const { projectIdentifier, orgIdentifier, pipelineIdentifier, accountId, module, executionIdentifier } =
    useParams<PipelineType<ExecutionPathProps>>()
 
  const { pipelineExecutionDetail } = useExecutionContext()
 
  const { data, loading } = useGetInputsetYamlV2({
    planExecutionId: executionIdentifier,
    queryParams: {
      orgIdentifier,
      resolveExpressions: true,
      projectIdentifier,
      accountIdentifier: accountId
    },
    requestOptions: {
      headers: {
        'content-type': 'application/yaml'
      }
    }
  })
 
  const [inputSetYaml, setInputSetYaml] = useState('')
  const [inputSetTemplateYaml, setInputSetTemplateYaml] = useState('')
  useEffect(() => {
    // Won't actually render out RunPipelineForm
    /* istanbul ignore else */ Iif (data?.data?.inputSetYaml) {
      setInputSetYaml(data.data?.inputSetYaml)
    }
    /* istanbul ignore else */ Iif (data?.data?.inputSetTemplateYaml) {
      setInputSetTemplateYaml(data.data.inputSetTemplateYaml)
    }
  }, [data])
 
  Iif (loading) {
    return <PageSpinner />
  }
 
  return (
    <div className={css.main}>
      <RunPipelineForm
        pipelineIdentifier={pipelineIdentifier}
        orgIdentifier={orgIdentifier}
        projectIdentifier={projectIdentifier}
        accountId={accountId}
        module={module}
        inputSetYAML={inputSetYaml || ''}
        executionView
        branch={pipelineExecutionDetail?.pipelineExecutionSummary?.gitDetails?.branch}
        repoIdentifier={pipelineExecutionDetail?.pipelineExecutionSummary?.gitDetails?.repoIdentifier}
        mockData={props.mockData}
        executionInputSetTemplateYaml={inputSetTemplateYaml}
      />
    </div>
  )
}