import * as React from 'react'; import TextField from '@material-ui/core/TextField'; import { fireEvent, screen, waitFor } from '@testing-library/react'; import { utilsToUse } from './test-utils'; import { createClientRender } from './createClientRender'; import { DesktopDateTimePicker, StaticDateTimePicker } from '../DateTimePicker'; describe('', () => { // Doesn't work if (process.env.UTILS === 'dayjs') { it('noop', () => {}); return; } const render = createClientRender({ strict: false }); it('prop: mask – should take the mask prop into account', () => { render( } ampm={false} inputFormat={utilsToUse.moment ? 'MM.DD.YYYY HH:mm' : 'mm.dd.yyyy hh:mm'} mask="__.__.____ __:__" onChange={() => {}} value={null} /> ); const textbox = screen.getByRole('textbox') as HTMLInputElement; fireEvent.change(textbox, { target: { value: '12', }, }); expect(textbox.value).toBe('12.'); }); it('prop: maxDateTime – minutes is disabled by date part', async () => { render( {}} renderInput={(props) => } value={utilsToUse.date('2018-01-01T12:00:00.000Z')} minDateTime={utilsToUse.date('2018-01-01T12:30:00.000Z')} /> ); await waitFor(() => screen.getByRole('dialog')); expect(screen.getByLabelText('25 minutes').getAttribute('aria-disabled')).toBe('true'); expect(screen.getByLabelText('35 minutes').getAttribute('aria-disabled')).toBe('false'); }); it('prop: minDateTime – hours is disabled by date part', async () => { render( {}} ampm={false} renderInput={(props) => } value={utilsToUse.date('2018-01-01T00:00:00.000Z')} minDateTime={utilsToUse.date('2018-01-01T12:30:00.000Z')} /> ); await waitFor(() => screen.getByRole('dialog')); expect(screen.getByLabelText('11 hours').getAttribute('aria-disabled')).toBe('true'); }); it('shows ArrowSwitcher on ClockView disabled and not allows to return back to the date', async () => { render( {}} renderInput={(props) => } value={utilsToUse.date('2018-01-01T00:00:00.000Z')} /> ); await waitFor(() => screen.getByRole('dialog')); expect(screen.getByLabelText('open previous view')).toBeDisabled(); }); it('allows to switch using ArrowSwitcher on ClockView', async () => { render( {}} renderInput={(props) => } value={utilsToUse.date('2018-01-01T00:00:00.000Z')} /> ); await waitFor(() => screen.getByRole('dialog')); fireEvent.click(screen.getByLabelText('open next view')); expect(screen.getByLabelText('open next view')).toBeDisabled(); }); it('allows to select the same day and move to the next view', () => { const onChangeMock = jest.fn(); render( } value={utilsToUse.date('2018-01-01T00:00:00.000Z')} /> ); fireEvent.click(screen.getByLabelText('Jan 1, 2018')); expect(onChangeMock).toHaveBeenCalled(); expect(screen.getByLabelText(/Selected time/)).toBeInTheDocument(); }); });