tooltip.spec.jsx 1.7 KB

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