@moda/om 16.0.0 → 16.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/index.cjs.js +159 -18
  3. package/dist/index.cjs.js.map +1 -1
  4. package/dist/index.esm.js +159 -18
  5. package/dist/index.esm.js.map +1 -1
  6. package/dist/{__mocks__ → src/__mocks__}/Icon.d.ts +0 -0
  7. package/dist/{components → src/components}/AspectRatioBox/AspectRatioBox.d.ts +0 -0
  8. package/dist/{components → src/components}/AspectRatioBox/AspectRatioBox.stories.d.ts +0 -0
  9. package/dist/{components → src/components}/AspectRatioBox/AspectRatioBox.test.d.ts +0 -0
  10. package/dist/{components → src/components}/AspectRatioBox/index.d.ts +0 -0
  11. package/dist/{components → src/components}/Badge/Badge.d.ts +0 -0
  12. package/dist/{components → src/components}/Badge/Badge.stories.d.ts +0 -0
  13. package/dist/{components → src/components}/Badge/Badge.test.d.ts +0 -0
  14. package/dist/{components → src/components}/Badge/index.d.ts +0 -0
  15. package/dist/{components → src/components}/Breadcrumbs/Breadcrumb/Breadcrumb.d.ts +0 -0
  16. package/dist/{components → src/components}/Breadcrumbs/Breadcrumb/index.d.ts +0 -0
  17. package/dist/{components → src/components}/Breadcrumbs/Breadcrumbs.d.ts +0 -0
  18. package/dist/{components → src/components}/Breadcrumbs/Breadcrumbs.stories.d.ts +0 -0
  19. package/dist/{components → src/components}/Breadcrumbs/Breadcrumbs.test.d.ts +0 -0
  20. package/dist/{components → src/components}/Breadcrumbs/index.d.ts +0 -0
  21. package/dist/{components → src/components}/Breakpoint/Breakpoint.d.ts +0 -0
  22. package/dist/{components → src/components}/Breakpoint/Breakpoint.stories.d.ts +0 -0
  23. package/dist/{components → src/components}/Breakpoint/Breakpoint.test.d.ts +0 -0
  24. package/dist/{components → src/components}/Breakpoint/BreakpointProvider.d.ts +0 -0
  25. package/dist/{components → src/components}/Breakpoint/generateMediaQuery.d.ts +0 -0
  26. package/dist/{components → src/components}/Breakpoint/generateMediaQuery.test.d.ts +0 -0
  27. package/dist/{components → src/components}/Breakpoint/index.d.ts +0 -0
  28. package/dist/{components → src/components}/Button/Button.d.ts +0 -0
  29. package/dist/{components → src/components}/Button/Button.stories.d.ts +0 -0
  30. package/dist/{components → src/components}/Button/Button.test.d.ts +0 -0
  31. package/dist/{components → src/components}/Button/index.d.ts +0 -0
  32. package/dist/{components → src/components}/Checkbox/Checkbox.d.ts +2 -0
  33. package/dist/{components → src/components}/Checkbox/Checkbox.stories.d.ts +0 -0
  34. package/dist/{components → src/components}/Checkbox/Checkbox.test.d.ts +0 -0
  35. package/dist/{components → src/components}/Checkbox/index.d.ts +0 -0
  36. package/dist/{components → src/components}/Clickable/Clickable.d.ts +0 -0
  37. package/dist/{components → src/components}/Clickable/Clickable.stories.d.ts +0 -0
  38. package/dist/{components → src/components}/Clickable/Clickable.test.d.ts +0 -0
  39. package/dist/{components → src/components}/Clickable/index.d.ts +0 -0
  40. package/dist/{components → src/components}/ColorSwatch/ColorSwatch.d.ts +0 -0
  41. package/dist/{components → src/components}/ColorSwatch/ColorSwatch.stories.d.ts +0 -0
  42. package/dist/{components → src/components}/ColorSwatch/ColorSwatch.test.d.ts +0 -0
  43. package/dist/{components → src/components}/ColorSwatch/index.d.ts +0 -0
  44. package/dist/{components → src/components}/ColorSwatch/skuColors.d.ts +0 -0
  45. package/dist/{components → src/components}/Constrain/Constrain.d.ts +0 -0
  46. package/dist/{components → src/components}/Constrain/Constrain.stories.d.ts +0 -0
  47. package/dist/{components → src/components}/Constrain/Constrain.test.d.ts +0 -0
  48. package/dist/{components → src/components}/Constrain/ExceedConstrain.d.ts +0 -0
  49. package/dist/{components → src/components}/Constrain/ExceedConstrain.stories.d.ts +0 -0
  50. package/dist/{components → src/components}/Constrain/index.d.ts +0 -0
  51. package/dist/{components → src/components}/ControlLink/ControlLink.d.ts +0 -0
  52. package/dist/{components → src/components}/ControlLink/ControlLink.stories.d.ts +0 -0
  53. package/dist/{components → src/components}/ControlLink/ControlLink.test.d.ts +0 -0
  54. package/dist/{components → src/components}/ControlLink/index.d.ts +0 -0
  55. package/dist/{components → src/components}/CreditCardNumberInput/CreditCardNumberInput.d.ts +0 -0
  56. package/dist/{components → src/components}/CreditCardNumberInput/CreditCardNumberInput.stories.d.ts +0 -0
  57. package/dist/{components → src/components}/CreditCardNumberInput/CreditCardNumberInput.test.d.ts +0 -0
  58. package/dist/{components → src/components}/CreditCardNumberInput/CreditCardNumberInputField.d.ts +0 -0
  59. package/dist/{components → src/components}/CreditCardNumberInput/index.d.ts +0 -0
  60. package/dist/{components → src/components}/DefinitionList/DefinitionList.d.ts +0 -0
  61. package/dist/{components → src/components}/DefinitionList/DefinitionList.stories.d.ts +0 -0
  62. package/dist/{components → src/components}/DefinitionList/DefinitionList.test.d.ts +0 -0
  63. package/dist/{components → src/components}/DefinitionList/index.d.ts +0 -0
  64. package/dist/{components → src/components}/Divider/Divider.d.ts +0 -0
  65. package/dist/{components → src/components}/Divider/Divider.stories.d.ts +0 -0
  66. package/dist/{components → src/components}/Divider/Divider.test.d.ts +0 -0
  67. package/dist/{components → src/components}/Divider/NoLineDivider.d.ts +0 -0
  68. package/dist/{components → src/components}/Divider/TwoLineDivider.d.ts +0 -0
  69. package/dist/{components → src/components}/Divider/index.d.ts +0 -0
  70. package/dist/{components → src/components}/Expandable/Expandable.d.ts +0 -0
  71. package/dist/{components → src/components}/Expandable/Expandable.stories.d.ts +0 -0
  72. package/dist/{components → src/components}/Expandable/Expandable.test.d.ts +0 -0
  73. package/dist/{components → src/components}/Expandable/index.d.ts +0 -0
  74. package/dist/{components → src/components}/Field/Field.d.ts +0 -0
  75. package/dist/{components → src/components}/Field/Field.stories.d.ts +0 -0
  76. package/dist/{components → src/components}/Field/Field.test.d.ts +0 -0
  77. package/dist/{components → src/components}/Field/index.d.ts +0 -0
  78. package/dist/{components → src/components}/Label/Label.d.ts +0 -0
  79. package/dist/{components → src/components}/Label/Label.stories.d.ts +0 -0
  80. package/dist/{components → src/components}/Label/Label.test.d.ts +0 -0
  81. package/dist/{components → src/components}/Label/index.d.ts +0 -0
  82. package/dist/{components → src/components}/Loading/Loading.d.ts +0 -0
  83. package/dist/{components → src/components}/Loading/Loading.stories.d.ts +0 -0
  84. package/dist/{components → src/components}/Loading/Loading.test.d.ts +0 -0
  85. package/dist/{components → src/components}/Loading/index.d.ts +0 -0
  86. package/dist/{components → src/components}/LoadingBalls/LoadingBalls.d.ts +0 -0
  87. package/dist/{components → src/components}/LoadingBalls/LoadingBalls.stories.d.ts +0 -0
  88. package/dist/{components → src/components}/LoadingBalls/index.d.ts +0 -0
  89. package/dist/{components → src/components}/Modal/Modal.d.ts +0 -0
  90. package/dist/{components → src/components}/Modal/Modal.stories.d.ts +0 -0
  91. package/dist/{components → src/components}/Modal/Modal.test.d.ts +0 -0
  92. package/dist/{components → src/components}/Modal/index.d.ts +0 -0
  93. package/dist/{components → src/components}/ModalOverlay/ModalOverlay.d.ts +0 -0
  94. package/dist/{components → src/components}/ModalOverlay/ModalOverlay.stories.d.ts +0 -0
  95. package/dist/{components → src/components}/ModalOverlay/ModalOverlay.test.d.ts +0 -0
  96. package/dist/{components → src/components}/ModalOverlay/index.d.ts +0 -0
  97. package/dist/{components → src/components}/Overlay/Overlay.d.ts +0 -0
  98. package/dist/{components → src/components}/Overlay/Overlay.stories.d.ts +0 -0
  99. package/dist/{components → src/components}/Overlay/Overlay.test.d.ts +0 -0
  100. package/dist/{components → src/components}/Overlay/index.d.ts +0 -0
  101. package/dist/{components → src/components}/Paginator/Paginator.d.ts +0 -0
  102. package/dist/{components → src/components}/Paginator/Paginator.stories.d.ts +0 -0
  103. package/dist/{components → src/components}/Paginator/index.d.ts +0 -0
  104. package/dist/{components → src/components}/PasswordInput/PasswordInput.d.ts +0 -0
  105. package/dist/{components → src/components}/PasswordInput/PasswordInput.stories.d.ts +0 -0
  106. package/dist/{components → src/components}/PasswordInput/index.d.ts +0 -0
  107. package/dist/{components → src/components}/Popover/Popover.d.ts +0 -0
  108. package/dist/{components → src/components}/Popover/Popover.stories.d.ts +0 -0
  109. package/dist/{components → src/components}/Popover/Popover.test.d.ts +0 -0
  110. package/dist/{components → src/components}/Popover/index.d.ts +0 -0
  111. package/dist/{components → src/components}/PromoBanner/PromoBanner.d.ts +0 -0
  112. package/dist/{components → src/components}/PromoBanner/PromoBanner.stories.d.ts +0 -0
  113. package/dist/{components → src/components}/PromoBanner/PromoBanner.test.d.ts +0 -0
  114. package/dist/{components → src/components}/PromoBanner/index.d.ts +0 -0
  115. package/dist/{components → src/components}/RadioButton/RadioButton.d.ts +0 -0
  116. package/dist/{components → src/components}/RadioButton/RadioButton.stories.d.ts +0 -0
  117. package/dist/{components → src/components}/RadioButton/RadioButton.test.d.ts +0 -0
  118. package/dist/{components → src/components}/RadioButton/index.d.ts +0 -0
  119. package/dist/{components → src/components}/SearchInput/SearchInput.d.ts +0 -0
  120. package/dist/{components → src/components}/SearchInput/SearchInput.stories.d.ts +0 -0
  121. package/dist/{components → src/components}/SearchInput/SearchInput.test.d.ts +0 -0
  122. package/dist/{components → src/components}/SearchInput/index.d.ts +0 -0
  123. package/dist/{components → src/components}/Select/MultiSelect.d.ts +0 -0
  124. package/dist/{components → src/components}/Select/Select.d.ts +0 -0
  125. package/dist/{components → src/components}/Select/Select.stories.d.ts +0 -0
  126. package/dist/{components → src/components}/Select/Select.test.d.ts +0 -0
  127. package/dist/{components → src/components}/Select/SelectLabel.d.ts +0 -0
  128. package/dist/{components → src/components}/Select/SelectOption.d.ts +0 -0
  129. package/dist/{components → src/components}/Select/SelectOptions.d.ts +0 -0
  130. package/dist/{components → src/components}/Select/index.d.ts +0 -0
  131. package/dist/{components → src/components}/Select/useSelect.d.ts +0 -0
  132. package/dist/{components → src/components}/SelectableButton/SelectableButton.d.ts +0 -0
  133. package/dist/{components → src/components}/SelectableButton/SelectableButton.stories.d.ts +0 -0
  134. package/dist/{components → src/components}/SelectableButton/SelectableButton.test.d.ts +0 -0
  135. package/dist/{components → src/components}/SelectableButton/index.d.ts +0 -0
  136. package/dist/{components → src/components}/Shape/ArcWindow.d.ts +0 -0
  137. package/dist/{components → src/components}/Shape/Bradley.d.ts +0 -0
  138. package/dist/{components → src/components}/Shape/Brancusi.d.ts +0 -0
  139. package/dist/{components → src/components}/Shape/Circle.d.ts +0 -0
  140. package/dist/{components → src/components}/Shape/Diamond.d.ts +0 -0
  141. package/dist/{components → src/components}/Shape/Keyhole.d.ts +0 -0
  142. package/dist/{components → src/components}/Shape/Mirror.d.ts +0 -0
  143. package/dist/{components → src/components}/Shape/Oval.d.ts +0 -0
  144. package/dist/{components → src/components}/Shape/Shape.d.ts +0 -0
  145. package/dist/{components → src/components}/Shape/Shape.stories.d.ts +0 -0
  146. package/dist/{components → src/components}/Shape/Triangle.d.ts +0 -0
  147. package/dist/{components → src/components}/Shape/Window.d.ts +0 -0
  148. package/dist/{components → src/components}/Shape/index.d.ts +0 -0
  149. package/dist/{components → src/components}/Stack/Stack.d.ts +0 -0
  150. package/dist/{components → src/components}/Stack/Stack.stories.d.ts +0 -0
  151. package/dist/{components → src/components}/Stack/Stack.test.d.ts +0 -0
  152. package/dist/{components → src/components}/Stack/index.d.ts +0 -0
  153. package/dist/{components → src/components}/Tabs/Tab.d.ts +0 -0
  154. package/dist/{components → src/components}/Tabs/TabList.d.ts +0 -0
  155. package/dist/{components → src/components}/Tabs/TabPanel.d.ts +0 -0
  156. package/dist/{components → src/components}/Tabs/TabPanels.d.ts +0 -0
  157. package/dist/{components → src/components}/Tabs/Tabs.d.ts +0 -0
  158. package/dist/{components → src/components}/Tabs/Tabs.stories.d.ts +0 -0
  159. package/dist/{components → src/components}/Tabs/Tabs.test.d.ts +0 -0
  160. package/dist/{components → src/components}/Tabs/index.d.ts +0 -0
  161. package/dist/{components → src/components}/Tag/Tag.d.ts +0 -0
  162. package/dist/{components → src/components}/Tag/Tag.stories.d.ts +0 -0
  163. package/dist/{components → src/components}/Tag/Tag.test.d.ts +0 -0
  164. package/dist/{components → src/components}/Tag/index.d.ts +0 -0
  165. package/dist/{components → src/components}/Text/Text.d.ts +0 -0
  166. package/dist/{components → src/components}/Text/Text.stories.d.ts +0 -0
  167. package/dist/{components → src/components}/Text/Text.test.d.ts +0 -0
  168. package/dist/{components → src/components}/Text/index.d.ts +0 -0
  169. package/dist/{components → src/components}/TextInput/TextInput.d.ts +0 -0
  170. package/dist/{components → src/components}/TextInput/TextInput.stories.d.ts +0 -0
  171. package/dist/{components → src/components}/TextInput/TextInput.test.d.ts +0 -0
  172. package/dist/{components → src/components}/TextInput/index.d.ts +0 -0
  173. package/dist/{components → src/components}/Textarea/Textarea.d.ts +0 -0
  174. package/dist/{components → src/components}/Textarea/Textarea.stories.d.ts +0 -0
  175. package/dist/{components → src/components}/Textarea/Textarea.test.d.ts +0 -0
  176. package/dist/{components → src/components}/Textarea/index.d.ts +0 -0
  177. package/dist/{components → src/components}/Toast/Toast.d.ts +0 -0
  178. package/dist/{components → src/components}/Toast/Toast.stories.d.ts +0 -0
  179. package/dist/{components → src/components}/Toast/Toast.test.d.ts +0 -0
  180. package/dist/{components → src/components}/Toast/index.d.ts +0 -0
  181. package/dist/{components → src/components}/VerticalDivider/VerticalDivider.d.ts +0 -0
  182. package/dist/{components → src/components}/VerticalDivider/VerticalDivider.stories.d.ts +0 -0
  183. package/dist/{components → src/components}/VerticalDivider/VerticalDivider.test.d.ts +0 -0
  184. package/dist/{components → src/components}/VerticalDivider/index.d.ts +0 -0
  185. package/dist/{components → src/components}/index.d.ts +0 -0
  186. package/dist/{hooks → src/hooks}/index.d.ts +0 -0
  187. package/dist/{hooks → src/hooks}/useBreakpoint.d.ts +0 -0
  188. package/dist/{hooks → src/hooks}/useClickOutside.d.ts +0 -0
  189. package/dist/{hooks → src/hooks}/useKeyboardListNavigation.d.ts +0 -0
  190. package/dist/{hooks → src/hooks}/useKeyboardListNavigation.spec.d.ts +0 -0
  191. package/dist/{hooks → src/hooks}/useUpdateEffect.d.ts +0 -0
  192. package/dist/{index.d.ts → src/index.d.ts} +0 -0
  193. package/dist/{mixins → src/mixins}/font-smoothing/font-smoothing.stories.d.ts +0 -0
  194. package/dist/{mixins → src/mixins}/overflow-scroll/overflow-scroll.stories.d.ts +0 -0
  195. package/dist/{mixins → src/mixins}/stack/stack.stories.d.ts +0 -0
  196. package/dist/{mixins → src/mixins}/thin-underline/thin-underline.stories.d.ts +0 -0
  197. package/dist/{mixins → src/mixins}/visually-hidden/visually-hidden.stories.d.ts +0 -0
  198. package/dist/{utilities → src/utilities}/States/State.d.ts +0 -0
  199. package/dist/{utilities → src/utilities}/States/States.d.ts +0 -0
  200. package/dist/{utilities → src/utilities}/States/StatesProps.d.ts +0 -0
  201. package/dist/{utilities → src/utilities}/States/index.d.ts +0 -0
  202. package/dist/{utilities → src/utilities}/States/isRenderProps.d.ts +0 -0
  203. package/dist/{utilities → src/utilities}/States/stringifyProps.d.ts +0 -0
  204. package/dist/{utilities → src/utilities}/index.d.ts +0 -0
  205. package/dist/{utilities → src/utilities}/omit.d.ts +0 -0
  206. package/dist/{utilities → src/utilities}/sample.d.ts +0 -0
  207. package/dist/styles.css +1 -1
  208. package/dist/test/mocks/matchMedia.d.ts +1 -0
  209. package/dist/test/setupTests.d.ts +3 -0
  210. package/package.json +20 -19
  211. package/src/components/AspectRatioBox/AspectRatioBox.test.tsx +3 -3
  212. package/src/components/Badge/Badge.test.tsx +5 -12
  213. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +5 -5
  214. package/src/components/Breakpoint/Breakpoint.test.tsx +7 -8
  215. package/src/components/Button/Button.test.tsx +14 -3
  216. package/src/components/Checkbox/Checkbox.scss +4 -14
  217. package/src/components/Checkbox/Checkbox.stories.tsx +2 -0
  218. package/src/components/Checkbox/Checkbox.test.tsx +10 -12
  219. package/src/components/Checkbox/Checkbox.tsx +22 -4
  220. package/src/components/Clickable/Clickable.test.tsx +3 -3
  221. package/src/components/ColorSwatch/ColorSwatch.test.tsx +3 -5
  222. package/src/components/Constrain/Constrain.test.tsx +4 -4
  223. package/src/components/ControlLink/ControlLink.test.tsx +10 -12
  224. package/src/components/CreditCardNumberInput/CreditCardNumberInput.test.tsx +16 -16
  225. package/src/components/DefinitionList/DefinitionList.test.tsx +4 -3
  226. package/src/components/Divider/Divider.test.tsx +5 -4
  227. package/src/components/Expandable/Expandable.test.tsx +17 -6
  228. package/src/components/Field/Field.test.tsx +21 -30
  229. package/src/components/Label/Label.test.tsx +3 -3
  230. package/src/components/Loading/Loading.test.tsx +3 -5
  231. package/src/components/Modal/Modal.test.tsx +6 -7
  232. package/src/components/ModalOverlay/ModalOverlay.test.tsx +9 -9
  233. package/src/components/Overlay/Overlay.test.tsx +3 -3
  234. package/src/components/Popover/Popover.test.tsx +9 -6
  235. package/src/components/PromoBanner/PromoBanner.test.tsx +3 -3
  236. package/src/components/RadioButton/RadioButton.test.tsx +6 -10
  237. package/src/components/SearchInput/SearchInput.test.tsx +10 -6
  238. package/src/components/Select/Select.stories.tsx +2 -1
  239. package/src/components/Select/Select.test.tsx +8 -8
  240. package/src/components/Select/Select.tsx +6 -1
  241. package/src/components/SelectableButton/SelectableButton.test.tsx +3 -3
  242. package/src/components/Stack/Stack.test.tsx +6 -4
  243. package/src/components/Tabs/Tabs.test.tsx +4 -5
  244. package/src/components/Tag/Tag.test.tsx +1 -1
  245. package/src/components/Text/Text.test.tsx +3 -5
  246. package/src/components/TextInput/TextInput.test.tsx +4 -5
  247. package/src/components/Textarea/Textarea.test.tsx +10 -15
  248. package/src/components/Toast/Toast.test.tsx +1 -1
  249. package/src/components/VerticalDivider/VerticalDivider.test.tsx +6 -7
  250. package/src/hooks/useKeyboardListNavigation.spec.ts +24 -63
