Skip to content

Commit

Permalink
add a regression test
Browse files Browse the repository at this point in the history
  • Loading branch information
oliviertassinari committed Dec 4, 2019
1 parent 027d207 commit ddf53d8
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 8 deletions.
10 changes: 7 additions & 3 deletions packages/material-ui/src/Tooltip/Tooltip.js
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ const Tooltip = React.forwardRef(function Tooltip(props, ref) {
}

const childrenProps = children.props;
if (childrenProps.onFocus) {
if (childrenProps.onFocus && event.currentTarget === childNode) {
childrenProps.onFocus(event);
}
};
Expand Down Expand Up @@ -364,13 +364,17 @@ const Tooltip = React.forwardRef(function Tooltip(props, ref) {
const childrenProps = children.props;

if (event.type === 'blur') {
if (childrenProps.onBlur) {
if (childrenProps.onBlur && event.currentTarget === childNode) {
childrenProps.onBlur(event);
}
handleBlur(event);
}

if (event.type === 'mouseleave' && childrenProps.onMouseLeave) {
if (
event.type === 'mouseleave' &&
childrenProps.onMouseLeave &&
event.currentTarget === childNode
) {
childrenProps.onMouseLeave(event);
}

Expand Down
24 changes: 19 additions & 5 deletions packages/material-ui/src/Tooltip/Tooltip.test.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/* eslint-disable jsx-a11y/mouse-events-have-key-events */
import React from 'react';
import { assert } from 'chai';
import { assert, expect } from 'chai';
import PropTypes from 'prop-types';
import { spy, useFakeTimers } from 'sinon';
import consoleErrorMock from 'test/utils/consoleErrorMock';
Expand Down Expand Up @@ -227,17 +228,17 @@ describe('<Tooltip />', () => {
);
const children = container.querySelector('#testChild');
focusVisible(children);
assert.strictEqual(document.body.querySelectorAll('[role="tooltip"]').length, 0);
expect(document.body.querySelectorAll('[role="tooltip"]').length).to.equal(0);
clock.tick(111);
assert.strictEqual(document.body.querySelectorAll('[role="tooltip"]').length, 1);
expect(document.body.querySelectorAll('[role="tooltip"]').length).to.equal(1);
document.activeElement.blur();
clock.tick(5);
clock.tick(6);
assert.strictEqual(document.body.querySelectorAll('[role="tooltip"]').length, 0);
expect(document.body.querySelectorAll('[role="tooltip"]').length).to.equal(0);

focusVisible(children);
// Bypass `enterDelay` wait, instant display.
assert.strictEqual(document.body.querySelectorAll('[role="tooltip"]').length, 1);
expect(document.body.querySelectorAll('[role="tooltip"]').length).to.equal(1);
});

it('should take the leaveDelay into account', () => {
Expand Down Expand Up @@ -285,6 +286,19 @@ describe('<Tooltip />', () => {
assert.strictEqual(handler.callCount, 1);
});
});

it('should ignore event from the tooltip', () => {
const handleMouseOver = spy();
const { getByRole } = render(
<Tooltip {...defaultProps} open interactive>
<button type="submit" onMouseOver={handleMouseOver}>
Hello World
</button>
</Tooltip>,
);
fireEvent.mouseOver(getByRole('tooltip'));
expect(handleMouseOver.callCount).to.equal(0);
});
});

describe('disabled button warning', () => {
Expand Down

0 comments on commit ddf53d8

Please sign in to comment.