import * as React from 'react';
import { render, RenderResult } from '@testing-library/react';
import { LivenessInterpreter } from '../service';
import { FaceLivenessDetectorProvider } from '../providers';
import { FaceLivenessDetectorProps } from '../FaceLivenessDetector';
type RenderWithLivenessLivenessProviderResult = RenderResult & {
mockComponentProps: FaceLivenessDetectorProps;
mockService: LivenessInterpreter;
};
export function renderWithLivenessProvider(
ui: JSX.Element
): RenderWithLivenessLivenessProviderResult {
const mockComponentProps: FaceLivenessDetectorProps = {
region: 'us-east-1',
sessionId: 'sessionId',
onAnalysisComplete: jest.fn(),
};
const mockService: LivenessInterpreter = {} as LivenessInterpreter;
const Wrapper: React.FC = ({ children }) => (
{children}
);
const renderResults = render(ui, { wrapper: Wrapper });
return {
...renderResults,
mockComponentProps,
mockService,
};
}
export function getMockedFunction any>(
fn: T
): jest.MockedFunction {
return fn as jest.MockedFunction;
}
export function mockMatchMedia(
mediaQuery: string = '',
matches: boolean = false
): void {
Object.defineProperty(window, 'matchMedia', {
writable: true,
value: jest.fn().mockImplementation((query: string = mediaQuery) => ({
matches: matches,
media: query,
onchange: null,
addEventListener: jest.fn(),
removeEventListener: jest.fn(),
dispatchEvent: jest.fn(),
})),
});
}