import {mountWithTheme} from 'sentry-test/enzyme';
import Tooltip from 'app/components/tooltip';
describe('Tooltip', function () {
it('renders', function () {
const wrapper = mountWithTheme(
My Button
);
expect(wrapper).toSnapshot();
});
it('updates title', function () {
const wrapper = mountWithTheme(
My Button
,
TestStubs.routerContext()
);
wrapper.setProps({title: 'bar'});
wrapper.update();
const trigger = wrapper.find('span');
trigger.simulate('mouseEnter');
const tooltip = document.querySelector('#tooltip-portal .tooltip-content');
// Check the text node.
expect(tooltip.childNodes[0].nodeValue).toEqual('bar');
trigger.simulate('mouseLeave');
// XXX(epurkhiser): AnimatePresence will remove the element, but for
// testing it's easier to just remove it
tooltip.remove();
});
it('disables and does not render', function () {
const wrapper = mountWithTheme(
My Button
,
TestStubs.routerContext()
);
const trigger = wrapper.find('span');
trigger.simulate('mouseEnter');
const tooltip = document.querySelector('#tooltip-portal .tooltip-content');
expect(tooltip).toBeFalsy();
trigger.simulate('mouseLeave');
});
it('does not render an empty tooltip', function () {
const wrapper = mountWithTheme(
My Button
,
TestStubs.routerContext()
);
const trigger = wrapper.find('span');
trigger.simulate('mouseEnter');
const tooltipContent = wrapper.find('TooltipContent');
expect(tooltipContent.prop('hide')).toBe(true);
trigger.simulate('mouseLeave');
});
});