dropdownAutoComplete.spec.jsx 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import React from 'react';
  2. import {mountWithTheme} from 'sentry-test/enzyme';
  3. import DropdownAutoComplete from 'app/components/dropdownAutoComplete';
  4. describe('DropdownAutoComplete', function() {
  5. const routerContext = TestStubs.routerContext();
  6. const items = [
  7. {
  8. value: 'apple',
  9. label: <div>Apple</div>,
  10. },
  11. {
  12. value: 'bacon',
  13. label: <div>Bacon</div>,
  14. },
  15. {
  16. value: 'corn',
  17. label: <div>Corn</div>,
  18. },
  19. ];
  20. it('has actor wrapper', function() {
  21. const wrapper = mountWithTheme(
  22. <DropdownAutoComplete items={items}>{() => 'Click Me!'}</DropdownAutoComplete>,
  23. routerContext
  24. );
  25. expect(wrapper.find('div[role="button"]')).toHaveLength(1);
  26. expect(wrapper.find('div[role="button"]').text()).toBe('Click Me!');
  27. });
  28. it('opens dropdown menu when actor is clicked', function() {
  29. const wrapper = mountWithTheme(
  30. <DropdownAutoComplete items={items}>{() => 'Click Me!'}</DropdownAutoComplete>,
  31. routerContext
  32. );
  33. wrapper.find('Actor[role="button"]').simulate('click');
  34. expect(wrapper.find('BubbleWithMinWidth')).toHaveLength(1);
  35. wrapper.find('Actor[role="button"]').simulate('click');
  36. expect(wrapper.find('BubbleWithMinWidth')).toHaveLength(1);
  37. });
  38. it('toggles dropdown menu when actor is clicked', function() {
  39. const wrapper = mountWithTheme(
  40. <DropdownAutoComplete allowActorToggle items={items}>
  41. {() => 'Click Me!'}
  42. </DropdownAutoComplete>,
  43. routerContext
  44. );
  45. wrapper.find('Actor[role="button"]').simulate('click');
  46. expect(wrapper.find('BubbleWithMinWidth')).toHaveLength(1);
  47. wrapper.find('Actor[role="button"]').simulate('click');
  48. expect(wrapper.find('BubbleWithMinWidth')).toHaveLength(0);
  49. });
  50. });