@@ -1,27 +1,25 @@
1
1
  import React from 'react';
2
- import { shallow } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
3
 
4
4
  import { ControlLink } from './ControlLink';
5
5
 
6
6
  describe('ControlLink', () => {
7
7
  it('renders correctly', () => {
8
- const component = shallow(<ControlLink> click me! </ControlLink>);
9
- expect(component.html()).toEqual(
10
- '<button class="Clickable ControlLink ControlLink--underlined"> click me! </button>'
11
- );
8
+ render(<ControlLink> click me! </ControlLink>);
9
+ expect(screen.getByRole('button', { name: 'click me!' })).toBeVisible();
10
+ expect(screen.getByRole('button', { name: 'click me!' })).toBeEnabled();
12
11
  });
13
12
 
14
13
  it('renders correctly while disabled', () => {
15
- const component = shallow(<ControlLink disabled> do not click me! </ControlLink>);
16
- expect(component.html()).toEqual(
17
- '<button class="Clickable Clickable--disabled ControlLink ControlLink--underlined ControlLink--disabled" disabled=""> do not click me! </button>'
18
- );
14
+ render(<ControlLink disabled> do not click me! </ControlLink>);
15
+ expect(screen.getByRole('button', { name: 'do not click me!' })).toBeDisabled();
19
16
  });
20
17
 
21
18
  it('renders correctly while underlined', () => {
22
- const component = shallow(<ControlLink underlined> click me! </ControlLink>);
23
- expect(component.html()).toEqual(
24
- '<button class="Clickable ControlLink ControlLink--underlined"> click me! </button>'
19
+ render(<ControlLink underlined> click me! </ControlLink>);
20
+ expect(screen.getByRole('button', { name: 'click me!' })).toBeVisible();
21
+ expect(screen.getByRole('button', { name: 'click me!' })).toHaveClass(
22
+ 'ControlLink--underlined'
25
23
  );
26
24
  });
27
25
  });
@@ -1,41 +1,41 @@
1
1
  import React from 'react';
2
- import { render } from '@testing-library/react';
2
+ import { render, screen } from '@testing-library/react';
3
3
  import userEvent from '@testing-library/user-event';
4
4
  import { CreditCardNumberInput } from './CreditCardNumberInput';
5
5
 
6
6
  describe('credit card number input', () => {
7
7
  it('renders without errors', () => {
8
- const { getByLabelText } = render(<CreditCardNumberInput label='Card Number' />);
9
- const input = getByLabelText('Card Number');
10
- expect(input).toBeTruthy();
8
+ render(<CreditCardNumberInput label='Card Number' />);
9
+ const input = screen.getByLabelText('Card Number');
10
+ expect(input).toBeInTheDocument();
11
11
  });
12
12
 
13
13
  // TODO: userEvent.type does not work here for some reason
14
- xit('does not allow non-numeric characters', () => {
15
- const { getByLabelText } = render(<CreditCardNumberInput label='Card Number' />);
16
- const input = getByLabelText('Card Number') as HTMLInputElement;
14
+ xit('does not allow non-numeric characters', async () => {
15
+ render(<CreditCardNumberInput label='Card Number' />);
16
+ const input = screen.getByLabelText('Card Number') as HTMLInputElement;
17
17
 
18
- userEvent.type(input, 'foo1234');
18
+ await userEvent.type(input, 'foo1234');
19
19
 
20
20
  expect(input.value).toBe('1234 ____ ____ ____');
21
21
  });
22
22
 
23
23
  // TODO: userEvent.type does not work here for some reason
24
- xit('puts spaces between the numbers', () => {
25
- const { getByLabelText } = render(<CreditCardNumberInput label='Card Number' />);
26
- const input = getByLabelText('Card Number') as HTMLInputElement;
24
+ xit('puts spaces between the numbers', async () => {
25
+ render(<CreditCardNumberInput label='Card Number' />);
26
+ const input = screen.getByLabelText('Card Number') as HTMLInputElement;
27
27
 
28
- userEvent.type(input, '5510000000000000');
28
+ await userEvent.type(input, '5510000000000000');
29
29
 
30
30
  expect(input.value).toBe('5510 0000 0000 0000');
31
31
  });
32
32
 
33
33
  // TODO: userEvent.type does not work here for some reason
34
- xit('does not allow more characters than required', () => {
35
- const { getByLabelText } = render(<CreditCardNumberInput label='Card Number' />);
36
- const input = getByLabelText('Card Number') as HTMLInputElement;
34
+ xit('does not allow more characters than required', async () => {
35
+ render(<CreditCardNumberInput label='Card Number' />);
36
+ const input = screen.getByLabelText('Card Number') as HTMLInputElement;
37
37
 
38
- userEvent.type(input, '5510000000000000251');
38
+ await userEvent.type(input, '5510000000000000251');
39
39
 
40
40
  expect(input.value).toBe('5510 0000 0000 0000');
41
41
  });
@@ -1,11 +1,12 @@
1
1
  import React from 'react';
2
- import { shallow } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
3
 
4
4
  import { DefinitionList } from './DefinitionList';
5
5
 
6
6
  describe('DefinitionList', () => {
7
7
  it('renders correctly', () => {
8
- const component = shallow(<DefinitionList term='Foo'>Bar</DefinitionList>);
9
- expect(component.text()).toEqual('FooBar');
8
+ render(<DefinitionList term='Foo'>Bar</DefinitionList>);
9
+ expect(screen.getByText('Foo')).toBeVisible();
10
+ expect(screen.getByText('Bar')).toBeVisible();
10
11
  });
11
12
  });
@@ -1,12 +1,13 @@
1
1
  import React from 'react';
2
- import { mount } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
3
 
4
4
  import { Divider } from './Divider';
5
5
 
6
6
  describe('Divider', () => {
7
7
  it('renders correctly', () => {
8
- const component = mount(<Divider style={{ padding: '30px 0' }} text='Hello' />);
9
- expect(component.text()).toEqual('Hello');
10
- expect(component.html()).toContain('style="padding: 30px 0px;"');
8
+ render(<Divider style={{ padding: '30px 0' }} text='Hello' />);
9
+ expect(screen.getByText('Hello')).toBeVisible();
10
+ // eslint-disable-next-line testing-library/no-node-access
11
+ expect(screen.getByText('Hello').parentNode).toHaveStyle('padding: 30px 0px;');
11
12
  });
12
13
  });
@@ -1,13 +1,24 @@
1
1
  import React from 'react';
2
- import { mount } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
+ import userEvent from '@testing-library/user-event';
3
4
 
4
5
  import { Expandable } from './Expandable';
5
6
 
6
7
  describe('Expandable', () => {
7
- it('expands when clicked', () => {
8
- const component = mount(<Expandable name='Hello'>Goodbye</Expandable>);
9
- expect(component.html()).not.toContain('expanded');
10
- component.find('button').simulate('click');
11
- expect(component.html()).toContain('expanded');
8
+ it('expands when clicked', async () => {
9
+ const user = userEvent.setup();
10
+
11
+ render(
12
+ <Expandable virtual name='Hello'>
13
+ Goodbye
14
+ </Expandable>
15
+ );
16
+
17
+ expect(screen.getByText('Hello')).toBeVisible();
18
+ expect(screen.queryByText('Goodbye')).not.toBeInTheDocument();
19
+
20
+ await user.click(screen.getByRole('button'));
21
+
22
+ expect(screen.getByText('Goodbye')).toBeVisible();
12
23
  });
13
24
  });
@@ -1,75 +1,66 @@
1
1
  import React from 'react';
2
- import { shallow } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
3
 
4
4
  import { Field } from './Field';
5
5
  import { Select } from '../Select';
6
6
 
7
7
  describe('Field', () => {
8
8
  it('renders correctly', () => {
9
- const component = shallow(<Field placeholder='Placeholder' defaultValue='Hello' />);
9
+ render(<Field placeholder='Placeholder' defaultValue='Hello' />);
10
10
 
11
- expect(component.html()).toEqual(
12
- '<label class="Field"><span class="Field__context"><input class="TextInput" placeholder="Placeholder" aria-label="Placeholder" value="Hello"/></span></label>'
13
- );
11
+ expect(screen.getByRole('textbox')).toBeVisible();
12
+ expect(screen.getByRole('textbox')).toHaveAttribute('placeholder', 'Placeholder');
14
13
  });
15
14
 
16
15
  it('renders with a label', () => {
17
- const component = shallow(
18
- <Field placeholder='Placeholder' defaultValue='Hello' label='Label' />
19
- );
16
+ render(<Field placeholder='Placeholder' defaultValue='Hello' label='Label' />);
20
17
 
21
- expect(component.html()).toEqual(
22
- '<label class="Field"><span class="Field__label">Label</span><span class="Field__context"><input class="TextInput" placeholder="Placeholder" aria-label="Label" value="Hello"/></span></label>'
23
- );
18
+ expect(screen.getByRole('textbox')).toBeVisible();
19
+ expect(screen.getByRole('textbox')).toHaveAttribute('placeholder', 'Placeholder');
20
+ expect(screen.getByText('Label')).toBeVisible();
24
21
  });
25
22
 
26
23
  it('renders with an error', () => {
27
- const component = shallow(
28
- <Field placeholder='Placeholder' defaultValue='Hello' label='Label' error='Error' />
29
- );
24
+ render(<Field placeholder='Placeholder' defaultValue='Hello' label='Label' error='Error' />);
30
25
 
31
- expect(component.html()).toEqual(
32
- '<label class="Field"><span class="Field__label">Label</span><span class="Field__context"><input class="TextInput TextInput--error" placeholder="Placeholder" aria-label="Label" value="Hello"/><span class="Field__icon"></span></span><span class="Field__error">Error</span></label>'
33
- );
26
+ expect(screen.getByRole('textbox')).toBeVisible();
27
+ expect(screen.getByRole('textbox')).toHaveClass('TextInput--error');
28
+ expect(screen.getByText('Error')).toBeVisible();
34
29
  });
35
30
 
36
- it('renders with an error when children is <Select/>', () => {
31
+ it('renders with <Select/> child', () => {
37
32
  const options = [
38
33
  { value: 'foo', label: 'Foo' },
39
34
  { value: 'bar', label: 'Bar' },
40
35
  { value: 'baz', label: 'Baz', disabled: true }
41
36
  ];
42
37
 
43
- const component = shallow(
38
+ render(
44
39
  <Field>
45
40
  <Select idRef='1' name='name-1' label='Sort by' options={options} />
46
41
  </Field>
47
42
  );
48
43
 
49
- expect(component.html()).toEqual(
50
- '<label class="Field"><span class="Field__context"><div id="Select--1" class="Select"><input id="1" name="name-1" type="hidden"/><button id="Select__value--1" aria-haspopup="listbox" aria-expanded="false" aria-labelledby="Select__label--1 Select__value--1" type="button" title="Select" class="Clickable Select__value"><label id="Select__label--1">Sort by</label><span class="Select__icon"></span></button></div></span></label>'
51
- );
44
+ expect(screen.getByRole('button', { name: /Sort by/ })).toBeVisible();
52
45
  });
53
46
 
54
47
  it('renders with a className', () => {
55
- const component = shallow(
48
+ render(
56
49
  <Field className='Custom' placeholder='Placeholder' defaultValue='Hello' label='Label' />
57
50
  );
58
51
 
59
- expect(component.html()).toEqual(
60
- '<label class="Field Custom"><span class="Field__label">Label</span><span class="Field__context"><input class="TextInput" placeholder="Placeholder" aria-label="Label" value="Hello"/></span></label>'
61
- );
52
+ expect(screen.getByRole('textbox')).toBeVisible();
53
+ // eslint-disable-next-line testing-library/no-node-access
54
+ expect(screen.getByRole('textbox').parentNode?.parentNode).toHaveClass('Custom');
62
55
  });
63
56
 
64
57
  it('supports custom children', () => {
65
- const component = shallow(
58
+ render(
66
59
  <Field placeholder='Placeholder' defaultValue='Hello' label='Label'>
67
60
  <textarea />
68
61
  </Field>
69
62
  );
70
63
 
71
- expect(component.html()).toEqual(
72
- '<label class="Field"><span class="Field__label">Label</span><span class="Field__context"><textarea placeholder="Placeholder" label="Label">Hello</textarea></span></label>'
73
- );
64
+ expect(screen.getByRole('textbox')).toBeVisible();
74
65
  });
75
66
  });
@@ -1,11 +1,11 @@
1
1
  import React from 'react';
2
- import { shallow } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
3
 
4
4
  import { Label } from './Label';
5
5
 
6
6
  describe('Label', () => {
7
7
  it('renders correctly', () => {
8
- const component = shallow(<Label>Hello</Label>);
9
- expect(component.text()).toEqual('Hello');
8
+ render(<Label>Hello</Label>);
9
+ expect(screen.getByText('Hello')).toBeVisible();
10
10
  });
11
11
  });
@@ -1,13 +1,11 @@
1
1
  import React from 'react';
2
- import { shallow } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
3
 
4
4
  import { Loading } from './Loading';
5
5
 
6
6
  describe('Loading', () => {
7
7
  it('renders correctly', () => {
8
- const component = shallow(<Loading />);
9
- expect(component.html()).toEqual(
10
- '<div class="Loading"><svg class="Triangle" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.9986 0L0 24H24L11.9986 0Z" fill="#D56B27"></path></svg></div>'
11
- );
8
+ render(<Loading aria-label='Loading' />);
9
+ expect(screen.getByLabelText('Loading')).toBeVisible();
12
10
  });
13
11
  });
@@ -1,28 +1,27 @@
1
1
  import React from 'react';
2
- import { render } from '@testing-library/react';
2
+ import { render, screen } from '@testing-library/react';
3
3
  import userEvent from '@testing-library/user-event';
4
- import { shallow } from 'enzyme';
5
4
 
6
5
  import { Modal } from './Modal';
7
6
 
8
7
  describe('Modal', () => {
9
8
  it('renders correctly', () => {
10
- const component = shallow(<Modal onClose={() => {}}>Hello</Modal>);
11
- expect(component.text()).toEqual('Hello');
9
+ render(<Modal onClose={() => {}}>Hello</Modal>);
10
+ expect(screen.getByText('Hello')).toBeVisible();
12
11
  });
13
12
 
14
13
  it('should only close when the modal wrapper is clicked', async () => {
15
14
  const onClose = jest.fn();
16
15
  const onClickButton = jest.fn();
17
- const { getByTestId } = render(
16
+ render(
18
17
  <Modal data-testid='modal' onClose={onClose}>
19
18
  <button data-testid='button' onClick={onClickButton}>
20
19
  Click Me
21
20
  </button>
22
21
  </Modal>
23
22
  );
24
- const modal = getByTestId('modal');
25
- const button = getByTestId('button');
23
+ const modal = screen.getByTestId('modal');
24
+ const button = screen.getByTestId('button');
26
25
 
27
26
  await userEvent.click(button);
28
27
  expect(onClose).toBeCalledTimes(0);
@@ -1,5 +1,5 @@
1
1
  import React, { useState } from 'react';
2
- import { render, waitFor } from '@testing-library/react';
2
+ import { render, screen, waitFor } from '@testing-library/react';
3
3
  import userEvent from '@testing-library/user-event';
4
4
 
5
5
  import { ModalOverlay } from './ModalOverlay';
@@ -20,23 +20,23 @@ const ModalComponent: React.FC = () => {
20
20
 
21
21
  describe('ModalOverlay', () => {
22
22
  it('renders correctly', () => {
23
- const { queryByText } = render(<ModalOverlay onClose={() => {}}>Hello</ModalOverlay>);
23
+ render(<ModalOverlay onClose={() => {}}>Hello</ModalOverlay>);
24
24
 
25
- expect(queryByText('Hello')).not.toBeNull();
25
+ expect(screen.getByText('Hello')).toBeInTheDocument();
26
26
  });
27
27
 
28
28
  it('should open and close the modal', async () => {
29
- const { getByTestId, queryByText } = render(<ModalComponent />);
29
+ render(<ModalComponent />);
30
30
 
31
31
  // Should not show by default
32
- expect(queryByText('Modal Content')).toBeNull();
32
+ expect(screen.queryByText('Modal Content')).not.toBeInTheDocument();
33
33
 
34
34
  // Should show after clicking button
35
- userEvent.click(getByTestId('button'));
36
- await waitFor(() => expect(queryByText('Modal Content')).not.toBeNull());
35
+ userEvent.click(screen.getByTestId('button'));
36
+ await screen.findByText('Modal Content');
37
37
 
38
38
  // Should hide after clicking wrapper
39
- userEvent.click(getByTestId('modal'));
40
- await waitFor(() => expect(queryByText('Modal Content')).toBeNull());
39
+ userEvent.click(screen.getByTestId('modal'));
40
+ await waitFor(() => expect(screen.queryByText('Modal Content')).not.toBeInTheDocument());
41
41
  });
42
42
  });
@@ -1,12 +1,12 @@
1
1
  import React from 'react';
2
- import { shallow } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
3
 
4
4
  import { Overlay } from './Overlay';
5
5
 
6
6
  describe('Overlay', () => {
7
7
  it('renders correctly', () => {
8
8
  const text = 'test-Text';
9
- const component = shallow(<Overlay>{text}</Overlay>);
10
- expect(component.text()).toEqual(text);
9
+ render(<Overlay>{text}</Overlay>);
10
+ expect(screen.getByText(text)).toBeVisible();
11
11
  });
12
12
  });
@@ -1,18 +1,21 @@
1
1
  import React from 'react';
2
- import { mount } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
+ import userEvent from '@testing-library/user-event';
3
4
 
4
5
  import { Popover } from './Popover';
5
6
 
6
7
  describe('Popover', () => {
7
- it('renders correctly', () => {
8
- const component = mount(
8
+ it('renders correctly', async () => {
9
+ render(
9
10
  <Popover content={<div>Secret</div>}>
10
11
  <span>Hover</span>
11
12
  </Popover>
12
13
  );
13
14
 
14
- expect(component.html()).not.toContain('Secret');
15
- component.simulate('mouseenter');
16
- expect(component.html()).toContain('Secret');
15
+ expect(screen.queryByText('Secret')).not.toBeInTheDocument();
16
+
17
+ await userEvent.hover(screen.getByText('Hover'));
18
+
19
+ expect(screen.getByText('Secret')).toBeVisible();
17
20
  });
18
21
  });
@@ -1,15 +1,15 @@
1
1
  import React from 'react';
2
- import { mount } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
3
 
4
4
  import { PromoBanner } from './PromoBanner';
5
5
 
6
6
  describe('PromoBanner', () => {
7
7
  it('renders correctly', () => {
8
- const component = mount(
8
+ render(
9
9
  <PromoBanner>
10
10
  <span>Hello</span>
11
11
  </PromoBanner>
12
12
  );
13
- expect(component.text()).toEqual('Hello');
13
+ expect(screen.getByText('Hello')).toBeVisible();
14
14
  });
15
15
  });
@@ -1,20 +1,16 @@
1
1
  import React from 'react';
2
- import { mount } from 'enzyme';
3
-
2
+ import { render, screen } from '@testing-library/react';
4
3
  import { RadioButton } from './RadioButton';
5
4
 
6
5
  describe('RadioButton', () => {
7
6
  it('renders correctly', () => {
8
- const component = mount(<RadioButton />);
9
- expect(component.html()).toEqual(
10
- '<label tabindex="0" class="RadioButton"><span tabindex="-1" class="RadioButton__indicator RadioButton__indicator--unchecked"></span><input tabindex="-1" class="RadioButton__input" type="radio" role="radio" value=""></label>'
11
- );
7
+ render(<RadioButton />);
8
+ expect(screen.getByRole('radio')).toBeVisible();
12
9
  });
13
10
 
14
11
  it('supports checked', () => {
15
- const component = mount(<RadioButton checked readOnly />);
16
- const html = component.html();
17
- expect(html).toContain('class="RadioButton RadioButton--checked"');
18
- expect(html).toContain('readonly="" value="" checked=""');
12
+ render(<RadioButton checked readOnly />);
13
+ expect(screen.getByRole('radio')).toBeVisible();
14
+ expect(screen.getByRole('radio')).toBeChecked();
19
15
  });
20
16
  });
@@ -1,13 +1,17 @@
1
1
  import React from 'react';
2
- import { mount } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
+ import userEvent from '@testing-library/user-event';
3
4
 
4
5
  import { SearchInput } from './SearchInput';
5
6
 
6
7
  describe('SearchInput', () => {
7
- it('clears the input when the button is clicked', () => {
8
- const component = mount(<SearchInput value='Hello' />);
9
- expect(component.find('input').getElement().props.value).toEqual('Hello');
10
- component.find('button').simulate('click');
11
- expect(component.find('input').getElement().props.value).not.toEqual('Hello');
8
+ it('clears the input when the button is clicked', async () => {
9
+ render(<SearchInput value='Hello' />);
10
+
11
+ expect(screen.getByRole('textbox')).toHaveValue('Hello');
12
+
13
+ await userEvent.click(screen.getByRole('button'));
14
+
15
+ expect(screen.getByRole('textbox')).toHaveValue('');
12
16
  });
13
17
  });
@@ -34,7 +34,8 @@ export const Default = () => (
34
34
  { disabled: true, idRef: '4', label: 'Sort' },
35
35
  { idRef: '5', label: '' },
36
36
  { idRef: '5', label: '', error: 'Error' },
37
- { idRef: '6', label: '', dropDirection: 'up' }
37
+ { idRef: '6', label: '', dropDirection: 'up' },
38
+ { idRef: '7', label: undefined, placeholder: 'Placeholder' }
38
39
  ]}
39
40
  >
40
41
  <Select label='Sort by' options={OPTIONS} onChange={action('onChange')} />
@@ -24,7 +24,7 @@ describe('Select', () => {
24
24
  const { container } = render(
25
25
  <Select idRef='1' name='name-1' label='Sort by' options={options} />
26
26
  );
27
- const button = container.querySelector('#Select__value--1')!;
27
+ const button = screen.getByRole('button', { name: /Sort by/ });
28
28
  await userEvent.click(button);
29
29
  expect(container.innerHTML).toEqual(
30
30
  '<div id="Select--1" class="Select"><input id="1" name="name-1" type="hidden" value=""><button id="Select__value--1" aria-haspopup="listbox" aria-expanded="true" aria-labelledby="Select__label--1 Select__value--1" type="button" title="Select" class="Clickable Select__value"><label id="Select__label--1">Sort by</label><span class="Select__icon"></span></button><div class="SelectOptions Select__options Select__options--down"><ul class="SelectOptions__list" tabindex="-1" role="listbox" aria-labelledby="Select__label--1" aria-activedescendant="SelectOption--foo-1"><li class="SelectOption SelectOption--active" aria-label="Foo" aria-selected="false" role="option">Foo</li><li class="SelectOption" aria-label="Bar" aria-selected="false" role="option">Bar</li><li class="SelectOption SelectOption--disabled" aria-label="Baz" aria-selected="false" role="option">Baz</li></ul></div></div>'
@@ -42,7 +42,7 @@ describe('Select', () => {
42
42
  options={options}
43
43
  />
44
44
  );
45
- const button = container.querySelector('#Select__value--1')!;
45
+ const button = screen.getByRole('button', { name: /Sort by/ });
46
46
  await userEvent.click(button);
47
47
  expect(container.innerHTML).toEqual(
48
48
  '<div id="Select--1" class="Select Select--disabled"><input id="1" name="name-1" type="hidden" value=""><button id="Select__value--1" aria-haspopup="listbox" aria-expanded="false" aria-labelledby="Select__label--1 Select__value--1" type="button" title="Select" class="Clickable Clickable--disabled Select__value" disabled=""><label id="Select__label--1">Sort by</label><span class="Select__icon"></span></button></div>'
@@ -51,7 +51,7 @@ describe('Select', () => {
51
51
 
52
52
  it('calls onChange when selecting an option', async () => {
53
53
  const onChange = jest.fn();
54
- const { container } = render(
54
+ render(
55
55
  <Select
56
56
  defaultValue={undefined}
57
57
  idRef='1'
@@ -61,7 +61,7 @@ describe('Select', () => {
61
61
  onChange={onChange}
62
62
  />
63
63
  );
64
- const button = container.querySelector('#Select__value--1')!;
64
+ const button = screen.getByRole('button', { name: /Sort by/ });
65
65
  await userEvent.click(button);
66
66
  const option = screen.getByLabelText('Bar');
67
67
  await userEvent.click(option);
@@ -70,7 +70,7 @@ describe('Select', () => {
70
70
 
71
71
  it('does not call onChange when selecting a disabled option', async () => {
72
72
  const onChange = jest.fn();
73
- const { container } = render(
73
+ render(
74
74
  <Select
75
75
  defaultValue={undefined}
76
76
  idRef='1'
@@ -80,7 +80,7 @@ describe('Select', () => {
80
80
  onChange={onChange}
81
81
  />
82
82
  );
83
- const button = container.querySelector('#Select__value--1')!;
83
+ const button = screen.getByRole('button', { name: /Sort by/ });
84
84
  await userEvent.click(button);
85
85
  const option = screen.getByLabelText('Baz');
86
86
  await userEvent.click(option);
@@ -91,7 +91,7 @@ describe('Select', () => {
91
91
  const { container } = render(
92
92
  <Select idRef='1' name='name-1' label='Sort by' options={options} />
93
93
  );
94
- const button = container.querySelector('#Select__value--1')!;
94
+ const button = screen.getByRole('button', { name: /Sort by/ });
95
95
  await userEvent.click(button);
96
96
  const option = screen.getByLabelText('Bar');
97
97
  await userEvent.click(option);
@@ -102,7 +102,7 @@ describe('Select', () => {
102
102
 
103
103
  it('renders correctly when there is no label', async () => {
104
104
  const { container } = render(<Select idRef='1' name='name-1' options={options} />);
105
- const button = container.querySelector('#Select__value--1')!;
105
+ const button = screen.getByRole('button', { name: 'Select' });
106
106
  await userEvent.click(button);
107
107
  const option = screen.getByLabelText('Bar');
108
108
  await userEvent.click(option);
@@ -44,6 +44,7 @@ export const Select: React.FC<SelectProps> = ({
44
44
  name,
45
45
  onChange,
46
46
  options,
47
+ placeholder,
47
48
  searchable,
48
49
  shiftIconLeftwards = false,
49
50
  value,
@@ -116,7 +117,11 @@ export const Select: React.FC<SelectProps> = ({
116
117
  type='button'
117
118
  title='Select'
118
119
  >
119
- <SelectLabel idRef={idRef} label={label} hasValue={focused != null || selected != null} />
120
+ <SelectLabel
121
+ idRef={idRef}
122
+ label={label || (selected === undefined ? placeholder : undefined)}
123
+ hasValue={focused != null || selected != null}
124
+ />
120
125
 
121
126
  {(focused ?? selected)?.label}
122
127
 
@@ -1,11 +1,11 @@
1
1
  import React from 'react';
2
- import { mount } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
3
 
4
4
  import { SelectableButton } from './SelectableButton';
5
5
 
6
6
  describe('SelectableButton', () => {
7
7
  it('renders correctly', () => {
8
- const component = mount(<SelectableButton>Click me</SelectableButton>);
9
- expect(component.text()).toEqual('Click me');
8
+ render(<SelectableButton>Click me</SelectableButton>);
9
+ expect(screen.getByText('Click me')).toBeVisible();
10
10
  });
11
11
  });