All files / modules/72-templates-library/utils templateContextTestUtils.tsx

100% Statements 14/14
100% Branches 13/13
100% Functions 3/3
100% Lines 13/13

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              1x 1x   1x   1x 1x 1x         1x             1x 11x 10x 10x                                                     1x 1x                            
/*
 * 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 React from 'react'
import { Route } from 'react-router-dom'
 
import { pick } from 'lodash-es'
 
import { VisualYamlSelectedView } from '@harness/uicore'
import { TestWrapper, TestWrapperProps } from '@common/utils/testUtils'
import {
  TemplateContext,
  TemplateContextInterface
} from '@templates-library/components/TemplateStudio/TemplateContext/TemplateContext'
 
import templateContextProviderProps from './__tests__/mocks/templateContextProvider.json'
 
export interface TemplateContextWrapperProps extends TestWrapperProps {
  templateContextValues?: Partial<TemplateContextInterface>
  isGitSyncEnabled?: boolean
}
 
export const TemplateContextTestWrapper: React.FC<TemplateContextWrapperProps> = props => {
  const { defaultAppStoreValues, templateContextValues, isGitSyncEnabled = true } = props
  const [view, setView] = React.useState<VisualYamlSelectedView>(VisualYamlSelectedView.VISUAL)
  return (
    <TestWrapper
      {...pick(props, ['path', 'pathParams', 'queryParams'])}
      defaultAppStoreValues={{
        featureFlags: {},
        selectedProject: {
          identifier: 'dummy',
          name: 'dummy',
          modules: ['CD']
        },
        isGitSyncEnabled: isGitSyncEnabled,
        connectivityMode: 'DELEGATE',
        ...defaultAppStoreValues
      }}
    >
      <TemplateContext.Provider
        value={
          {
            view: view,
            setView: setView,
            updateTemplateView: jest.fn(),
            ...templateContextProviderProps,
            ...templateContextValues,
            state: {
              ...templateContextProviderProps.state,
              ...templateContextValues?.state,
              yamlHandler: {
                getLatestYaml: () => 'dummy\n',
                getYAMLValidationErrorMap: () => new Map(),
                ...templateContextValues?.state?.yamlHandler
              }
            }
          } as TemplateContextInterface
        }
      >
        <Route exact path={props.path}>
          {props.children}
        </Route>
      </TemplateContext.Provider>
    </TestWrapper>
  )
}