Skip to content

Commit b9279c8

Browse files
committed
Add tests
1 parent 210793a commit b9279c8

File tree

2 files changed

+79
-9
lines changed

2 files changed

+79
-9
lines changed

packages/mui-material/src/Tooltip/Tooltip.test.js

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import {
1313
} from '@mui/internal-test-utils';
1414
import { camelCase } from 'es-toolkit/string';
1515
import Tooltip, { tooltipClasses as classes } from '@mui/material/Tooltip';
16+
import IconButton from '@mui/material/IconButton';
17+
import SaveIcon from '@mui/icons-material/Save';
1618
import { testReset } from './Tooltip';
1719
import describeConformance from '../../test/describeConformance';
1820

@@ -1492,4 +1494,75 @@ describe('<Tooltip />', () => {
14921494
expect(screen.getByTestId('popper')).to.have.class('my-class');
14931495
});
14941496
});
1497+
1498+
describe('IconButton trigger', () => {
1499+
it('uncontrolled mode', async () => {
1500+
render(
1501+
<Tooltip enterDelay={0} title="Save" TransitionProps={{ timeout: 0 }}>
1502+
<IconButton>
1503+
<SaveIcon />
1504+
</IconButton>
1505+
</Tooltip>,
1506+
);
1507+
expect(screen.queryByRole('tooltip')).to.equal(null);
1508+
1509+
fireEvent.mouseOver(screen.getByRole('button'));
1510+
clock.tick(0);
1511+
1512+
expect(screen.getByRole('tooltip')).toBeVisible();
1513+
1514+
fireEvent.mouseLeave(screen.getByRole('button'));
1515+
// Tooltip schedules timeout even with no delay
1516+
clock.tick(0);
1517+
clock.tick(0);
1518+
1519+
expect(screen.queryByRole('tooltip')).to.equal(null);
1520+
});
1521+
1522+
it('controlled mode', async () => {
1523+
function App() {
1524+
const [open, setOpen] = React.useState(false);
1525+
1526+
const handleClose = () => {
1527+
setOpen(false);
1528+
};
1529+
1530+
const handleOpen = () => {
1531+
setOpen(true);
1532+
};
1533+
1534+
return (
1535+
<Tooltip
1536+
open={open}
1537+
onClose={handleClose}
1538+
onOpen={handleOpen}
1539+
title="Save"
1540+
enterDelay={0}
1541+
TransitionProps={{ timeout: 0 }}
1542+
>
1543+
<IconButton>
1544+
<SaveIcon />
1545+
</IconButton>
1546+
</Tooltip>
1547+
);
1548+
}
1549+
1550+
await render(<App />);
1551+
1552+
const trigger = screen.getByRole('button');
1553+
1554+
expect(screen.queryByRole('tooltip')).to.equal(null);
1555+
1556+
fireEvent.mouseOver(trigger);
1557+
1558+
expect(screen.getByRole('tooltip')).toBeVisible();
1559+
1560+
fireEvent.mouseLeave(screen.getByRole('button'));
1561+
1562+
clock.tick(0); // enterDelay
1563+
clock.tick(0); // TransitionProps.timeout
1564+
1565+
expect(screen.queryByRole('tooltip')).to.equal(null);
1566+
});
1567+
});
14951568
});

test/e2e/index.test.ts

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -266,20 +266,17 @@ describe('e2e', () => {
266266
});
267267

268268
describe('<Tooltip />', () => {
269-
it.only('icon button trigger', async () => {
269+
it('icon button trigger', async () => {
270270
await renderFixture('Tooltip/ControlledTooltip');
271271

272272
const tooltip = page.getByRole('tooltip');
273+
await expect(tooltip).toBeHidden();
273274

274-
expect(tooltip).to.equal(null);
275+
await page.mouse.move(20, 20);
276+
await expect(tooltip).toBeVisible();
275277

276-
// await page.mouse.move(20, 20);
277-
278-
// await expect(screen.getByRole('tooltip')).not.to.equal(null);
279-
280-
// await page.mouse.move(50, 50);
281-
282-
// await expect(screen.getByRole('tooltip')).to.equal(null);
278+
await page.mouse.move(99, 99);
279+
await expect(tooltip).toBeHidden();
283280
});
284281
});
285282
});

0 commit comments

Comments
 (0)