import { ComponentType, useMemo } from 'react'; import { UserContext } from '@/react/hooks/useUser'; import { User } from '@/portainer/users/types'; const mockUser: User = { EndpointAuthorizations: [], Id: 1, Role: 1, Username: 'mock', UseCache: false, ThemeSettings: { color: 'auto', }, }; /** * A helper function to wrap a component with a UserContext.Provider. * * should only be used in tests */ export function withUserProvider( WrappedComponent: ComponentType, user = mockUser ): ComponentType { // Try to create a nice displayName for React Dev Tools. const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component'; function WrapperComponent(props: T & JSX.IntrinsicAttributes) { const state = useMemo(() => ({ user }), []); return ( {/* eslint-disable-next-line react/jsx-props-no-spreading */} ); } WrapperComponent.displayName = `withUserProvider(${displayName})`; return WrapperComponent; }