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 5160354
Show file tree
Hide file tree
Showing 2 changed files with 25 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
23 changes: 18 additions & 5 deletions packages/material-ui/src/Tooltip/Tooltip.test.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
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 +227,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 +285,19 @@ describe('<Tooltip />', () => {
assert.strictEqual(handler.callCount, 1);
});
});

it('should ignore event from the tooltip', () => {
const handleMouseOver = spy();
const { getByRole, container } = 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 5160354

Please sign in to comment.