@kaizen/components 1.52.1 → 1.54.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 (228) hide show
  1. package/dist/cjs/Calendar/CalendarRange/CalendarRange.cjs +0 -2
  2. package/dist/cjs/Calendar/CalendarSingle/CalendarSingle.cjs +3 -5
  3. package/dist/cjs/DatePicker/DatePicker.cjs +8 -1
  4. package/dist/cjs/DatePicker/utils/getLocale.cjs +96 -3
  5. package/dist/cjs/DatePicker/utils/validateDate.cjs +28 -2
  6. package/dist/cjs/Filter/FilterBar/subcomponents/AddFiltersMenu/AddFiltersMenu.cjs +8 -1
  7. package/dist/cjs/Filter/FilterBar/subcomponents/ClearAllButton/ClearAllButton.cjs +14 -2
  8. package/dist/cjs/Filter/FilterBar/subcomponents/FilterBarDatePicker/FilterBarDatePicker.cjs +1 -0
  9. package/dist/cjs/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.cjs +10 -1
  10. package/dist/cjs/Filter/FilterDatePicker/subcomponents/DateInputField/DateInputField.cjs +8 -1
  11. package/dist/cjs/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.cjs +5 -1
  12. package/dist/cjs/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/useEndDateValidation.cjs +1 -0
  13. package/dist/cjs/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/useStartDateValidation.cjs +1 -0
  14. package/dist/cjs/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/utils/validateEndDateBeforeStartDate.cjs +16 -1
  15. package/dist/esm/Calendar/CalendarRange/CalendarRange.mjs +0 -2
  16. package/dist/esm/Calendar/CalendarSingle/CalendarSingle.mjs +3 -5
  17. package/dist/esm/DatePicker/DatePicker.mjs +8 -1
  18. package/dist/esm/DatePicker/utils/getLocale.mjs +97 -4
  19. package/dist/esm/DatePicker/utils/validateDate.mjs +22 -2
  20. package/dist/esm/Filter/FilterBar/subcomponents/AddFiltersMenu/AddFiltersMenu.mjs +8 -1
  21. package/dist/esm/Filter/FilterBar/subcomponents/ClearAllButton/ClearAllButton.mjs +14 -2
  22. package/dist/esm/Filter/FilterBar/subcomponents/FilterBarDatePicker/FilterBarDatePicker.mjs +1 -0
  23. package/dist/esm/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.mjs +10 -1
  24. package/dist/esm/Filter/FilterDatePicker/subcomponents/DateInputField/DateInputField.mjs +8 -1
  25. package/dist/esm/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.mjs +5 -1
  26. package/dist/esm/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/useEndDateValidation.mjs +1 -0
  27. package/dist/esm/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/useStartDateValidation.mjs +1 -0
  28. package/dist/esm/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/utils/validateEndDateBeforeStartDate.mjs +10 -1
  29. package/dist/styles.css +2 -2
  30. package/dist/types/AvatarGroup/_docs/example-data.d.ts +8 -0
  31. package/dist/types/BrandMoment/_docs/ExampleHeaders.d.ts +3 -0
  32. package/dist/types/Calendar/_docs/controls/defaultMonthControls.d.ts +2 -0
  33. package/dist/types/Calendar/_docs/controls/weekStartsOnControls.d.ts +2 -0
  34. package/dist/types/Container/Container.d.ts +1 -1
  35. package/dist/types/Content/Content.d.ts +1 -1
  36. package/dist/types/DateInput/DateInput/DateInput.d.ts +1 -1
  37. package/dist/types/DatePicker/DatePicker.d.ts +3 -3
  38. package/dist/types/DatePicker/_docs/controls/datePickerLocaleControls.d.ts +2 -0
  39. package/dist/types/DatePicker/_docs/controls/disabledDayMatchersControls.d.ts +2 -0
  40. package/dist/types/DatePicker/subcomponents/DateInputField/DateInputField.d.ts +1 -1
  41. package/dist/types/DatePicker/types.d.ts +2 -1
  42. package/dist/types/DatePicker/utils/getLocale.d.ts +1 -2
  43. package/dist/types/DateRangePicker/DateRangePicker.d.ts +2 -2
  44. package/dist/types/Filter/FilterBar/context/types.d.ts +28 -0
  45. package/dist/types/Filter/FilterButton/subcomponents/FilterButtonBase/FilterButtonBase.d.ts +1 -1
  46. package/dist/types/Filter/FilterDatePicker/_docs/controls/disabledDaysControls.d.ts +2 -0
  47. package/dist/types/Filter/FilterDatePicker/_docs/controls/validationControls.d.ts +2 -0
  48. package/dist/types/Filter/FilterDatePicker/subcomponents/DateInputField/DateInputField.d.ts +1 -1
  49. package/dist/types/Filter/FilterDateRangePicker/_docs/controls/disabledDaysControls.d.ts +2 -0
  50. package/dist/types/Filter/FilterDateRangePicker/_docs/controls/validationControls.d.ts +2 -0
  51. package/dist/types/Filter/FilterMultiSelect/_docs/MockData.d.ts +10 -0
  52. package/dist/types/Filter/FilterSelect/_docs/mockData.d.ts +6 -0
  53. package/dist/types/Filter/_docs/controls/renderTriggerControls.d.ts +2 -0
  54. package/dist/types/Menu/_docs/MenuContentExample.d.ts +8 -0
  55. package/dist/types/Menu/_docs/examples.d.ts +11 -0
  56. package/dist/types/Modal/_docs/controls.d.ts +11 -0
  57. package/dist/types/MultiSelect/MultiSelect.d.ts +23 -0
  58. package/dist/types/MultiSelect/subcomponents/MultiSelectOptions/MultiSelectOptions.d.ts +13 -0
  59. package/dist/types/Select/Select.d.ts +3 -3
  60. package/dist/types/Workflow/_docs/controls/controls.d.ts +2 -0
  61. package/dist/types/Workflow/_docs/controls/index.d.ts +1 -0
  62. package/dist/types/__future__/Select/Select.d.ts +2 -2
  63. package/dist/types/__future__/Select/_docs/mockData.d.ts +6 -0
  64. package/dist/types/__future__/Select/subcomponents/SelectToggle/SelectToggle.d.ts +2 -2
  65. package/dist/types/__future__/Select/types.d.ts +22 -0
  66. package/dist/types/__future__/Workflow/_docs/controls/controls.d.ts +2 -0
  67. package/dist/types/__future__/Workflow/_docs/controls/index.d.ts +1 -0
  68. package/dist/types/__overlays__/Tooltip/v1/utils/isSemanticElement.d.ts +2 -2
  69. package/dist/types/utils/getNodeText.d.ts +2 -1
  70. package/locales/en.json +40 -0
  71. package/package.json +3 -3
  72. package/src/Avatar/_docs/Avatar.mdx +1 -1
  73. package/src/AvatarGroup/_docs/AvatarGroup.mdx +1 -1
  74. package/src/Badge/_docs/Badge.mdx +1 -1
  75. package/src/Brand/_docs/Brand.mdx +1 -1
  76. package/src/BrandMoment/_docs/BrandMoment.mdx +1 -1
  77. package/src/Button/Button/_docs/Button.mdx +1 -1
  78. package/src/Button/IconButton/_docs/IconButton.mdx +1 -1
  79. package/src/ButtonGroup/_docs/ButtonGroup.mdx +1 -1
  80. package/src/Calendar/CalendarRange/CalendarRange.tsx +0 -2
  81. package/src/Calendar/CalendarRange/_docs/CalendarRange.mdx +1 -1
  82. package/src/Calendar/CalendarSingle/CalendarSingle.tsx +1 -2
  83. package/src/Calendar/CalendarSingle/_docs/CalendarSingle.mdx +1 -1
  84. package/src/Card/_docs/Card.mdx +1 -1
  85. package/src/Checkbox/Checkbox/_docs/Checkbox.mdx +1 -1
  86. package/src/Checkbox/CheckboxField/_docs/CheckboxField.mdx +1 -1
  87. package/src/Checkbox/CheckboxGroup/_docs/CheckboxGroup.mdx +1 -1
  88. package/src/Collapsible/Collapsible/_docs/Collapsible.mdx +1 -1
  89. package/src/Collapsible/CollapsibleGroup/_docs/CollapsibleGroup.mdx +1 -1
  90. package/src/Collapsible/ExpertAdviceCollapsible/_docs/ExpertAdviceCollapsible.mdx +1 -1
  91. package/src/Container/_docs/Container.mdx +1 -1
  92. package/src/Content/_docs/Content.mdx +1 -1
  93. package/src/DateInput/DateInputDescription/DateInputDescription.spec.tsx +26 -18
  94. package/src/DatePicker/DatePicker.spec.tsx +100 -69
  95. package/src/DatePicker/DatePicker.tsx +15 -7
  96. package/src/DatePicker/_docs/DatePicker.mdx +1 -3
  97. package/src/DatePicker/_docs/DatePicker.stickersheet.stories.tsx +57 -21
  98. package/src/DatePicker/_docs/DatePicker.stories.tsx +2 -3
  99. package/src/DatePicker/_docs/controls/datePickerLocaleControls.ts +8 -2
  100. package/src/DatePicker/_docs/getLocale.stickersheet.stories.tsx +49 -0
  101. package/src/DatePicker/subcomponents/DateInputField/DateInputField.spec.tsx +49 -36
  102. package/src/DatePicker/types.ts +2 -1
  103. package/src/DatePicker/utils/getLocale.spec.ts +2 -2
  104. package/src/DatePicker/utils/getLocale.ts +141 -6
  105. package/src/DatePicker/utils/validateDate.spec.ts +40 -16
  106. package/src/DatePicker/utils/{validateDate.ts → validateDate.tsx} +24 -4
  107. package/src/DateRangePicker/DateRangePicker.tsx +2 -2
  108. package/src/DateRangePicker/_docs/DateRangePicker.mdx +1 -1
  109. package/src/Divider/_docs/Divider.mdx +1 -1
  110. package/src/EmptyState/_docs/EmptyState.mdx +1 -1
  111. package/src/ErrorPage/_docs/ErrorPage.mdx +1 -1
  112. package/src/FieldGroup/_docs/FieldGroup.mdx +1 -1
  113. package/src/FieldMessage/_docs/FieldMessage.mdx +1 -1
  114. package/src/Filter/Filter/_docs/Filter.mdx +1 -1
  115. package/src/Filter/FilterBar/FilterBar.spec.tsx +56 -25
  116. package/src/Filter/FilterBar/_docs/FilterBar.mdx +1 -1
  117. package/src/Filter/FilterBar/subcomponents/AddFiltersMenu/AddFiltersMenu.spec.tsx +21 -13
  118. package/src/Filter/FilterBar/subcomponents/AddFiltersMenu/AddFiltersMenu.tsx +11 -1
  119. package/src/Filter/FilterBar/subcomponents/ClearAllButton/ClearAllButton.tsx +17 -2
  120. package/src/Filter/FilterBar/subcomponents/FilterBarButton/FilterBarButton.spec.tsx +17 -8
  121. package/src/Filter/FilterBar/subcomponents/FilterBarDatePicker/FilterBarDatePicker.spec.tsx +37 -23
  122. package/src/Filter/FilterBar/subcomponents/FilterBarDateRangePicker/FilterBarDateRangePicker.spec.tsx +35 -23
  123. package/src/Filter/FilterBar/subcomponents/FilterBarMultiSelect/FilterBarMultiSelect.spec.tsx +42 -26
  124. package/src/Filter/FilterBar/subcomponents/FilterBarSelect/FilterBarSelect.spec.tsx +37 -24
  125. package/src/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.spec.tsx +12 -12
  126. package/src/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.tsx +15 -2
  127. package/src/Filter/FilterButton/_docs/filter-buttons.mdx +1 -1
  128. package/src/Filter/FilterDatePicker/FilterDatePicker.spec.tsx +21 -16
  129. package/src/Filter/FilterDatePicker/_docs/FilterDatePicker.mdx +1 -1
  130. package/src/Filter/FilterDatePicker/_docs/FilterDatePicker.stickersheet.stories.tsx +56 -1
  131. package/src/Filter/FilterDatePicker/hooks/useDateInputHandlers.spec.ts +3 -3
  132. package/src/Filter/FilterDatePicker/hooks/{useDateValidation.spec.tsx → useDateValidation.spec.ts} +13 -12
  133. package/src/Filter/FilterDatePicker/subcomponents/DateInputField/DateInputField.tsx +10 -1
  134. package/src/Filter/FilterDatePicker/subcomponents/FilterDatePickerField/FilterDatePickerField.spec.tsx +57 -36
  135. package/src/Filter/FilterDatePicker/utils/validateDate.spec.ts +52 -28
  136. package/src/Filter/FilterDateRangePicker/FilterDateRangePicker.spec.tsx +3 -2
  137. package/src/Filter/FilterDateRangePicker/_docs/FilterDateRangePicker.mdx +1 -1
  138. package/src/Filter/FilterDateRangePicker/_docs/FilterDateRangePicker.stickersheet.stories.tsx +55 -24
  139. package/src/Filter/FilterDateRangePicker/subcomponents/DateRangeInputField/DateRangeInputField.spec.tsx +43 -28
  140. package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.spec.tsx +82 -48
  141. package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.tsx +6 -1
  142. package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/{useEndDateValidation.spec.tsx → useEndDateValidation.spec.ts} +23 -20
  143. package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/{useStartDateValidation.spec.tsx → useStartDateValidation.spec.ts} +13 -11
  144. package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/utils/validateEndDateBeforeStartDate.spec.ts +17 -6
  145. package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/utils/{validateEndDateBeforeStartDate.ts → validateEndDateBeforeStartDate.tsx} +9 -3
  146. package/src/Filter/FilterMultiSelect/FilterMultiSelect.spec.tsx +10 -14
  147. package/src/Filter/FilterMultiSelect/_docs/FilterMultiSelect.mdx +1 -1
  148. package/src/Filter/FilterMultiSelect/context/SelectionProvider/SelectionProvider.spec.tsx +392 -372
  149. package/src/Filter/FilterMultiSelect/subcomponents/SearchInput/SearchInput.spec.tsx +9 -6
  150. package/src/Filter/FilterSelect/_docs/FilterSelect.mdx +1 -1
  151. package/src/GuidanceBlock/_docs/GuidanceBlock.mdx +1 -1
  152. package/src/Heading/_docs/Heading.mdx +1 -1
  153. package/src/Icon/_docs/Icon.mdx +1 -1
  154. package/src/Illustration/Scene/BrandMomentCaptureIntro/_docs/BrandMomentCaptureIntro.mdx +1 -1
  155. package/src/Illustration/Scene/_docs/Scene.mdx +1 -1
  156. package/src/Illustration/Spot/_docs/Spot.mdx +1 -1
  157. package/src/Input/Input/_docs/Input.mdx +1 -1
  158. package/src/Input/InputRange/_docs/InputRange.mdx +1 -1
  159. package/src/Input/InputSearch/InputSearch.spec.tsx +15 -14
  160. package/src/Input/InputSearch/_docs/InputSearch.mdx +1 -1
  161. package/src/Label/_docs/Label.mdx +1 -1
  162. package/src/LabelledMessage/_docs/LabelledMessage.mdx +1 -1
  163. package/src/LikertScaleLegacy/_docs/LikertScaleLegacy.mdx +1 -1
  164. package/src/Loading/LoadingGraphic/_docs/LoadingGraphic.mdx +1 -1
  165. package/src/Loading/LoadingHeading/_docs/LoadingHeading.mdx +1 -1
  166. package/src/Loading/LoadingInput/_docs/LoadingInput.mdx +1 -1
  167. package/src/Loading/LoadingParagraph/_docs/LoadingParagraph.mdx +1 -1
  168. package/src/Loading/LoadingSpinner/_docs/LoadingSpinner.mdx +1 -1
  169. package/src/Menu/_docs/Menu.mdx +1 -1
  170. package/src/Modal/ConfirmationModal/_docs/ConfirmationModal.mdx +1 -1
  171. package/src/Modal/ContextModal/_docs/ContextModal.mdx +1 -1
  172. package/src/Modal/GenericModal/_docs/GenericModal.mdx +1 -1
  173. package/src/Modal/InputEditModal/_docs/InputEditModal.mdx +1 -1
  174. package/src/MultiSelect/_docs/MultiSelect.mdx +1 -1
  175. package/src/Notification/GlobalNotification/_docs/GlobalNotification.mdx +1 -1
  176. package/src/Notification/InlineNotification/_docs/InlineNotification.mdx +1 -1
  177. package/src/Notification/ToastNotification/_docs/ToastNotification.mdx +1 -1
  178. package/src/Pagination/_docs/Pagination.mdx +1 -1
  179. package/src/Pagination/subcomponents/DirectionalLink/_docs/DirectionalLink.mdx +1 -1
  180. package/src/Pagination/subcomponents/PaginationLink/_docs/PaginationLink.mdx +1 -1
  181. package/src/Popover/_docs/Popover.mdx +1 -1
  182. package/src/ProgressBar/_docs/ProgressBar.mdx +1 -1
  183. package/src/Radio/Radio/_docs/Radio.mdx +1 -1
  184. package/src/Radio/RadioField/_docs/RadioField.mdx +1 -1
  185. package/src/Radio/RadioGroup/_docs/RadioGroup.mdx +1 -1
  186. package/src/RichTextEditor/EditableRichTextContent/_docs/EditableRichTextContent.mdx +1 -1
  187. package/src/RichTextEditor/RichTextContent/_docs/RichTextContent.mdx +1 -1
  188. package/src/RichTextEditor/RichTextEditor/_docs/RichTextEditor.mdx +1 -1
  189. package/src/RichTextEditor/RichTextEditor/subcomponents/ToggleIconButton/_docs/ToggleIconButton.mdx +1 -1
  190. package/src/RichTextEditor/RichTextEditor/subcomponents/Toolbar/_docs/Toolbar.mdx +1 -1
  191. package/src/SearchField/_docs/SearchField.mdx +1 -1
  192. package/src/Select/_docs/Select.mdx +1 -1
  193. package/src/Skirt/_docs/Skirt.mdx +1 -1
  194. package/src/Slider/_docs/Slider.mdx +1 -1
  195. package/src/SplitButton/SplitButton.spec.tsx +11 -6
  196. package/src/SplitButton/_docs/SplitButton.mdx +1 -1
  197. package/src/SplitButton/subcomponents/DropdownButton/DropdownButton.spec.tsx +15 -10
  198. package/src/Table/_docs/Table.mdx +1 -1
  199. package/src/Tabs/_docs/Tabs.mdx +1 -1
  200. package/src/Tag/_docs/Tag.mdx +1 -1
  201. package/src/Text/_docs/Text.mdx +1 -1
  202. package/src/TextArea/_docs/TextArea.mdx +1 -1
  203. package/src/TextAreaField/_docs/TextAreaField.mdx +1 -1
  204. package/src/TextField/_docs/TextField.mdx +1 -1
  205. package/src/Tile/InformationTile/_docs/InformationTile.mdx +1 -1
  206. package/src/Tile/MultiActionTile/_docs/MultiActionTile.mdx +1 -1
  207. package/src/Tile/TileGrid/_docs/TileGrid.mdx +1 -1
  208. package/src/TimeField/_docs/TimeField.mdx +1 -1
  209. package/src/TitleBlockZen/_docs/TitleBlockZen.mdx +1 -1
  210. package/src/ToggleSwitch/ToggleSwitch/_docs/ToggleSwitch.mdx +1 -1
  211. package/src/ToggleSwitch/ToggleSwitchField/_docs/ToggleSwitchField.mdx +1 -1
  212. package/src/VisuallyHidden/_docs/VisuallyHidden.mdx +1 -1
  213. package/src/Well/_docs/Well.mdx +1 -1
  214. package/src/Workflow/_docs/ProgressStepper.mdx +1 -1
  215. package/src/Workflow/_docs/Workflow.mdx +1 -1
  216. package/src/Workflow/_docs/WorkflowFooter.mdx +1 -1
  217. package/src/Workflow/_docs/WorkflowHeader.mdx +1 -1
  218. package/src/__future__/Select/_docs/Select.mdx +1 -1
  219. package/src/__future__/Tag/Tag/_docs/Tag.mdx +1 -1
  220. package/src/__future__/Workflow/_docs/ProgressStepper.mdx +1 -1
  221. package/src/__future__/Workflow/_docs/Workflow.mdx +1 -1
  222. package/src/__future__/Workflow/_docs/WorkflowFooter.mdx +1 -1
  223. package/src/__future__/Workflow/_docs/WorkflowHeader.mdx +1 -1
  224. package/src/__overlays__/Tooltip/v1/_docs/Tooltip.mdx +1 -1
  225. package/src/__overlays__/Tooltip/v3/_docs/ApiSpecification.mdx +0 -1
  226. package/src/__overlays__/Tooltip/v3/_docs/Tooltip.docs.stories.tsx +52 -0
  227. package/src/__overlays__/Tooltip/v3/_docs/Tooltip.mdx +40 -61
  228. package/src/__overlays__/Tooltip/v3/_docs/assets/tooltip_spec.png +0 -0
