tooltip.spec.jsx 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import {mountWithTheme} from 'sentry-test/enzyme';
  2. import Tooltip from 'app/components/tooltip';
  3. describe('Tooltip', function () {
  4. it('renders', function () {
  5. const wrapper = mountWithTheme(
  6. <Tooltip title="test">
  7. <span>My Button</span>
  8. </Tooltip>
  9. );
  10. expect(wrapper).toSnapshot();
  11. });
  12. it('updates title', function () {
  13. const wrapper = mountWithTheme(
  14. <Tooltip delay={0} title="test">
  15. <span>My Button</span>
  16. </Tooltip>,
  17. TestStubs.routerContext()
  18. );
  19. wrapper.setProps({title: 'bar'});
  20. wrapper.update();
  21. const trigger = wrapper.find('span');
  22. trigger.simulate('mouseEnter');
  23. const tooltip = document.querySelector('#tooltip-portal .tooltip-content');
  24. // Check the text node.
  25. expect(tooltip.childNodes[0].nodeValue).toEqual('bar');
  26. trigger.simulate('mouseLeave');
  27. // XXX(epurkhiser): AnimatePresence will remove the element, but for
  28. // testing it's easier to just remove it
  29. tooltip.remove();
  30. });
  31. it('disables and does not render', function () {
  32. const wrapper = mountWithTheme(
  33. <Tooltip delay={0} title="test" disabled>
  34. <span>My Button</span>
  35. </Tooltip>,
  36. TestStubs.routerContext()
  37. );
  38. const trigger = wrapper.find('span');
  39. trigger.simulate('mouseEnter');
  40. const tooltip = document.querySelector('#tooltip-portal .tooltip-content');
  41. expect(tooltip).toBeFalsy();
  42. trigger.simulate('mouseLeave');
  43. });
  44. it('does not render an empty tooltip', function () {
  45. const wrapper = mountWithTheme(
  46. <Tooltip delay={0} title="">
  47. <span>My Button</span>
  48. </Tooltip>,
  49. TestStubs.routerContext()
  50. );
  51. const trigger = wrapper.find('span');
  52. trigger.simulate('mouseEnter');
  53. const tooltipContent = wrapper.find('TooltipContent');
  54. expect(tooltipContent.prop('hide')).toBe(true);
  55. trigger.simulate('mouseLeave');
  56. });
  57. });