All files / modules/70-pipeline/components/OverlayInputSetForm OverlayInputSetUtils.ts

100% Statements 16/16
87.5% Branches 14/16
100% Functions 5/5
100% Lines 9/9

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 80 81              3x 3x                       20x                                   3x                         5x           5x                                   3x 25x     101x  
/*
 * Copyright 2022 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 { defaultTo } from 'lodash-es'
import { CompletionItemKind } from 'vscode-languageserver-types'
import type { MutateRequestOptions } from 'restful-react/dist/Mutate'
import type {
  CreateOverlayInputSetForPipelineQueryParams,
  InputSetSummaryResponse,
  UpdateOverlayInputSetForPipelinePathParams,
  UpdateOverlayInputSetForPipelineQueryParams
} from 'services/pipeline-ng'
import type { InputSetDTO } from '@pipeline/utils/types'
import type { SaveToGitFormInterface } from '@common/components/SaveToGitForm/SaveToGitForm'
import type { InputSetValue } from '../InputSetSelector/utils'
 
export const constructInputSetYamlObject = (item: InputSetSummaryResponse) => ({
  label: defaultTo(item.name, ''),
  insertText: defaultTo(item.identifier, ''),
  kind: CompletionItemKind.Field
})
 
export interface GetOverlayCreateUpdateOptionsInterface {
  inputSetObj: InputSetDTO
  accountId: string
  orgIdentifier: string
  pipelineIdentifier: string
  projectIdentifier: string
  gitDetails?: SaveToGitFormInterface
  objectId: string
  initialGitDetails: any
  isEdit: boolean
}
 
export const getCreateUpdateRequestBodyOptions = ({
  inputSetObj,
  accountId,
  orgIdentifier,
  pipelineIdentifier,
  projectIdentifier,
  gitDetails,
  objectId,
  initialGitDetails,
  isEdit
}: GetOverlayCreateUpdateOptionsInterface):
  | MutateRequestOptions<UpdateOverlayInputSetForPipelineQueryParams, UpdateOverlayInputSetForPipelinePathParams>
  | MutateRequestOptions<CreateOverlayInputSetForPipelineQueryParams, void> => {
  const commonQueryParams = {
    accountIdentifier: accountId,
    orgIdentifier,
    pipelineIdentifier,
    projectIdentifier
  }
  return isEdit
    ? {
        pathParams: { inputSetIdentifier: defaultTo(inputSetObj.identifier, '') },
        queryParams: {
          ...commonQueryParams,
          ...(gitDetails ? { ...gitDetails, lastObjectId: objectId } : {}),
          ...(gitDetails && gitDetails.isNewBranch ? { baseBranch: initialGitDetails.branch } : {})
        }
      }
    : {
        queryParams: {
          ...commonQueryParams,
          ...(gitDetails ?? {}),
          ...(gitDetails && gitDetails.isNewBranch ? { baseBranch: initialGitDetails.branch } : {})
        }
      }
}
 
export const getInputSetReference = (currInputSet: InputSetValue) =>
  defaultTo(currInputSet.identifier, currInputSet.value) as string
 
// return the first truthy value from the list of values provided
export const anyOneOf = (values: Array<any>): any => values.find(value => value)