@@ -1,7 +1,9 @@
1
1
  import React, { useState } from "react"
2
+ import { StaticIntlProvider } from "@cultureamp/i18n-react-intl"
2
3
  import { Selection } from "@react-types/shared"
3
- import { render, screen, waitFor } from "@testing-library/react"
4
+ import { screen, waitFor } from "@testing-library/react"
4
5
  import userEvent from "@testing-library/user-event"
6
+ import { renderWithIntl } from "~tests"
5
7
  import { FilterMultiSelect } from "../../FilterMultiSelect"
6
8
  import { ListBox } from "../../subcomponents/ListBox"
7
9
  import { SearchInput } from "../../subcomponents/SearchInput"
@@ -98,391 +100,470 @@ const SelectionProviderWrapper = ({
98
100
  )
99
101
  }
100
102
 
101
- describe("<SelectionProviderWrapper /> - Visual content", () => {
102
- describe("Given no selectedKeys", () => {
103
- it("shows all the options unselected", () => {
104
- render(<SelectionProviderWrapper />)
105
- expect(
106
- screen.getByRole("option", {
107
- name: "option-1-label-mock",
108
- selected: false,
103
+ describe("<SelectionProvider>", () => {
104
+ describe("<SelectionProviderWrapper /> - Visual content", () => {
105
+ describe("Given no selectedKeys", () => {
106
+ it("shows all the options unselected", async () => {
107
+ renderWithIntl(<SelectionProviderWrapper />)
108
+ await waitFor(() => {
109
+ expect(
110
+ screen.getByRole("option", {
111
+ name: "option-1-label-mock",
112
+ selected: false,
113
+ })
114
+ ).toBeVisible()
115
+ expect(
116
+ screen.getByRole("option", {
117
+ name: "option-2-label-mock",
118
+ selected: false,
119
+ })
120
+ ).toBeVisible()
121
+ expect(
122
+ screen.getByRole("option", {
123
+ name: "option-3-label-mock",
124
+ selected: false,
125
+ })
126
+ ).toBeVisible()
109
127
  })
110
- ).toBeVisible()
111
- expect(
112
- screen.getByRole("option", {
113
- name: "option-2-label-mock",
114
- selected: false,
115
- })
116
- ).toBeVisible()
117
- expect(
118
- screen.getByRole("option", {
119
- name: "option-3-label-mock",
120
- selected: false,
121
- })
122
- ).toBeVisible()
123
- })
128
+ })
124
129
 
125
- it("labels the listbox with the provided label", () => {
126
- render(<SelectionProviderWrapper />)
127
- const listBox = screen.getByLabelText("selection-label-mock", {
128
- selector: "ul",
130
+ it("labels the listbox with the provided label", async () => {
131
+ renderWithIntl(<SelectionProviderWrapper />)
132
+ await waitFor(() => {
133
+ const listBox = screen.getByLabelText("selection-label-mock", {
134
+ selector: "ul",
135
+ })
136
+ expect(listBox).toBeInTheDocument()
137
+ })
129
138
  })
130
- expect(listBox).toBeInTheDocument()
131
139
  })
132
- })
133
140
 
134
- describe("Given selectedKeys is [option-2-value-mock]", () => {
135
- it("shows only option 2 is selected", () => {
136
- render(
137
- <SelectionProviderWrapper
138
- selectedKeys={new Set(["option-2-value-mock"])}
139
- />
140
- )
141
- expect(
142
- screen.getByRole("option", {
143
- name: "option-1-label-mock",
144
- selected: false,
141
+ describe("Given selectedKeys is [option-2-value-mock]", () => {
142
+ it("shows only option 2 is selected", async () => {
143
+ renderWithIntl(
144
+ <SelectionProviderWrapper
145
+ selectedKeys={new Set(["option-2-value-mock"])}
146
+ />
147
+ )
148
+ await waitFor(() => {
149
+ expect(
150
+ screen.getByRole("option", {
151
+ name: "option-1-label-mock",
152
+ selected: false,
153
+ })
154
+ ).toBeVisible()
155
+ expect(
156
+ screen.getByRole("option", {
157
+ name: "option-2-label-mock",
158
+ selected: true,
159
+ })
160
+ ).toBeVisible()
161
+ expect(
162
+ screen.getByRole("option", {
163
+ name: "option-3-label-mock",
164
+ selected: false,
165
+ })
166
+ ).toBeVisible()
145
167
  })
146
- ).toBeVisible()
147
- expect(
148
- screen.getByRole("option", {
149
- name: "option-2-label-mock",
150
- selected: true,
151
- })
152
- ).toBeVisible()
153
- expect(
154
- screen.getByRole("option", {
155
- name: "option-3-label-mock",
156
- selected: false,
157
- })
158
- ).toBeVisible()
168
+ })
159
169
  })
160
- })
161
170
 
162
- describe("Given selectedKeys is 'all'", () => {
163
- it("shows all options are selected", () => {
164
- render(<SelectionProviderWrapper selectedKeys="all" />)
165
- expect(
166
- screen.getByRole("option", {
167
- name: "option-1-label-mock",
168
- selected: true,
169
- })
170
- ).toBeVisible()
171
- expect(
172
- screen.getByRole("option", {
173
- name: "option-2-label-mock",
174
- selected: true,
171
+ describe("Given selectedKeys is 'all'", () => {
172
+ it("shows all options are selected", async () => {
173
+ renderWithIntl(<SelectionProviderWrapper selectedKeys="all" />)
174
+ await waitFor(() => {
175
+ expect(
176
+ screen.getByRole("option", {
177
+ name: "option-1-label-mock",
178
+ selected: true,
179
+ })
180
+ ).toBeVisible()
181
+ expect(
182
+ screen.getByRole("option", {
183
+ name: "option-2-label-mock",
184
+ selected: true,
185
+ })
186
+ ).toBeVisible()
187
+ expect(
188
+ screen.getByRole("option", {
189
+ name: "option-3-label-mock",
190
+ selected: true,
191
+ })
192
+ ).toBeVisible()
175
193
  })
176
- ).toBeVisible()
177
- expect(
178
- screen.getByRole("option", {
179
- name: "option-3-label-mock",
180
- selected: true,
181
- })
182
- ).toBeVisible()
194
+ })
183
195
  })
184
196
  })
185
- })
186
197
 
187
- describe("<SelectionProviderWrapper /> - Mouse interaction", () => {
188
- it("selects the option when clicks on a non-selected option", async () => {
189
- render(<SelectionProviderWrapper />)
190
- const option1 = screen.getByRole("option", {
191
- name: "option-1-label-mock",
192
- })
198
+ describe("<SelectionProviderWrapper /> - Mouse interaction", () => {
199
+ it("selects the option when clicks on a non-selected option", async () => {
200
+ renderWithIntl(<SelectionProviderWrapper />)
201
+ const option1 = screen.getByRole("option", {
202
+ name: "option-1-label-mock",
203
+ })
193
204
 
194
- await user.click(option1)
205
+ await user.click(option1)
195
206
 
196
- await waitFor(() => {
197
- expect(
198
- screen.getByRole("option", {
199
- name: "option-1-label-mock",
200
- selected: true,
201
- })
202
- ).toBeVisible()
207
+ await waitFor(() => {
208
+ expect(
209
+ screen.getByRole("option", {
210
+ name: "option-1-label-mock",
211
+ selected: true,
212
+ })
213
+ ).toBeVisible()
214
+ })
203
215
  })
204
- })
205
216
 
206
- it("fires onSelectionChange when clicks on a option", async () => {
207
- const spy = jest.fn()
208
- render(<SelectionProviderWrapper onSelectionChange={spy} />)
209
- const option1 = screen.getByRole("option", {
210
- name: "option-1-label-mock",
211
- })
217
+ it("fires onSelectionChange when clicks on a option", async () => {
218
+ const spy = jest.fn()
219
+ renderWithIntl(<SelectionProviderWrapper onSelectionChange={spy} />)
220
+ const option1 = screen.getByRole("option", {
221
+ name: "option-1-label-mock",
222
+ })
212
223
 
213
- await user.click(option1)
224
+ await user.click(option1)
214
225
 
215
- await waitFor(() => {
216
- expect(spy).toHaveBeenCalledTimes(1)
226
+ await waitFor(() => {
227
+ expect(spy).toHaveBeenCalledTimes(1)
228
+ })
217
229
  })
218
- })
219
230
 
220
- it("selects all options when clicks on Select all button", async () => {
221
- render(<SelectionProviderWrapper />)
222
- const selectAll = screen.getByRole("button", {
223
- name: "Select all",
224
- })
231
+ it("selects all options when clicks on Select all button", async () => {
232
+ renderWithIntl(<SelectionProviderWrapper />)
233
+ const selectAll = screen.getByRole("button", {
234
+ name: "Select all",
235
+ })
225
236
 
226
- await user.click(selectAll)
237
+ await user.click(selectAll)
227
238
 
228
- await waitFor(() => {
229
- expect(
230
- screen.getByRole("option", {
231
- name: "option-1-label-mock",
232
- selected: true,
233
- })
234
- ).toBeVisible()
239
+ await waitFor(() => {
240
+ expect(
241
+ screen.getByRole("option", {
242
+ name: "option-1-label-mock",
243
+ selected: true,
244
+ })
245
+ ).toBeVisible()
235
246
 
236
- expect(
237
- screen.getByRole("option", {
238
- name: "option-2-label-mock",
239
- selected: true,
240
- })
241
- ).toBeVisible()
247
+ expect(
248
+ screen.getByRole("option", {
249
+ name: "option-2-label-mock",
250
+ selected: true,
251
+ })
252
+ ).toBeVisible()
242
253
 
243
- expect(
244
- screen.getByRole("option", {
245
- name: "option-3-label-mock",
246
- selected: true,
247
- })
248
- ).toBeVisible()
254
+ expect(
255
+ screen.getByRole("option", {
256
+ name: "option-3-label-mock",
257
+ selected: true,
258
+ })
259
+ ).toBeVisible()
260
+ })
249
261
  })
250
- })
251
262
 
252
- it("fires onSelectionChange when clicks on Select all button", async () => {
253
- const spy = jest.fn()
254
- render(<SelectionProviderWrapper onSelectionChange={spy} />)
255
- const selectAll = screen.getByRole("button", {
256
- name: "Select all",
257
- })
263
+ it("fires onSelectionChange when clicks on Select all button", async () => {
264
+ const spy = jest.fn()
265
+ renderWithIntl(<SelectionProviderWrapper onSelectionChange={spy} />)
266
+ const selectAll = screen.getByRole("button", {
267
+ name: "Select all",
268
+ })
258
269
 
259
- await user.click(selectAll)
270
+ await user.click(selectAll)
260
271
 
261
- await waitFor(() => {
262
- expect(spy).toHaveBeenCalledTimes(1)
272
+ await waitFor(() => {
273
+ expect(spy).toHaveBeenCalledTimes(1)
274
+ })
263
275
  })
264
- })
265
276
 
266
- it("clears all the selection when clicks on Clear button", async () => {
267
- render(
268
- <SelectionProviderWrapper
269
- selectedKeys={new Set(["option-2-value-mock"])}
270
- />
271
- )
272
- const clear = screen.getByRole("button", {
273
- name: "Clear selections",
274
- })
277
+ it("clears all the selection when clicks on Clear button", async () => {
278
+ renderWithIntl(
279
+ <SelectionProviderWrapper
280
+ selectedKeys={new Set(["option-2-value-mock"])}
281
+ />
282
+ )
283
+ const clear = screen.getByRole("button", {
284
+ name: "Clear selections",
285
+ })
275
286
 
276
- await user.click(clear)
287
+ await user.click(clear)
277
288
 
278
- await waitFor(() => {
279
- expect(
280
- screen.getByRole("option", {
281
- name: "option-1-label-mock",
282
- selected: false,
283
- })
284
- ).toBeVisible()
285
- expect(
286
- screen.getByRole("option", {
287
- name: "option-2-label-mock",
288
- selected: false,
289
- })
290
- ).toBeVisible()
291
- expect(
292
- screen.getByRole("option", {
293
- name: "option-3-label-mock",
294
- selected: false,
295
- })
296
- ).toBeVisible()
289
+ await waitFor(() => {
290
+ expect(
291
+ screen.getByRole("option", {
292
+ name: "option-1-label-mock",
293
+ selected: false,
294
+ })
295
+ ).toBeVisible()
296
+ expect(
297
+ screen.getByRole("option", {
298
+ name: "option-2-label-mock",
299
+ selected: false,
300
+ })
301
+ ).toBeVisible()
302
+ expect(
303
+ screen.getByRole("option", {
304
+ name: "option-3-label-mock",
305
+ selected: false,
306
+ })
307
+ ).toBeVisible()
308
+ })
297
309
  })
298
- })
299
310
 
300
- it("fires onSelectionChange when clicks on Clear all button", async () => {
301
- const spy = jest.fn()
302
- render(
303
- <SelectionProviderWrapper
304
- onSelectionChange={spy}
305
- selectedKeys={new Set(["option-2-value-mock"])}
306
- />
307
- )
308
- const clear = screen.getByRole("button", {
309
- name: "Clear selections",
311
+ it("fires onSelectionChange when clicks on Clear all button", async () => {
312
+ const spy = jest.fn()
313
+ renderWithIntl(
314
+ <SelectionProviderWrapper
315
+ onSelectionChange={spy}
316
+ selectedKeys={new Set(["option-2-value-mock"])}
317
+ />
318
+ )
319
+ const clear = screen.getByRole("button", {
320
+ name: "Clear selections",
321
+ })
322
+
323
+ await user.click(clear)
324
+
325
+ await waitFor(() => {
326
+ expect(spy).toHaveBeenCalledTimes(1)
327
+ })
310
328
  })
311
329
 
312
- await user.click(clear)
330
+ it("de-selects the option when clicks on a selected option", async () => {
331
+ renderWithIntl(
332
+ <SelectionProviderWrapper
333
+ selectedKeys={new Set(["option-2-value-mock"])}
334
+ />
335
+ )
336
+ const option2 = screen.getByRole("option", {
337
+ name: "option-2-label-mock",
338
+ selected: true,
339
+ })
340
+
341
+ await user.click(option2)
313
342
 
314
- await waitFor(() => {
315
- expect(spy).toHaveBeenCalledTimes(1)
343
+ await waitFor(() => {
344
+ expect(
345
+ screen.getByRole("option", {
346
+ name: "option-2-label-mock",
347
+ selected: false,
348
+ })
349
+ ).toBeVisible()
350
+ })
316
351
  })
317
352
  })
318
353
 
319
- it("de-selects the option when clicks on a selected option", async () => {
320
- render(
321
- <SelectionProviderWrapper
322
- selectedKeys={new Set(["option-2-value-mock"])}
323
- />
324
- )
325
- const option2 = screen.getByRole("option", {
326
- name: "option-2-label-mock",
327
- selected: true,
328
- })
354
+ describe("<SelectionProviderWrapper /> - Keyboard interaction", () => {
355
+ describe("Given no selectedKeys", () => {
356
+ it("focuses on the frist option when tabs onto the list", async () => {
357
+ renderWithIntl(<SelectionProviderWrapper />)
358
+ await user.tab()
329
359
 
330
- await user.click(option2)
360
+ await waitFor(() => {
361
+ expect(
362
+ screen.getByRole("option", { name: "option-1-label-mock" })
363
+ ).toHaveFocus()
364
+ })
365
+ })
366
+ })
331
367
 
332
- await waitFor(() => {
333
- expect(
334
- screen.getByRole("option", {
335
- name: "option-2-label-mock",
336
- selected: false,
368
+ describe("Given selectedKeys is [option-2-value-mock, option-3-value-mock]", () => {
369
+ it("focuses the frist selected option when tabs onto the list", async () => {
370
+ renderWithIntl(
371
+ <SelectionProviderWrapper
372
+ selectedKeys={new Set(["option-2-value-mock"])}
373
+ />
374
+ )
375
+ await user.tab()
376
+
377
+ await waitFor(() => {
378
+ expect(
379
+ screen.getByRole("option", { name: "option-2-label-mock" })
380
+ ).toHaveFocus()
337
381
  })
338
- ).toBeVisible()
382
+ })
339
383
  })
340
- })
341
- })
342
384
 
343
- describe("<SelectionProviderWrapper /> - Keyboard interaction", () => {
344
- describe("Given no selectedKeys", () => {
345
- it("focuses on the frist option when tabs onto the list", async () => {
346
- render(<SelectionProviderWrapper />)
385
+ it("moves the focus down when hits arrow down key", async () => {
386
+ renderWithIntl(<SelectionProviderWrapper />)
347
387
  await user.tab()
388
+ await user.keyboard("{ArrowDown}")
348
389
 
349
390
  await waitFor(() => {
350
391
  expect(
351
- screen.getByRole("option", { name: "option-1-label-mock" })
392
+ screen.getByRole("option", { name: "option-2-label-mock" })
352
393
  ).toHaveFocus()
353
394
  })
354
395
  })
355
- })
356
396
 
357
- describe("Given selectedKeys is [option-2-value-mock, option-3-value-mock]", () => {
358
- it("focuses the frist selected option when tabs onto the list", async () => {
359
- render(
397
+ it("keeps the focus at the last element when hits arrow down key on it", async () => {
398
+ renderWithIntl(
360
399
  <SelectionProviderWrapper
361
- selectedKeys={new Set(["option-2-value-mock"])}
400
+ selectedKeys={new Set(["option-3-value-mock"])}
362
401
  />
363
402
  )
364
403
  await user.tab()
404
+ await user.keyboard("{ArrowDown}")
365
405
 
366
406
  await waitFor(() => {
367
407
  expect(
368
- screen.getByRole("option", { name: "option-2-label-mock" })
408
+ screen.getByRole("option", { name: "option-3-label-mock" })
369
409
  ).toHaveFocus()
370
410
  })
371
411
  })
372
- })
373
412
 
374
- it("moves the focus down when hits arrow down key", async () => {
375
- render(<SelectionProviderWrapper />)
376
- await user.tab()
377
- await user.keyboard("{ArrowDown}")
413
+ it("moves the focus up when hits arrow up key", async () => {
414
+ renderWithIntl(
415
+ <SelectionProviderWrapper
416
+ selectedKeys={new Set(["option-3-value-mock"])}
417
+ />
418
+ )
419
+ await user.tab()
420
+ await user.keyboard("{ArrowUp}")
378
421
 
379
- await waitFor(() => {
380
- expect(
381
- screen.getByRole("option", { name: "option-2-label-mock" })
382
- ).toHaveFocus()
422
+ await waitFor(() => {
423
+ expect(
424
+ screen.getByRole("option", { name: "option-2-label-mock" })
425
+ ).toHaveFocus()
426
+ })
383
427
  })
384
- })
385
428
 
386
- it("keeps the focus at the last element when hits arrow down key on it", async () => {
387
- render(
388
- <SelectionProviderWrapper
389
- selectedKeys={new Set(["option-3-value-mock"])}
390
- />
391
- )
392
- await user.tab()
393
- await user.keyboard("{ArrowDown}")
394
-
395
- await waitFor(() => {
396
- expect(
397
- screen.getByRole("option", { name: "option-3-label-mock" })
398
- ).toHaveFocus()
429
+ it("keeps the focus ring at the first element when hits arrow up key on it", async () => {
430
+ renderWithIntl(<SelectionProviderWrapper />)
431
+ await user.tab()
432
+ await user.keyboard("{ArrowUp}")
433
+
434
+ await waitFor(() => {
435
+ expect(
436
+ screen.getByRole("option", { name: "option-1-label-mock" })
437
+ ).toHaveFocus()
438
+ })
399
439
  })
400
- })
401
440
 
402
- it("moves the focus up when hits arrow up key", async () => {
403
- render(
404
- <SelectionProviderWrapper
405
- selectedKeys={new Set(["option-3-value-mock"])}
406
- />
407
- )
408
- await user.tab()
409
- await user.keyboard("{ArrowUp}")
410
-
411
- await waitFor(() => {
412
- expect(
413
- screen.getByRole("option", { name: "option-2-label-mock" })
414
- ).toHaveFocus()
441
+ it("selects the option when hits enter on a non-selected option", async () => {
442
+ renderWithIntl(<SelectionProviderWrapper />)
443
+
444
+ await user.tab()
445
+ await user.keyboard("{Enter}")
446
+
447
+ await waitFor(() => {
448
+ expect(
449
+ screen.getByRole("option", {
450
+ name: "option-1-label-mock",
451
+ selected: true,
452
+ })
453
+ ).toBeVisible()
454
+ })
415
455
  })
416
- })
417
456
 
418
- it("keeps the focus ring at the first element when hits arrow up key on it", async () => {
419
- render(<SelectionProviderWrapper />)
420
- await user.tab()
421
- await user.keyboard("{ArrowUp}")
457
+ it("de-selects the option when hits enter on a selected option", async () => {
458
+ renderWithIntl(
459
+ <SelectionProviderWrapper
460
+ selectedKeys={new Set(["option-2-value-mock"])}
461
+ />
462
+ )
463
+
464
+ await user.tab()
465
+ await user.keyboard("{Enter}")
422
466
 
423
- await waitFor(() => {
424
- expect(
425
- screen.getByRole("option", { name: "option-1-label-mock" })
426
- ).toHaveFocus()
467
+ await waitFor(() => {
468
+ expect(
469
+ screen.getByRole("option", {
470
+ name: "option-2-label-mock",
471
+ selected: false,
472
+ })
473
+ ).toBeVisible()
474
+ })
427
475
  })
428
- })
429
476
 
430
- it("selects the option when hits enter on a non-selected option", async () => {
431
- render(<SelectionProviderWrapper />)
477
+ it("fires onSelectionChange when hits enter on a option", async () => {
478
+ const spy = jest.fn()
479
+ renderWithIntl(<SelectionProviderWrapper onSelectionChange={spy} />)
432
480
 
433
- await user.tab()
434
- await user.keyboard("{Enter}")
481
+ await user.tab()
482
+ await user.keyboard("{Enter}")
435
483
 
436
- await waitFor(() => {
437
- expect(
438
- screen.getByRole("option", {
439
- name: "option-1-label-mock",
440
- selected: true,
441
- })
442
- ).toBeVisible()
484
+ await waitFor(() => {
485
+ expect(spy).toHaveBeenCalledTimes(1)
486
+ })
443
487
  })
444
488
  })
445
489
 
446
- it("de-selects the option when hits enter on a selected option", async () => {
447
- render(
448
- <SelectionProviderWrapper
449
- selectedKeys={new Set(["option-2-value-mock"])}
450
- />
451
- )
452
-
453
- await user.tab()
454
- await user.keyboard("{Enter}")
455
-
456
- await waitFor(() => {
457
- expect(
458
- screen.getByRole("option", {
459
- name: "option-2-label-mock",
460
- selected: false,
490
+ describe("<SelectionProviderWrapper /> - Search Filtering", () => {
491
+ describe("With no onSearchInputChange callback", () => {
492
+ it("shows only the matched options", async () => {
493
+ renderWithIntl(<SelectionProviderWrapper />)
494
+ const searchInput = screen.getByRole("searchbox")
495
+ await user.type(searchInput, "1")
496
+
497
+ await waitFor(() => {
498
+ expect(
499
+ screen.getByRole("option", {
500
+ name: "option-1-label-mock",
501
+ })
502
+ ).toBeVisible()
503
+ expect(
504
+ screen.queryByRole("option", {
505
+ name: "option-2-label-mock",
506
+ })
507
+ ).not.toBeInTheDocument()
508
+ expect(
509
+ screen.queryByRole("option", {
510
+ name: "option-3-label-mock",
511
+ })
512
+ ).not.toBeInTheDocument()
461
513
  })
462
- ).toBeVisible()
514
+ })
463
515
  })
464
- })
516
+ describe("With a onSearchInputChange callback", () => {
517
+ it("Does not filter the matched options", async () => {
518
+ const onSearchInputChange = jest.fn()
519
+
520
+ renderWithIntl(
521
+ <SelectionProviderWrapper onSearchInputChange={onSearchInputChange} />
522
+ )
523
+ const searchInput = screen.getByRole("searchbox")
524
+ const searchString = "1"
525
+ await user.type(searchInput, searchString)
526
+
527
+ await waitFor(() => {
528
+ expect(
529
+ screen.getByRole("option", {
530
+ name: "option-1-label-mock",
531
+ })
532
+ ).toBeVisible()
533
+ expect(
534
+ screen.getByRole("option", {
535
+ name: "option-2-label-mock",
536
+ })
537
+ ).toBeVisible()
538
+ expect(
539
+ screen.getByRole("option", {
540
+ name: "option-3-label-mock",
541
+ })
542
+ ).toBeVisible()
543
+ })
544
+ })
465
545
 
466
- it("fires onSelectionChange when hits enter on a option", async () => {
467
- const spy = jest.fn()
468
- render(<SelectionProviderWrapper onSelectionChange={spy} />)
546
+ it("Calls back to the consumer with the search text", async () => {
547
+ const onSearchInputChange = jest.fn()
469
548
 
470
- await user.tab()
471
- await user.keyboard("{Enter}")
549
+ renderWithIntl(
550
+ <SelectionProviderWrapper onSearchInputChange={onSearchInputChange} />
551
+ )
552
+ const searchInput = screen.getByRole("searchbox")
553
+ const searchString = "1"
554
+ await user.type(searchInput, searchString)
472
555
 
473
- await waitFor(() => {
474
- expect(spy).toHaveBeenCalledTimes(1)
556
+ await waitFor(() => {
557
+ expect(onSearchInputChange).toBeCalledTimes(2)
558
+ expect(onSearchInputChange).toBeCalledWith(searchString)
559
+ })
560
+ })
475
561
  })
476
562
  })
477
- })
478
-
479
- describe("<SelectionProviderWrapper /> - Search Filtering", () => {
480
- describe("With no onSearchInputChange callback", () => {
481
- it("shows only the matched options", async () => {
482
- render(<SelectionProviderWrapper />)
483
- const searchInput = screen.getByRole("searchbox")
484
- await user.type(searchInput, "1")
485
563
 
564
+ describe("<SelectionProviderWrapper /> - controlling items from the consumer", () => {
565
+ it("renders only items passed", async () => {
566
+ const { rerender } = renderWithIntl(<SelectionProviderWrapper />)
486
567
  await waitFor(() => {
487
568
  expect(
488
569
  screen.getByRole("option", {
@@ -490,40 +571,33 @@ describe("<SelectionProviderWrapper /> - Search Filtering", () => {
490
571
  })
491
572
  ).toBeVisible()
492
573
  expect(
493
- screen.queryByRole("option", {
574
+ screen.getByRole("option", {
494
575
  name: "option-2-label-mock",
495
576
  })
496
- ).not.toBeInTheDocument()
577
+ ).toBeVisible()
497
578
  expect(
498
- screen.queryByRole("option", {
579
+ screen.getByRole("option", {
499
580
  name: "option-3-label-mock",
500
581
  })
501
- ).not.toBeInTheDocument()
582
+ ).toBeVisible()
502
583
  })
503
- })
504
- })
505
- describe("With a onSearchInputChange callback", () => {
506
- it("Does not filter the matched options", async () => {
507
- const onSearchInputChange = jest.fn()
508
584
 
509
- render(
510
- <SelectionProviderWrapper onSearchInputChange={onSearchInputChange} />
585
+ rerender(
586
+ <StaticIntlProvider locale="en">
587
+ <SelectionProviderWrapper items={itemsMock.slice(2)} />
588
+ </StaticIntlProvider>
511
589
  )
512
- const searchInput = screen.getByRole("searchbox")
513
- const searchString = "1"
514
- await user.type(searchInput, searchString)
515
-
516
590
  await waitFor(() => {
517
591
  expect(
518
- screen.getByRole("option", {
592
+ screen.queryByRole("option", {
519
593
  name: "option-1-label-mock",
520
594
  })
521
- ).toBeVisible()
595
+ ).not.toBeInTheDocument()
522
596
  expect(
523
- screen.getByRole("option", {
597
+ screen.queryByRole("option", {
524
598
  name: "option-2-label-mock",
525
599
  })
526
- ).toBeVisible()
600
+ ).not.toBeInTheDocument()
527
601
  expect(
528
602
  screen.getByRole("option", {
529
603
  name: "option-3-label-mock",
@@ -531,59 +605,5 @@ describe("<SelectionProviderWrapper /> - Search Filtering", () => {
531
605
  ).toBeVisible()
532
606
  })
533
607
  })
534
-
535
- it("Calls back to the consumer with the search text", async () => {
536
- const onSearchInputChange = jest.fn()
537
-
538
- render(
539
- <SelectionProviderWrapper onSearchInputChange={onSearchInputChange} />
540
- )
541
- const searchInput = screen.getByRole("searchbox")
542
- const searchString = "1"
543
- await user.type(searchInput, searchString)
544
-
545
- await waitFor(() => {
546
- expect(onSearchInputChange).toBeCalledTimes(2)
547
- expect(onSearchInputChange).toBeCalledWith(searchString)
548
- })
549
- })
550
- })
551
- })
552
-
553
- describe("<SelectionProviderWrapper /> - controlling items from the consumer", () => {
554
- it("renders only items passed", () => {
555
- const { rerender } = render(<SelectionProviderWrapper />)
556
- expect(
557
- screen.getByRole("option", {
558
- name: "option-1-label-mock",
559
- })
560
- ).toBeVisible()
561
- expect(
562
- screen.getByRole("option", {
563
- name: "option-2-label-mock",
564
- })
565
- ).toBeVisible()
566
- expect(
567
- screen.getByRole("option", {
568
- name: "option-3-label-mock",
569
- })
570
- ).toBeVisible()
571
-
572
- rerender(<SelectionProviderWrapper items={itemsMock.slice(2)} />)
573
- expect(
574
- screen.queryByRole("option", {
575
- name: "option-1-label-mock",
576
- })
577
- ).not.toBeInTheDocument()
578
- expect(
579
- screen.queryByRole("option", {
580
- name: "option-2-label-mock",
581
- })
582
- ).not.toBeInTheDocument()
583
- expect(
584
- screen.getByRole("option", {
585
- name: "option-3-label-mock",
586
- })
587
- ).toBeVisible()
588
608
  })
589
609
  })