import * as React from 'react'; import parse from 'date-fns/parseISO'; import DateFnsAdapter from '@material-ui/pickers/adapter/date-fns'; import TextField, { TextFieldProps } from '@material-ui/core/TextField'; import { mount } from 'cypress-react-unit-test'; import { DIALOG_WIDTH } from '../lib/src/constants/dimensions'; import { LocalizationProvider, StaticDatePickerProps } from '@material-ui/pickers'; // Time of the first commit to the pickers ❤️ const momentInTime = parse('2017-10-07T19:36:00.000'); const mockRequiredProps = { reduceAnimations: true, // speedup tests value: momentInTime, onChange: () => {}, renderInput: (props: TextFieldProps) => , }; /* Globally mock time for all component tests */ function mockTime() { cy.clock(momentInTime.getTime()); } export function mountStaticPicker( createStaticPickerNode: ( props: Pick ) => React.ReactNode ) { document.body.style.margin = '0px'; cy.viewport(DIALOG_WIDTH, 500); mockTime(); mount( {createStaticPickerNode(mockRequiredProps)} ); } export function mountPicker( createPicker: ( props: Pick ) => React.ReactNode ) { mockTime(); mount( {createPicker(mockRequiredProps)} ); } export function mountPickerWithState( createPicker: ( props: Pick ) => JSX.Element ) { function PickerWithState() { const [value, setDate] = React.useState(momentInTime); return createPicker({ ...mockRequiredProps, value, onChange: (date) => setDate(date) }); } mountPicker(() => ); }