tooltip.spec.jsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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 = mount(
  7. <Tooltip title="test">
  8. <span>My Button</span>
  9. </Tooltip>
  10. );
  11. expect(wrapper).toMatchSnapshot();
  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 = mount(
  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 tooltip = document.querySelector('#tooltip-portal .tooltip-content');
  52. expect(tooltip).toBeFalsy();
  53. trigger.simulate('mouseLeave');
  54. });
  55. });