dropdownAutoComplete.spec.jsx 1.6 KB

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