settingsBreadcrumbDropdown.spec.jsx 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import {mountWithTheme} from 'sentry-test/enzyme';
  2. import BreadcrumbDropdown from 'app/views/settings/components/settingsBreadcrumb/breadcrumbDropdown';
  3. jest.useFakeTimers();
  4. describe('Settings Breadcrumb Dropdown', function () {
  5. let wrapper;
  6. const selectMock = jest.fn();
  7. const items = [
  8. {value: '1', label: 'foo'},
  9. {value: '2', label: 'bar'},
  10. ];
  11. beforeEach(function () {
  12. wrapper = mountWithTheme(
  13. <BreadcrumbDropdown items={items} name="Test" hasMenu onSelect={selectMock} />,
  14. TestStubs.routerContext()
  15. );
  16. });
  17. it('opens when hovered over crumb', function () {
  18. wrapper.find('Crumb').simulate('mouseEnter');
  19. jest.runAllTimers();
  20. wrapper.update();
  21. expect(wrapper.find('AutoCompleteItem')).toHaveLength(2);
  22. });
  23. it('closes after 200ms when mouse leaves crumb', function () {
  24. wrapper.find('Crumb').simulate('mouseEnter');
  25. jest.runAllTimers();
  26. wrapper.update();
  27. expect(wrapper.find('BubbleWithMinWidth')).toHaveLength(1);
  28. wrapper.find('Crumb').simulate('mouseLeave');
  29. jest.advanceTimersByTime(10);
  30. wrapper.update();
  31. expect(wrapper.find('BubbleWithMinWidth')).toHaveLength(0);
  32. });
  33. it('closes immediately after selecting an item', function () {
  34. wrapper.find('Crumb').simulate('mouseEnter');
  35. jest.runAllTimers();
  36. wrapper.update();
  37. expect(wrapper.find('BubbleWithMinWidth')).toHaveLength(1);
  38. wrapper.find('AutoCompleteItem').first().simulate('click');
  39. expect(wrapper.find('BubbleWithMinWidth')).toHaveLength(0);
  40. });
  41. it('stays open when hovered over crumb and then into dropdown menu', function () {
  42. wrapper.find('Crumb').simulate('mouseEnter');
  43. jest.runAllTimers();
  44. wrapper.update();
  45. expect(wrapper.find('BubbleWithMinWidth')).toHaveLength(1);
  46. wrapper.find('Crumb').simulate('mouseLeave');
  47. wrapper.find('BubbleWithMinWidth').simulate('mouseEnter');
  48. jest.runAllTimers();
  49. wrapper.update();
  50. expect(wrapper.find('BubbleWithMinWidth')).toHaveLength(1);
  51. });
  52. it('closes after entering dropdown and then leaving dropdown', function () {
  53. wrapper.find('Crumb').simulate('mouseEnter');
  54. jest.runAllTimers();
  55. wrapper.update();
  56. expect(wrapper.find('BubbleWithMinWidth')).toHaveLength(1);
  57. wrapper.find('Crumb').simulate('mouseLeave');
  58. wrapper.find('BubbleWithMinWidth').simulate('mouseEnter');
  59. jest.runAllTimers();
  60. wrapper.update();
  61. expect(wrapper.find('BubbleWithMinWidth')).toHaveLength(1);
  62. wrapper.find('BubbleWithMinWidth').simulate('mouseLeave');
  63. jest.runAllTimers();
  64. wrapper.update();
  65. expect(wrapper.find('BubbleWithMinWidth')).toHaveLength(0);
  66. });
  67. });