import { TablePopupPropsContext } from '@servicetitan/design-system'; import { createContext, FC, useContext } from 'react'; import { useMFEDataContext, useMFEMetadataContext } from '../contexts'; jest.mock('@progress/kendo-licensing', () => ({ validatePackage: jest.fn() })); const FallbackContext = createContext(undefined); export const MockComponent: FC> = props => { const data = useMFEDataContext(); const metadata = useMFEMetadataContext(); /* * TablePopupPropsContext is undefined when a test mocks * @servicetitan/design-system as an empty object. Fall back to * a no-op context so the component renders without it. */ const popupProps = useContext(TablePopupPropsContext ?? FallbackContext); const appendTo = popupProps?.({}).appendTo; return (
{Object.entries(props).map(([name, value]) => ( {`Prop: ${name}, Value: ${stringifyValue(value)}`} ))} {Object.entries(data).map(([name, value]) => ( {`Data: ${name}, Value: ${stringifyValue(value)}`} ))} {Object.entries(metadata).map(([name, value]) => ( {`Metadata: ${name}, Value: ${stringifyValue(value)}`} ))} {/* eslint-disable-next-line @typescript-eslint/no-base-to-string */} TablePopupPropsContext appendTo: {String(appendTo)}
); }; function stringifyValue(value: any) { return JSON.stringify(value, (_key, value) => value instanceof ShadowRoot ? 'ShadowRoot' : value ); }