@moda/om 16.1.1 → 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 (246) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/index.cjs.js +3 -2
  3. package/dist/index.cjs.js.map +1 -1
  4. package/dist/index.esm.js +3 -2
  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 +0 -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/test/mocks/matchMedia.d.ts +1 -0
  208. package/dist/test/setupTests.d.ts +3 -0
  209. package/package.json +15 -14
  210. package/src/components/AspectRatioBox/AspectRatioBox.test.tsx +3 -3
  211. package/src/components/Badge/Badge.test.tsx +5 -12
  212. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +5 -5
  213. package/src/components/Breakpoint/Breakpoint.test.tsx +7 -8
  214. package/src/components/Button/Button.test.tsx +14 -3
  215. package/src/components/Checkbox/Checkbox.test.tsx +10 -12
  216. package/src/components/Clickable/Clickable.test.tsx +3 -3
  217. package/src/components/ColorSwatch/ColorSwatch.test.tsx +3 -5
  218. package/src/components/Constrain/Constrain.test.tsx +4 -4
  219. package/src/components/ControlLink/ControlLink.test.tsx +10 -12
  220. package/src/components/CreditCardNumberInput/CreditCardNumberInput.test.tsx +16 -16
  221. package/src/components/DefinitionList/DefinitionList.test.tsx +4 -3
  222. package/src/components/Divider/Divider.test.tsx +5 -4
  223. package/src/components/Expandable/Expandable.test.tsx +17 -6
  224. package/src/components/Field/Field.test.tsx +21 -30
  225. package/src/components/Label/Label.test.tsx +3 -3
  226. package/src/components/Loading/Loading.test.tsx +3 -5
  227. package/src/components/Modal/Modal.test.tsx +6 -7
  228. package/src/components/ModalOverlay/ModalOverlay.test.tsx +9 -9
  229. package/src/components/Overlay/Overlay.test.tsx +3 -3
  230. package/src/components/Popover/Popover.test.tsx +9 -6
  231. package/src/components/PromoBanner/PromoBanner.test.tsx +3 -3
  232. package/src/components/RadioButton/RadioButton.test.tsx +6 -10
  233. package/src/components/SearchInput/SearchInput.test.tsx +10 -6
  234. package/src/components/Select/Select.stories.tsx +2 -1
  235. package/src/components/Select/Select.test.tsx +8 -8
  236. package/src/components/Select/Select.tsx +6 -1
  237. package/src/components/SelectableButton/SelectableButton.test.tsx +3 -3
  238. package/src/components/Stack/Stack.test.tsx +6 -4
  239. package/src/components/Tabs/Tabs.test.tsx +4 -5
  240. package/src/components/Tag/Tag.test.tsx +1 -1
  241. package/src/components/Text/Text.test.tsx +3 -5
  242. package/src/components/TextInput/TextInput.test.tsx +4 -5
  243. package/src/components/Textarea/Textarea.test.tsx +10 -15
  244. package/src/components/Toast/Toast.test.tsx +1 -1
  245. package/src/components/VerticalDivider/VerticalDivider.test.tsx +6 -7
  246. package/src/hooks/useKeyboardListNavigation.spec.ts +24 -63
@@ -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
  });
@@ -1,18 +1,20 @@
1
1
  import React from 'react';
2
- import { shallow } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
3
 
4
4
  import { Stack } from './Stack';
5
5
 
6
6
  describe('Stack', () => {
7
7
  it('renders correctly', () => {
8
- const component = shallow(
8
+ render(
9
9
  <Stack space={6} direction='horizontal'>
10
10
  <div>Hello</div>
11
11
  <div>World</div>
12
12
  </Stack>
13
13
  );
14
14
 
15
- expect(component.html()).toContain('Stack--horizontal-6');
16
- expect(component.text()).toContain('HelloWorld');
15
+ expect(screen.getByText('Hello')).toBeVisible();
16
+ expect(screen.getByText('World')).toBeVisible();
17
+ // eslint-disable-next-line testing-library/no-node-access
18
+ expect(screen.getByText('Hello').parentNode).toHaveClass('Stack--horizontal-6');
17
19
  });
18
20
  });
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { render } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
3
 
4
4
  import { Tabs } from './Tabs';
5
5
 
@@ -18,10 +18,9 @@ describe('Tabs', () => {
18
18
  ];
19
19
 
20
20
  it('renders correctly with first tab displayed', () => {
21
- const component = render(<Tabs tabs={testList} />);
21
+ render(<Tabs tabs={testList} />);
22
22
 
23
- expect(component.html()).toEqual(
24
- '<div class="TabList"><button class="Clickable Tab Tab--active">Tab 1</button><button class="Clickable Tab ">Tab 2</button></div><div class="TabPanels"><div class="TabPanel"><div class="test">I am a panel</div></div></div>'
25
- );
23
+ expect(screen.getByRole('button', { name: 'Tab 1' })).toBeVisible();
24
+ expect(screen.getByRole('button', { name: 'Tab 2' })).toBeVisible();
26
25
  });
27
26
  });
