Skip to content

Commit 9627c87

Browse files
committed
[test] Update tests with latest state of StrictMode compatibility
1 parent 93aab64 commit 9627c87

File tree

7 files changed

+71
-44
lines changed

7 files changed

+71
-44
lines changed

packages/material-ui-lab/src/CalendarPicker/CalendarPicker.test.tsx

+10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as React from 'react';
22
import { expect } from 'chai';
3+
import { SinonFakeTimers, useFakeTimers } from 'sinon';
34
import { fireEvent, screen, describeConformanceV5 } from 'test/utils';
45
import CalendarPicker, { calendarPickerClasses as classes } from '@material-ui/lab/CalendarPicker';
56
import {
@@ -10,6 +11,15 @@ import {
1011
} from '../internal/pickers/test-utils';
1112

1213
describe('<CalendarPicker />', () => {
14+
let clock: SinonFakeTimers;
15+
beforeEach(() => {
16+
clock = useFakeTimers();
17+
});
18+
afterEach(() => {
19+
clock.restore();
20+
});
21+
22+
// StrictModeViolation: Uses StrictMode incompatible API of `react-transition-group`
1323
const render = createPickerRender({ strict: false });
1424

1525
describeConformanceV5(<CalendarPicker date={adapterToUse.date()} onChange={() => {}} />, () => ({

packages/material-ui-lab/src/DesktopDatePicker/DesktopDatePicker.test.tsx

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as React from 'react';
22
import { expect } from 'chai';
3-
import { spy } from 'sinon';
3+
import { SinonFakeTimers, spy, useFakeTimers } from 'sinon';
44
import TextField from '@material-ui/core/TextField';
55
import { TransitionProps } from '@material-ui/core/transitions';
66
import { act, fireEvent, screen, userEvent } from 'test/utils';
@@ -42,6 +42,14 @@ const UncontrolledOpenDesktopDatePicker = (({
4242
}) as typeof DesktopDatePicker;
4343

4444
describe('<DesktopDatePicker />', () => {
45+
let clock: SinonFakeTimers;
46+
beforeEach(() => {
47+
clock = useFakeTimers();
48+
});
49+
afterEach(() => {
50+
clock.restore();
51+
});
52+
// StrictModeViolation: Uses CalendarPicker
4553
const render = createPickerRender({ strict: false });
4654

4755
it('prop: components.OpenPickerIcon', () => {

packages/material-ui-lab/src/DesktopDateRangePicker/DesktopDateRangePicker.test.tsx

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as React from 'react';
22
import { expect } from 'chai';
3-
import { spy } from 'sinon';
3+
import { SinonFakeTimers, spy, useFakeTimers } from 'sinon';
44
import { act, describeConformance, screen, fireEvent, userEvent } from 'test/utils';
55
import { createTheme, ThemeProvider } from '@material-ui/core/styles';
66
import TextField, { TextFieldProps } from '@material-ui/core/TextField';
@@ -23,14 +23,15 @@ const defaultRangeRenderInput = (startProps: TextFieldProps, endProps: TextField
2323
);
2424

2525
describe('<DesktopDateRangePicker />', () => {
26-
const render = createPickerRender({ strict: false });
27-
28-
before(function beforeHook() {
29-
if (!/jsdom/.test(window.navigator.userAgent)) {
30-
// FIXME This test suite is extremely flaky in test:karma
31-
this.skip();
32-
}
26+
let clock: SinonFakeTimers;
27+
beforeEach(() => {
28+
clock = useFakeTimers();
3329
});
30+
afterEach(() => {
31+
clock.restore();
32+
});
33+
// StrictModeViolation: Uses CalendarPicker
34+
const render = createPickerRender({ strict: false });
3435

3536
describeConformance(
3637
<DesktopDateRangePicker

packages/material-ui-lab/src/MobileDatePicker/MobileDatePicker.test.tsx

+31-34
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import * as React from 'react';
22
import { expect } from 'chai';
33
import { spy, useFakeTimers, SinonFakeTimers } from 'sinon';
44
import TextField from '@material-ui/core/TextField';
5-
import { fireEvent, screen } from 'test/utils';
5+
import { act, fireEvent, screen } from 'test/utils';
66
import PickersDay from '@material-ui/lab/PickersDay';
77
import CalendarPickerSkeleton from '@material-ui/lab/CalendarPickerSkeleton';
88
import MobileDatePicker from '@material-ui/lab/MobileDatePicker';
@@ -16,7 +16,14 @@ import {
1616
} from '../internal/pickers/test-utils';
1717

1818
describe('<MobileDatePicker />', () => {
19-
const render = createPickerRender({ strict: false });
19+
let clock: SinonFakeTimers;
20+
beforeEach(() => {
21+
clock = useFakeTimers(new Date());
22+
});
23+
afterEach(() => {
24+
clock.restore();
25+
});
26+
const render = createPickerRender();
2027

2128
it('Accepts date on `OK` button click', () => {
2229
const onChangeMock = spy();
@@ -267,39 +274,29 @@ describe('<MobileDatePicker />', () => {
267274
expect(screen.getByText('July')).toBeVisible();
268275
});
269276

270-
describe('mock time', () => {
271-
let clock: SinonFakeTimers;
272-
273-
beforeEach(() => {
274-
clock = useFakeTimers(new Date());
275-
});
276-
277-
afterEach(() => {
278-
clock.restore();
279-
});
280-
281-
it('prop `showTodayButton` – accept current date when "today" button is clicked', () => {
282-
const onCloseMock = spy();
283-
const handleChange = spy();
284-
render(
285-
<MobileDatePicker
286-
renderInput={(params) => <TextField {...params} />}
287-
showTodayButton
288-
cancelText="stream"
289-
onClose={onCloseMock}
290-
onChange={handleChange}
291-
value={adapterToUse.date('2018-01-01T00:00:00.000')}
292-
DialogProps={{ TransitionComponent: FakeTransitionComponent }}
293-
/>,
294-
);
295-
const start = adapterToUse.date();
296-
fireEvent.click(screen.getByRole('textbox'));
277+
it('prop `showTodayButton` – accept current date when "today" button is clicked', () => {
278+
const onCloseMock = spy();
279+
const handleChange = spy();
280+
render(
281+
<MobileDatePicker
282+
renderInput={(params) => <TextField {...params} />}
283+
showTodayButton
284+
cancelText="stream"
285+
onClose={onCloseMock}
286+
onChange={handleChange}
287+
value={adapterToUse.date('2018-01-01T00:00:00.000')}
288+
DialogProps={{ TransitionComponent: FakeTransitionComponent }}
289+
/>,
290+
);
291+
const start = adapterToUse.date();
292+
fireEvent.click(screen.getByRole('textbox'));
293+
act(() => {
297294
clock.tick(10);
298-
fireEvent.click(screen.getByText(/today/i));
299-
300-
expect(onCloseMock.callCount).to.equal(1);
301-
expect(handleChange.callCount).to.equal(1);
302-
expect(adapterToUse.getDiff(handleChange.args[0][0], start)).to.equal(10);
303295
});
296+
fireEvent.click(screen.getByText(/today/i));
297+
298+
expect(onCloseMock.callCount).to.equal(1);
299+
expect(handleChange.callCount).to.equal(1);
300+
expect(adapterToUse.getDiff(handleChange.args[0][0], start)).to.equal(10);
304301
});
305302
});

packages/material-ui-lab/src/MobileDateTimePicker/MobileDateTimePicker.test.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ describe('<MobileDateTimePicker />', () => {
1717
clock.restore();
1818
});
1919

20+
// StrictModeViolation: Uses CalendarPicker
2021
const render = createPickerRender({ strict: false });
2122

2223
it('opens dialog on textField click for Mobile mode', () => {

packages/material-ui-lab/src/StaticDatePicker/StaticDatePicker.test.tsx

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as React from 'react';
22
import { expect } from 'chai';
3+
import { SinonFakeTimers, useFakeTimers } from 'sinon';
34
import TextField from '@material-ui/core/TextField';
45
import { fireEvent, screen } from 'test/utils';
56
import StaticDatePicker from '@material-ui/lab/StaticDatePicker';
@@ -11,7 +12,15 @@ import {
1112
} from '../internal/pickers/test-utils';
1213

1314
describe('<StaticDatePicker />', () => {
14-
const render = createPickerRender({ strict: false });
15+
let clock: SinonFakeTimers;
16+
beforeEach(() => {
17+
clock = useFakeTimers();
18+
});
19+
afterEach(() => {
20+
clock.restore();
21+
});
22+
23+
const render = createPickerRender();
1524

1625
it('render proper month', () => {
1726
render(

packages/material-ui-styles/src/makeStyles/makeStyles.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import StylesProvider from '../StylesProvider';
1212
import ThemeProvider from '../ThemeProvider';
1313

1414
describe('makeStyles', () => {
15+
// StrictModeViolation: uses `useSynchronousEffect`
1516
const mount = createMount({ strict: null });
1617

1718
/**

0 commit comments

Comments
 (0)