@material-ui/lab
Version:
Material-UI Lab - Incubator for Material-UI React components.
72 lines (63 loc) • 2.56 kB
JavaScript
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
import * as React from 'react';
import { parseISO } from 'date-fns';
import { createClientRender, fireEvent, screen } from 'test/utils';
import { queryHelpers } from '@testing-library/react/pure';
import DateFnsAdapter from '../../dateAdapter/date-fns';
import LocalizationProvider from '../../LocalizationProvider'; // TODO make possible to pass here any utils using cli
/**
* Wrapper around `@date-io/date-fns` that resolves https://github.com/dmtrKovalenko/date-io/issues/479.
* We're not using `adapter.date` in the implementation which means the implementation is safe.
* But we do use it in tests where usage of ISO dates without timezone is problematic
*/
export class AdapterClassToUse extends DateFnsAdapter {
date(value) {
if (typeof value === 'string') {
return parseISO(value);
}
return super.date(value);
}
}
export const adapterToUse = new AdapterClassToUse();
export const FakeTransitionComponent = /*#__PURE__*/React.forwardRef(function FakeTransitionComponent({
children
}, ref) {
// set tabIndex in case it is used as a child of <TrapFocus />
return /*#__PURE__*/React.createElement("div", {
ref: ref,
tabIndex: -1
}, children);
});
export function createPickerRender(_ref) {
let {
locale
} = _ref,
renderOptions = _objectWithoutPropertiesLoose(_ref, ["locale"]);
const clientRender = createClientRender(renderOptions);
return node => clientRender( /*#__PURE__*/React.createElement(LocalizationProvider, {
locale: locale,
dateAdapter: AdapterClassToUse
}, node));
}
export const queryByMuiTest = queryHelpers.queryByAttribute.bind(null, 'data-mui-test');
export const queryAllByMuiTest = queryHelpers.queryAllByAttribute.bind(null, 'data-mui-test');
export function getAllByMuiTest(id, container = document.body, options) {
const els = queryAllByMuiTest(container, id, options);
if (!els.length) {
throw queryHelpers.getElementError(`Unable to find an element by: [data-mui-test="${id}"]`, container);
}
return els;
}
export function getByMuiTest(...args) {
const result = getAllByMuiTest(...args);
if (result.length > 0) {
return result[0];
}
throw queryHelpers.getElementError(`Unable to find an element by: [data-mui-test="${args[0]}"]`, document.body);
}
export function openDesktopPicker() {
fireEvent.click(screen.getByLabelText(/choose date/i));
}
export function openMobilePicker() {
fireEvent.click(screen.getByRole('textbox'));
}