@@ -8,7 +8,7 @@ describe('Tag', () => {
8
8
  const onRemove = jest.fn();
9
9
  render(<Tag onRemove={onRemove}>Hello</Tag>);
10
10
 
11
- expect(screen.getByText('Hello')).toBeTruthy();
11
+ expect(screen.getByText('Hello')).toBeInTheDocument();
12
12
 
13
13
  await userEvent.click(screen.getByRole('button'));
14
14
  expect(onRemove).toBeCalled();
@@ -1,17 +1,15 @@
1
1
  import React from 'react';
2
- import { shallow } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
3
 
4
4
  import { Text } from './Text';
5
5
 
6
6
  describe('Text', () => {
7
7
  it('renders correctly', () => {
8
- const component = shallow(
8
+ render(
9
9
  <Text treatment='body2' color='money-good' family='serif'>
10
10
  Hello
11
11
  </Text>
12
12
  );
13
- expect(component.html()).toEqual(
14
- '<span class="Text Text--body2 Text--serif" style="color:rgb(4, 108, 0)">Hello</span>'
15
- );
13
+ expect(screen.getByText('Hello')).toBeVisible();
16
14
  });
17
15
  });
@@ -1,13 +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 { TextInput } from './TextInput';
5
5
 
6
6
  describe('TextInput', () => {
7
7
  it('renders correctly', () => {
8
- const component = shallow(<TextInput placeholder='Hello' />);
9
- expect(component.html()).toEqual(
10
- '<input class="TextInput" placeholder="Hello" aria-label="Hello"/>'
11
- );
8
+ render(<TextInput placeholder='Hello' />);
9
+ expect(screen.getByRole('textbox')).toHaveValue('');
10
+ expect(screen.getByRole('textbox')).toHaveAttribute('placeholder', 'Hello');
12
11
  });
13
12
  });
@@ -1,34 +1,29 @@
1
1
  import React from 'react';
2
- import { shallow } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
3
 
4
4
  import { Textarea } from './Textarea';
5
5
 
6
6
  describe('Textarea', () => {
7
7
  it('renders correctly', () => {
8
- const component = shallow(<Textarea placeholder='Placeholder' defaultValue='Hello' />);
8
+ render(<Textarea placeholder='Placeholder' defaultValue='Hello' />);
9
9
 
10
- expect(component.html()).toEqual(
11
- '<textarea class="Textarea" placeholder="Placeholder" aria-label="Placeholder">Hello</textarea>'
12
- );
10
+ expect(screen.getByRole('textbox')).toHaveValue('Hello');
11
+ expect(screen.getByRole('textbox')).toHaveAttribute('placeholder', 'Placeholder');
13
12
  });
14
13
 
15
14
  it('renders with an error', () => {
16
- const component = shallow(
17
- <Textarea placeholder='Placeholder' defaultValue='Hello' label='Label' error='Error' />
18
- );
15
+ render(<Textarea placeholder='Placeholder' defaultValue='Hello' label='Label' error='Error' />);
19
16
 
20
- expect(component.html()).toEqual(
21
- '<textarea class="Textarea Textarea--error" placeholder="Placeholder" aria-label="Label">Hello</textarea>'
22
- );
17
+ expect(screen.getByRole('textbox')).toHaveValue('Hello');
18
+ expect(screen.getByRole('textbox')).toHaveClass('Textarea--error');
23
19
  });
24
20
 
25
21
  it('renders with a className', () => {
26
- const component = shallow(
22
+ render(
27
23
  <Textarea className='Custom' placeholder='Placeholder' defaultValue='Hello' label='Label' />
28
24
  );
29
25
 
30
- expect(component.html()).toEqual(
31
- '<textarea class="Textarea Custom" placeholder="Placeholder" aria-label="Label">Hello</textarea>'
32
- );
26
+ expect(screen.getByRole('textbox')).toHaveValue('Hello');
27
+ expect(screen.getByRole('textbox')).toHaveClass('Custom');
33
28
  });
34
29
  });
@@ -12,7 +12,7 @@ describe('Toast', () => {
12
12
  </Toast>
13
13
  );
14
14
 
15
- expect(screen.getByText('Hello')).toBeTruthy();
15
+ expect(screen.getByText('Hello')).toBeInTheDocument();
16
16
 
17
17
  await userEvent.click(screen.getByRole('button', { name: 'Remove' }));
18
18
  expect(onRemove).toBeCalled();
@@ -1,20 +1,19 @@
1
1
  import React from 'react';
2
- import { shallow } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
3
3
 
4
4
  import { VerticalDivider } from './VerticalDivider';
5
5
 
6
6
  describe('VerticalDivider', () => {
7
7
  it('renders correctly', () => {
8
- const component = shallow(<VerticalDivider />);
8
+ render(<VerticalDivider aria-label='Divider' />);
9
9
 
10
- expect(component.html()).toContain('<div class="VerticalDivider"></div>');
10
+ expect(screen.getByLabelText('Divider')).toBeVisible();
11
11
  });
12
12
 
13
13
  it('renders correctly - double', () => {
14
- const component = shallow(<VerticalDivider double />);
14
+ render(<VerticalDivider aria-label='Divider' double />);
15
15
 
16
- expect(component.html()).toContain(
17
- '<div class="VerticalDivider VerticalDivider--double"></div>'
18
- );
16
+ expect(screen.getByLabelText('Divider')).toBeVisible();
17
+ expect(screen.getByLabelText('Divider')).toHaveClass('VerticalDivider--double');
19
18
  });
20
19
  });