@kaizen/components 1.61.1 → 1.61.3

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 (113) hide show
  1. package/codemods/utils/__snapshots__/transformSource.spec.ts.snap +2 -2
  2. package/dist/cjs/RichTextEditor/RichTextContent/RichTextContent.cjs +10 -1
  3. package/dist/cjs/__future__/Select/Select.cjs +1 -6
  4. package/dist/cjs/__future__/Select/subcomponents/ListBox/ListBox.cjs +1 -2
  5. package/dist/cjs/__future__/Select/subcomponents/ListBox/ListBox.module.scss.cjs +1 -2
  6. package/dist/esm/RichTextEditor/RichTextContent/RichTextContent.mjs +11 -2
  7. package/dist/esm/__future__/Select/Select.mjs +1 -6
  8. package/dist/esm/__future__/Select/subcomponents/ListBox/ListBox.mjs +1 -2
  9. package/dist/esm/__future__/Select/subcomponents/ListBox/ListBox.module.scss.mjs +1 -2
  10. package/dist/styles.css +46 -44
  11. package/package.json +6 -5
  12. package/src/Avatar/Avatar.spec.tsx +1 -1
  13. package/src/Calendar/utils/setFocusInCalendar.spec.tsx +2 -2
  14. package/src/Checkbox/Checkbox/Checkbox.spec.tsx +2 -2
  15. package/src/Collapsible/Collapsible/Collapsible.spec.tsx +2 -14
  16. package/src/Collapsible/Collapsible/_docs/Collapsible.mdx +0 -2
  17. package/src/Collapsible/Collapsible/_docs/Collapsible.stickersheet.stories.tsx +49 -0
  18. package/src/Collapsible/Collapsible/_docs/Collapsible.stories.tsx +0 -11
  19. package/src/DateInput/DateInputDescription/DateInputDescription.spec.tsx +5 -6
  20. package/src/DateInput/DateInputWithIconButton/DateInputWithIconButton.spec.tsx +4 -6
  21. package/src/DatePicker/DatePicker.spec.tsx +32 -36
  22. package/src/DatePicker/subcomponents/DateInputField/DateInputField.spec.tsx +13 -13
  23. package/src/DatePicker/utils/validateDate.spec.ts +5 -6
  24. package/src/EmptyState/EmptyState.spec.tsx +1 -1
  25. package/src/ErrorPage/ErrorPage.spec.tsx +19 -19
  26. package/src/Filter/FilterBar/FilterBar.spec.tsx +26 -26
  27. package/src/Filter/FilterBar/context/utils/updateDependentFilters.spec.ts +2 -4
  28. package/src/Filter/FilterBar/subcomponents/AddFiltersMenu/AddFiltersMenu.spec.tsx +3 -4
  29. package/src/Filter/FilterBar/subcomponents/FilterBarButton/FilterBarButton.spec.tsx +3 -6
  30. package/src/Filter/FilterBar/subcomponents/FilterBarDatePicker/FilterBarDatePicker.spec.tsx +10 -12
  31. package/src/Filter/FilterBar/subcomponents/FilterBarDateRangePicker/FilterBarDateRangePicker.spec.tsx +9 -10
  32. package/src/Filter/FilterBar/subcomponents/FilterBarMultiSelect/FilterBarMultiSelect.spec.tsx +12 -14
  33. package/src/Filter/FilterBar/subcomponents/FilterBarSelect/FilterBarSelect.spec.tsx +11 -13
  34. package/src/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.spec.tsx +5 -5
  35. package/src/Filter/FilterDatePicker/FilterDatePicker.spec.tsx +12 -15
  36. package/src/Filter/FilterDatePicker/hooks/useDateInputHandlers.spec.ts +12 -15
  37. package/src/Filter/FilterDatePicker/hooks/useDateValidation.spec.ts +3 -5
  38. package/src/Filter/FilterDatePicker/subcomponents/FilterDatePickerField/FilterDatePickerField.spec.tsx +23 -28
  39. package/src/Filter/FilterDatePicker/utils/getDateValidationHandler.spec.tsx +2 -6
  40. package/src/Filter/FilterDatePicker/utils/validateDate.spec.ts +5 -6
  41. package/src/Filter/FilterDateRangePicker/FilterDateRangePicker.spec.tsx +2 -3
  42. package/src/Filter/FilterDateRangePicker/_docs/FilterDateRangePicker.stickersheet.stories.tsx +27 -0
  43. package/src/Filter/FilterDateRangePicker/subcomponents/DateRangeInputField/DateRangeInputField.spec.tsx +9 -11
  44. package/src/Filter/FilterDateRangePicker/subcomponents/DateRangeValidationMessage/DateRangeValidationMessage.spec.tsx +1 -63
  45. package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.spec.tsx +32 -32
  46. package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/useEndDateValidation.spec.ts +3 -8
  47. package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/useStartDateValidation.spec.ts +2 -5
  48. package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/utils/validateEndDateBeforeStartDate.spec.ts +2 -3
  49. package/src/Filter/FilterMultiSelect/FilterMultiSelect.spec.tsx +9 -10
  50. package/src/Filter/FilterMultiSelect/context/MenuTriggerProvider/MenuTriggerProvider.spec.tsx +2 -1
  51. package/src/Filter/FilterMultiSelect/context/SelectionProvider/SelectionProvider.spec.tsx +32 -32
  52. package/src/Filter/FilterMultiSelect/subcomponents/MultiSelectOption/MultiSelectOption.spec.tsx +9 -7
  53. package/src/Filter/FilterMultiSelect/subcomponents/SearchInput/SearchInput.spec.tsx +12 -12
  54. package/src/Filter/FilterMultiSelect/subcomponents/SelectionControlButton/ClearButton/ClearButton.spec.tsx +7 -7
  55. package/src/Filter/FilterMultiSelect/subcomponents/SelectionControlButton/SelectAllButton/SelectAllButton.spec.tsx +9 -9
  56. package/src/Filter/FilterSelect/FilterSelect.spec.tsx +3 -5
  57. package/src/Heading/Heading.spec.tsx +1 -31
  58. package/src/Illustration/subcomponents/VideoPlayer/VideoPlayer.spec.tsx +43 -97
  59. package/src/Illustration/subcomponents/VideoPlayer/VideoPlayer.stickersheet.stories.tsx +68 -0
  60. package/src/Illustration/subcomponents/VideoPlayer/VideoPlayer.stories.tsx +37 -0
  61. package/src/Input/InputRange/InputRange.spec.tsx +2 -2
  62. package/src/Input/InputSearch/InputSearch.spec.tsx +3 -5
  63. package/src/KaizenProvider/KaizenProvider.spec.tsx +2 -2
  64. package/src/KaizenProvider/subcomponents/OptionalIntlProvider/OptionalIntlProvider.spec.tsx +2 -3
  65. package/src/Modal/ConfirmationModal/ConfirmationModal.spec.tsx +7 -7
  66. package/src/Modal/ContextModal/ContextModal.spec.tsx +5 -5
  67. package/src/Modal/GenericModal/GenericModal.spec.tsx +4 -4
  68. package/src/Modal/InputEditModal/InputEditModal.spec.tsx +7 -7
  69. package/src/MultiSelect/subcomponents/MultiSelectOptionField/MultiSelectOptionField.spec.tsx +3 -3
  70. package/src/MultiSelect/subcomponents/MultiSelectOptions/MultiSelectOptions.spec.tsx +3 -3
  71. package/src/MultiSelect/subcomponents/MultiSelectToggle/MultiSelectToggle.spec.tsx +2 -2
  72. package/src/MultiSelect/subcomponents/Popover/Popover.module.scss +1 -0
  73. package/src/Notification/subcomponents/GenericNotification/GenericNotification.stories.tsx +60 -0
  74. package/src/Pagination/Pagination.spec.tsx +2 -2
  75. package/src/RichTextEditor/EditableRichTextContent/EditableRichTextContent.spec.tsx +4 -4
  76. package/src/RichTextEditor/RichTextContent/RichTextContent.tsx +11 -2
  77. package/src/RichTextEditor/utils/commands/addMark.spec.ts +2 -2
  78. package/src/RichTextEditor/utils/commands/fixtures/helpers.ts +4 -3
  79. package/src/RichTextEditor/utils/commands/getMarkAttrs.spec.ts +2 -2
  80. package/src/RichTextEditor/utils/commands/getMarkRange.spec.ts +2 -2
  81. package/src/RichTextEditor/utils/commands/listIsActive.spec.ts +2 -2
  82. package/src/RichTextEditor/utils/commands/markContainsSelection.spec.ts +2 -2
  83. package/src/RichTextEditor/utils/commands/markIsActive.spec.ts +2 -2
  84. package/src/RichTextEditor/utils/commands/removeMark.spec.ts +2 -2
  85. package/src/RichTextEditor/utils/commands/updateMark.spec.ts +2 -2
  86. package/src/RichTextEditor/utils/commands/validateAndRemoveMarks.spec.ts +3 -3
  87. package/src/RichTextEditor/utils/core/createRichTextEditor.spec.ts +11 -11
  88. package/src/RichTextEditor/utils/core/hooks/useRichTextEditor.spec.tsx +2 -2
  89. package/src/SplitButton/SplitButton.spec.tsx +5 -5
  90. package/src/SplitButton/subcomponents/DropdownButton/DropdownButton.spec.tsx +3 -4
  91. package/src/Text/Text.spec.tsx +1 -57
  92. package/src/TextArea/TextArea.spec.tsx +2 -2
  93. package/src/TimeField/TimeField.spec.tsx +2 -2
  94. package/src/TitleBlockZen/TitleBlockZen.spec.tsx +36 -68
  95. package/src/TitleBlockZen/_docs/TitleBlockZen.stories.tsx +78 -8
  96. package/src/TitleBlockZen/subcomponents/MobileActions.spec.tsx +2 -2
  97. package/src/TitleBlockZen/subcomponents/NavigationTabs.spec.tsx +8 -2
  98. package/src/ToggleSwitch/ToggleSwitch/ToggleSwitch.spec.tsx +2 -2
  99. package/src/__actions__/Menu/v1/Menu.spec.tsx +2 -2
  100. package/src/__containers__/GuidanceBlock/v1/GuidanceBlock.spec.tsx +5 -5
  101. package/src/__containers__/GuidanceBlock/v2/GuidanceBlock.spec.tsx +5 -5
  102. package/src/__future__/Select/Select.spec.tsx +8 -8
  103. package/src/__future__/Select/Select.tsx +1 -10
  104. package/src/__future__/Select/subcomponents/ListBox/ListBox.module.scss +3 -3
  105. package/src/__future__/Select/subcomponents/ListBox/ListBox.tsx +1 -1
  106. package/src/__overlays__/Tooltip/v1/Tooltip.spec.tsx +1 -1
  107. package/src/__overlays__/Tooltip/v1/utils/isSemanticElement.spec.tsx +4 -9
  108. package/src/utils/useMediaQueries.spec.tsx +7 -7
  109. package/src/Heading/__snapshots__/Heading.spec.tsx.snap +0 -85
  110. package/src/Illustration/utils/usePausePlay.spec.tsx +0 -85
  111. package/src/Notification/subcomponents/GenericNotification/GenericNotification.spec.tsx +0 -76
  112. package/src/Text/__snapshots__/Text.spec.tsx.snap +0 -49
  113. package/src/__overlays__/Tooltip/v1/subcomponents/AppearanceAnim.spec.tsx +0 -39
@@ -1,7 +1,7 @@
1
1
  import React, { useState } from "react"
2
2
  import { render, screen, waitFor, within } from "@testing-library/react"
3
3
  import userEvent from "@testing-library/user-event"
4
- import { renderWithIntl } from "~tests"
4
+
5
5
  import { FilterButton } from "~components/Filter/FilterButton"
6
6
  import { FilterDatePicker, FilterDatePickerProps } from "."
7
7
 
@@ -42,9 +42,7 @@ describe("<FilterDatePicker />", () => {
42
42
 
43
43
  describe("Filter button", () => {
44
44
  it("should show the selected date in the button", async () => {
45
- renderWithIntl(
46
- <FilterDatePickerWrapper selectedDate={new Date("2022-05-01")} />
47
- )
45
+ render(<FilterDatePickerWrapper selectedDate={new Date("2022-05-01")} />)
48
46
  await waitFor(() => {
49
47
  const filterButton = screen.getByRole("button", {
50
48
  name: "Drank : 1 May 2022",
@@ -54,7 +52,7 @@ describe("<FilterDatePicker />", () => {
54
52
  })
55
53
 
56
54
  it("should show the calendar when the filter button is clicked", async () => {
57
- renderWithIntl(<FilterDatePickerWrapper />)
55
+ render(<FilterDatePickerWrapper />)
58
56
 
59
57
  const filterButton = screen.getByRole("button", {
60
58
  name: "Drank",
@@ -67,7 +65,7 @@ describe("<FilterDatePicker />", () => {
67
65
  })
68
66
 
69
67
  it("closes the popover when a valid date has been submitted via the calendar picker", async () => {
70
- const { getByRole } = renderWithIntl(<FilterDatePickerWrapper />)
68
+ const { getByRole } = render(<FilterDatePickerWrapper />)
71
69
  const triggerButton = getByRole("button", {
72
70
  name: "Drank",
73
71
  })
@@ -90,7 +88,7 @@ describe("<FilterDatePicker />", () => {
90
88
 
91
89
  describe("Text input", () => {
92
90
  it("validates the date on blur", async () => {
93
- const { getByRole, getByLabelText, getByText } = renderWithIntl(
91
+ const { getByRole, getByLabelText, getByText } = render(
94
92
  <FilterDatePickerWrapper />
95
93
  )
96
94
  const triggerButton = getByRole("button", {
@@ -116,7 +114,7 @@ describe("<FilterDatePicker />", () => {
116
114
 
117
115
  describe("Pressing Enter in the text input", () => {
118
116
  it("closes the popover when a valid date has been submitted via the text input field", async () => {
119
- const { getByRole, getByLabelText } = renderWithIntl(
117
+ const { getByRole, getByLabelText } = render(
120
118
  <FilterDatePickerWrapper />
121
119
  )
122
120
  const triggerButton = getByRole("button", {
@@ -141,7 +139,7 @@ describe("<FilterDatePicker />", () => {
141
139
  })
142
140
 
143
141
  it("does not close the popover when an invalid date has been submitted via the text input field", async () => {
144
- const { getByRole, getByLabelText, getByText } = renderWithIntl(
142
+ const { getByRole, getByLabelText, getByText } = render(
145
143
  <FilterDatePickerWrapper />
146
144
  )
147
145
  const triggerButton = getByRole("button", {
@@ -168,10 +166,9 @@ describe("<FilterDatePicker />", () => {
168
166
  })
169
167
 
170
168
  it("does not close the popover when the text input field has been cleared", async () => {
171
- const { getByRole, getByLabelText, getByText, queryByText } =
172
- renderWithIntl(
173
- <FilterDatePickerWrapper selectedDate={new Date("32/13/2022")} />
174
- )
169
+ const { getByRole, getByLabelText, getByText, queryByText } = render(
170
+ <FilterDatePickerWrapper selectedDate={new Date("32/13/2022")} />
171
+ )
175
172
  const triggerButton = getByRole("button", {
176
173
  name: "Drank : Invalid Date",
177
174
  })
@@ -198,7 +195,7 @@ describe("<FilterDatePicker />", () => {
198
195
  })
199
196
 
200
197
  it("does not close the popover when there is a selected date and the user navigates months", async () => {
201
- const { getByRole } = renderWithIntl(
198
+ const { getByRole } = render(
202
199
  <FilterDatePickerWrapper selectedDate={new Date("01/01/2022")} />
203
200
  )
204
201
  const triggerButton = getByRole("button", {
@@ -224,7 +221,7 @@ describe("<FilterDatePicker />", () => {
224
221
  })
225
222
 
226
223
  it("updates the selected value in the trigger button when typing a date", async () => {
227
- const { getByRole, getByLabelText } = renderWithIntl(
224
+ const { getByRole, getByLabelText } = render(
228
225
  <FilterDatePickerWrapper selectedDate={new Date("06-06-2022")} />
229
226
  )
230
227
  const triggerButton = getByRole("button", {
@@ -1,16 +1,16 @@
1
1
  import { ChangeEvent, FocusEvent, KeyboardEvent } from "react"
2
2
  import { renderHook, act } from "@testing-library/react"
3
3
  import { enAU } from "date-fns/locale"
4
+ import { vi } from "vitest"
4
5
  import * as isSelectingDayInCalendar from "~components/Calendar/utils/isSelectingDayInCalendar"
5
6
  import { useDateInputHandlers } from "./useDateInputHandlers"
6
-
7
7
  const locale = enAU
8
- const setInputValue = jest.fn()
9
- const onDateChange = jest.fn()
8
+ const setInputValue = vi.fn()
9
+ const onDateChange = vi.fn()
10
10
 
11
11
  describe("useDateInputHandlers", () => {
12
12
  beforeEach(() => {
13
- jest.clearAllMocks()
13
+ vi.clearAllMocks()
14
14
  })
15
15
 
16
16
  describe("onChange", () => {
@@ -34,7 +34,7 @@ describe("useDateInputHandlers", () => {
34
34
  })
35
35
 
36
36
  it("calls custom onChange when provided", () => {
37
- const onChangeMock = jest.fn<void, [ChangeEvent]>()
37
+ const onChangeMock = vi.fn()
38
38
 
39
39
  const { result } = renderHook(() =>
40
40
  useDateInputHandlers({
@@ -97,7 +97,7 @@ describe("useDateInputHandlers", () => {
97
97
  })
98
98
 
99
99
  it("calls custom onFocus when provided", () => {
100
- const onFocusMock = jest.fn<void, [FocusEvent<HTMLInputElement>]>()
100
+ const onFocusMock = vi.fn()
101
101
 
102
102
  const { result } = renderHook(() =>
103
103
  useDateInputHandlers({
@@ -122,7 +122,7 @@ describe("useDateInputHandlers", () => {
122
122
 
123
123
  describe("onBlur", () => {
124
124
  it("does not do anything when selecting a day in the calendar", () => {
125
- const onBlurMock = jest.fn<void, [FocusEvent<HTMLInputElement>]>()
125
+ const onBlurMock = vi.fn()
126
126
  const { result } = renderHook(() =>
127
127
  useDateInputHandlers({
128
128
  locale,
@@ -136,10 +136,7 @@ describe("useDateInputHandlers", () => {
136
136
  currentTarget: { value: "" },
137
137
  } as FocusEvent<HTMLInputElement>
138
138
 
139
- const spy = jest.spyOn(
140
- isSelectingDayInCalendar,
141
- "isSelectingDayInCalendar"
142
- )
139
+ const spy = vi.spyOn(isSelectingDayInCalendar, "isSelectingDayInCalendar")
143
140
  spy.mockReturnValue(true)
144
141
 
145
142
  act(() => {
@@ -238,7 +235,7 @@ describe("useDateInputHandlers", () => {
238
235
  })
239
236
 
240
237
  it("calls custom onBlur when provided on input with value", () => {
241
- const onBlurMock = jest.fn<void, [FocusEvent<HTMLInputElement>]>()
238
+ const onBlurMock = vi.fn()
242
239
  const { result } = renderHook(() =>
243
240
  useDateInputHandlers({
244
241
  locale,
@@ -260,7 +257,7 @@ describe("useDateInputHandlers", () => {
260
257
  })
261
258
 
262
259
  it("calls custom onBlur when provided on empty", () => {
263
- const onBlurMock = jest.fn<void, [FocusEvent<HTMLInputElement>]>()
260
+ const onBlurMock = vi.fn()
264
261
  const { result } = renderHook(() =>
265
262
  useDateInputHandlers({
266
263
  locale,
@@ -305,7 +302,7 @@ describe("useDateInputHandlers", () => {
305
302
  })
306
303
 
307
304
  it("calls onDateSubmit when provided", () => {
308
- const onDateSubmit = jest.fn<void, [Date]>()
305
+ const onDateSubmit = vi.fn()
309
306
 
310
307
  const { result } = renderHook(() =>
311
308
  useDateInputHandlers({
@@ -330,7 +327,7 @@ describe("useDateInputHandlers", () => {
330
327
  })
331
328
 
332
329
  it("calls custom onKeyDown when provided", () => {
333
- const onKeyDownMock = jest.fn<void, [KeyboardEvent]>()
330
+ const onKeyDownMock = vi.fn()
334
331
 
335
332
  const { result } = renderHook(() =>
336
333
  useDateInputHandlers({
@@ -1,6 +1,6 @@
1
1
  import { act } from "react"
2
- import { waitFor, renderHook } from "@testing-library/react"
3
- import { renderWithIntl } from "~tests"
2
+ import { waitFor, renderHook, render } from "@testing-library/react"
3
+
4
4
  import { useDateValidation } from "./useDateValidation"
5
5
 
6
6
  describe("useDateValidation()", () => {
@@ -40,9 +40,7 @@ describe("useDateValidation()", () => {
40
40
 
41
41
  expect(result.current.validationMessage?.status).toBe("error")
42
42
 
43
- const { container } = renderWithIntl(
44
- result.current.validationMessage?.message
45
- )
43
+ const { container } = render(result.current.validationMessage?.message)
46
44
  await waitFor(() => {
47
45
  expect(container).toHaveTextContent("Date:potato is an invalid date")
48
46
  })
@@ -1,12 +1,11 @@
1
- import React, { useState, FocusEvent } from "react"
2
- import { screen, waitFor, within } from "@testing-library/react"
1
+ import React, { useState } from "react"
2
+ import { screen, waitFor, within, render } from "@testing-library/react"
3
3
  import userEvent from "@testing-library/user-event"
4
- import { renderWithIntl } from "~tests"
5
4
  import { FilterDatePickerField, FilterDatePickerFieldProps } from "."
6
5
 
7
6
  const user = userEvent.setup()
8
7
 
9
- const inputDateOnSubmit = jest.fn<void, [Date | undefined]>()
8
+ const inputDateOnSubmit = vi.fn()
10
9
 
11
10
  const FilterDatePickerFieldWrapper = ({
12
11
  selectedDate,
@@ -36,19 +35,19 @@ const waitForI18nContent = async (): Promise<void> => {
36
35
 
37
36
  describe("<FilterDatePickerField />", () => {
38
37
  beforeEach(() => {
39
- jest.clearAllMocks()
38
+ vi.clearAllMocks()
40
39
  })
41
40
 
42
41
  describe("Inputs", () => {
43
42
  it("has empty inputs when a date is not provided", async () => {
44
- renderWithIntl(<FilterDatePickerFieldWrapper />)
43
+ render(<FilterDatePickerFieldWrapper />)
45
44
  await waitForI18nContent()
46
45
  const inputDate = screen.getByLabelText("Date")
47
46
  expect(inputDate).toHaveValue("")
48
47
  })
49
48
 
50
49
  it("pre-fills the inputs when date is provided", async () => {
51
- renderWithIntl(
50
+ render(
52
51
  <FilterDatePickerFieldWrapper selectedDate={new Date("2022-05-01")} />
53
52
  )
54
53
  await waitForI18nContent()
@@ -57,7 +56,7 @@ describe("<FilterDatePickerField />", () => {
57
56
  })
58
57
 
59
58
  it("allows customising the input labels", async () => {
60
- renderWithIntl(
59
+ render(
61
60
  <FilterDatePickerFieldWrapper
62
61
  selectedDate={new Date("2022-05-01")}
63
62
  inputProps={{
@@ -73,9 +72,9 @@ describe("<FilterDatePickerField />", () => {
73
72
 
74
73
  describe("onBlur", () => {
75
74
  it("updates date input and calendar values correctly on blur", async () => {
76
- const inputDateOnBlur = jest.fn<void, [FocusEvent]>()
75
+ const inputDateOnBlur = vi.fn()
77
76
 
78
- renderWithIntl(
77
+ render(
79
78
  <FilterDatePickerFieldWrapper
80
79
  selectedDate={new Date("2022-05-02")}
81
80
  onBlur={inputDateOnBlur}
@@ -108,7 +107,7 @@ describe("<FilterDatePickerField />", () => {
108
107
 
109
108
  describe("Press Enter key", () => {
110
109
  it("updates calendar values and calls submit when the date is valid", async () => {
111
- renderWithIntl(
110
+ render(
112
111
  <FilterDatePickerFieldWrapper selectedDate={new Date("2022-05-02")} />
113
112
  )
114
113
  await waitForI18nContent()
@@ -134,7 +133,7 @@ describe("<FilterDatePickerField />", () => {
134
133
  })
135
134
 
136
135
  it("does not call submit when the date is invalid", async () => {
137
- renderWithIntl(
136
+ render(
138
137
  <FilterDatePickerFieldWrapper selectedDate={new Date("2022-05-02")} />
139
138
  )
140
139
  await waitForI18nContent()
@@ -152,7 +151,7 @@ describe("<FilterDatePickerField />", () => {
152
151
  })
153
152
 
154
153
  it("updates the calendar month to match the new start date input", async () => {
155
- renderWithIntl(
154
+ render(
156
155
  <FilterDatePickerFieldWrapper selectedDate={new Date("2022-05-02")} />
157
156
  )
158
157
  await waitForI18nContent()
@@ -175,7 +174,7 @@ describe("<FilterDatePickerField />", () => {
175
174
 
176
175
  describe("Calendar", () => {
177
176
  it("shows the default month as the start month when there isn't a selected value", async () => {
178
- renderWithIntl(
177
+ render(
179
178
  <FilterDatePickerFieldWrapper defaultMonth={new Date("2022-05-02")} />
180
179
  )
181
180
  await waitForI18nContent()
@@ -183,7 +182,7 @@ describe("<FilterDatePickerField />", () => {
183
182
  })
184
183
 
185
184
  it("shows the selected start date month as the start month when provided", async () => {
186
- renderWithIntl(
185
+ render(
187
186
  <FilterDatePickerFieldWrapper selectedDate={new Date("2022-05-01")} />
188
187
  )
189
188
  await waitForI18nContent()
@@ -191,9 +190,7 @@ describe("<FilterDatePickerField />", () => {
191
190
  })
192
191
 
193
192
  it("shows the current month as the start month when selected date is invalid", async () => {
194
- renderWithIntl(
195
- <FilterDatePickerFieldWrapper selectedDate={new Date("potato")} />
196
- )
193
+ render(<FilterDatePickerFieldWrapper selectedDate={new Date("potato")} />)
197
194
  await waitForI18nContent()
198
195
  const currentMonth = new Date().toLocaleDateString("en-AU", {
199
196
  month: "long",
@@ -203,7 +200,7 @@ describe("<FilterDatePickerField />", () => {
203
200
  })
204
201
 
205
202
  it("calls the onDateSubmit when selecting a date", async () => {
206
- renderWithIntl(
203
+ render(
207
204
  <FilterDatePickerFieldWrapper defaultMonth={new Date("2022-05-01")} />
208
205
  )
209
206
  const targetMonth = screen.getByRole("grid", { name: "May 2022" })
@@ -218,7 +215,7 @@ describe("<FilterDatePickerField />", () => {
218
215
  })
219
216
 
220
217
  it("updates the input when changing the date", async () => {
221
- renderWithIntl(
218
+ render(
222
219
  <FilterDatePickerFieldWrapper selectedDate={new Date("2022-05-15")} />
223
220
  )
224
221
  await waitForI18nContent()
@@ -240,7 +237,7 @@ describe("<FilterDatePickerField />", () => {
240
237
  })
241
238
 
242
239
  it("clears the inputs when clearing the calendar value", async () => {
243
- renderWithIntl(
240
+ render(
244
241
  <FilterDatePickerFieldWrapper selectedDate={new Date("2022-05-15")} />
245
242
  )
246
243
  await waitForI18nContent()
@@ -266,7 +263,7 @@ describe("<FilterDatePickerField />", () => {
266
263
 
267
264
  describe("Custom validation", () => {
268
265
  it("shows validation messages passed in from the consumer", async () => {
269
- renderWithIntl(
266
+ render(
270
267
  <FilterDatePickerFieldWrapper
271
268
  onValidate={(): void => undefined}
272
269
  validationMessage={{
@@ -282,7 +279,7 @@ describe("<FilterDatePickerField />", () => {
282
279
 
283
280
  describe("Inbuilt validation", () => {
284
281
  it("shows inbuilt validation messages", async () => {
285
- const { container } = renderWithIntl(<FilterDatePickerFieldWrapper />)
282
+ const { container } = render(<FilterDatePickerFieldWrapper />)
286
283
  await waitForI18nContent()
287
284
 
288
285
  const inputDate = screen.getByLabelText("Date")
@@ -301,7 +298,7 @@ describe("<FilterDatePickerField />", () => {
301
298
  })
302
299
 
303
300
  it("shows inbuilt validation messages for pre-existing values", async () => {
304
- const { container } = renderWithIntl(
301
+ const { container } = render(
305
302
  <FilterDatePickerFieldWrapper
306
303
  selectedDate={new Date("2022-05-15")}
307
304
  disabledDays={[new Date("2022-05-15")]}
@@ -317,9 +314,7 @@ describe("<FilterDatePickerField />", () => {
317
314
  })
318
315
 
319
316
  it("does not call onDateSubmit when the input value is invalid", async () => {
320
- const { getByLabelText } = renderWithIntl(
321
- <FilterDatePickerFieldWrapper />
322
- )
317
+ const { getByLabelText } = render(<FilterDatePickerFieldWrapper />)
323
318
  await waitForI18nContent()
324
319
 
325
320
  const inputDate = getByLabelText("Date")
@@ -333,7 +328,7 @@ describe("<FilterDatePickerField />", () => {
333
328
  })
334
329
 
335
330
  it("re-validates values when selecting a value using the calendar", async () => {
336
- const { container } = renderWithIntl(
331
+ const { container } = render(
337
332
  <FilterDatePickerFieldWrapper
338
333
  selectedDate={new Date("potato")}
339
334
  defaultMonth={new Date("2022-05-01")}
@@ -1,13 +1,9 @@
1
1
  import React from "react"
2
2
  import { LabelledMessage } from "~components/LabelledMessage"
3
- import { DateValidationResponse, ValidationMessage } from "../types"
4
3
  import { getDateValidationHandler } from "./getDateValidationHandler"
5
4
 
6
- const onValidate = jest.fn<void, [DateValidationResponse]>()
7
- const setInbuiltValidationMessage = jest.fn<
8
- void,
9
- [ValidationMessage | undefined]
10
- >()
5
+ const onValidate = vi.fn()
6
+ const setInbuiltValidationMessage = vi.fn()
11
7
 
12
8
  describe("getDateValidationHandler()", () => {
13
9
  afterEach(() => {
@@ -1,5 +1,4 @@
1
- import { waitFor, screen } from "@testing-library/react"
2
- import { renderWithIntl } from "~tests"
1
+ import { waitFor, screen, render } from "@testing-library/react"
3
2
  import { validateDate } from "./validateDate"
4
3
 
5
4
  describe("validateDate()", () => {
@@ -41,7 +40,7 @@ describe("validateDate()", () => {
41
40
 
42
41
  expect(validationMessage?.status).toBe("error")
43
42
 
44
- renderWithIntl(validationMessage?.message)
43
+ render(validationMessage?.message)
45
44
  await waitFor(() => {
46
45
  expect(screen.getByText("Date is invalid")).toBeVisible()
47
46
  })
@@ -67,7 +66,7 @@ describe("validateDate()", () => {
67
66
 
68
67
  expect(validationMessage?.status).toBe("error")
69
68
 
70
- renderWithIntl(validationMessage?.message)
69
+ render(validationMessage?.message)
71
70
  await waitFor(() => {
72
71
  expect(screen.getByText("Date is invalid")).toBeVisible()
73
72
  })
@@ -93,7 +92,7 @@ describe("validateDate()", () => {
93
92
 
94
93
  expect(validationMessage?.status).toBe("error")
95
94
 
96
- renderWithIntl(validationMessage?.message)
95
+ render(validationMessage?.message)
97
96
  await waitFor(() => {
98
97
  expect(screen.getByText("potato is an invalid date")).toBeVisible()
99
98
  })
@@ -124,7 +123,7 @@ describe("validateDate()", () => {
124
123
 
125
124
  expect(validationMessage?.status).toBe("error")
126
125
 
127
- renderWithIntl(validationMessage?.message)
126
+ render(validationMessage?.message)
128
127
  await waitFor(() => {
129
128
  expect(
130
129
  screen.getByText("03/01/2022 is not available, try another date")
@@ -1,7 +1,6 @@
1
1
  import React, { useState } from "react"
2
2
  import { render, waitFor } from "@testing-library/react"
3
3
  import userEvent from "@testing-library/user-event"
4
- import { renderWithIntl } from "~tests"
5
4
  import { DateRange } from "~components/Calendar"
6
5
  import { FilterButton } from "~components/Filter/FilterButton"
7
6
  import { FilterDateRangePicker, FilterDateRangePickerProps } from "./index"
@@ -82,7 +81,7 @@ describe("<FilterDateRangePicker />", () => {
82
81
  })
83
82
 
84
83
  it("should show the calendar when the filter button is clicked", async () => {
85
- const { queryByRole, getByRole, getByText } = renderWithIntl(
84
+ const { queryByRole, getByRole, getByText } = render(
86
85
  <FilterDateRangePickerWrapper defaultMonth={new Date("2022-05-01")} />
87
86
  )
88
87
  expect(queryByRole("dialog")).not.toBeInTheDocument()
@@ -96,7 +95,7 @@ describe("<FilterDateRangePicker />", () => {
96
95
  })
97
96
 
98
97
  it("should not show a date range in the button if the selected range is not valid", async () => {
99
- const { getByRole, getByLabelText } = renderWithIntl(
98
+ const { getByRole, getByLabelText } = render(
100
99
  <FilterDateRangePickerWrapper
101
100
  selectedRange={{ from: new Date("2022-05-01") }}
102
101
  />
@@ -135,6 +135,33 @@ const StickerSheetTemplate: StickerSheetStory = {
135
135
  "data-testid": "test__filter-drp-field--validation--end",
136
136
  }}
137
137
  />
138
+ <FilterDateRangePickerField
139
+ id="stickersheet--filter-drp-field--validation-merged"
140
+ label="Dates"
141
+ locale="en-US"
142
+ selectedRange={rangeFieldValidation}
143
+ onRangeChange={setRangeFieldValidation}
144
+ onValidate={{
145
+ dateStart: action("Validation story: date start onValidate"),
146
+ dateEnd: action("Validation story: date end onValidate"),
147
+ }}
148
+ validationMessage={{
149
+ dateStart: {
150
+ status: "error",
151
+ message:
152
+ "(Start date custom message) Jelly-filled doughnuts are my favourite!",
153
+ },
154
+ dateEnd: {
155
+ status: "caution",
156
+ message:
157
+ "(End date custom message) Jelly-filled doughnuts are dangerous!",
158
+ },
159
+ }}
160
+ inputEndDateProps={{
161
+ "data-testid":
162
+ "test__filter-drp-field--validation-merged--end",
163
+ }}
164
+ />
138
165
  </StickerSheet.Row>
139
166
  </StickerSheet.Body>
140
167
  </StickerSheet>
@@ -1,8 +1,8 @@
1
1
  import React, { useRef } from "react"
2
- import { screen, waitFor } from "@testing-library/react"
2
+ import { screen, waitFor, render } from "@testing-library/react"
3
3
  import userEvent from "@testing-library/user-event"
4
4
  import { enAU } from "date-fns/locale"
5
- import { renderWithIntl } from "~tests"
5
+ import { vi } from "vitest"
6
6
  import {
7
7
  DateRangeInputField,
8
8
  DateRangeInputFieldProps,
@@ -25,9 +25,7 @@ const DateRangeInputFieldWrapper = (
25
25
 
26
26
  describe("<DateRangeInputField />", () => {
27
27
  it("has unique ids for both inputs", async () => {
28
- const { container } = renderWithIntl(
29
- <DateRangeInputFieldWrapper id="range" />
30
- )
28
+ const { container } = render(<DateRangeInputFieldWrapper id="range" />)
31
29
  const inputStart = container.querySelector("#range--from")
32
30
  const inputEnd = container.querySelector("#range--to")
33
31
  await waitFor(() => {
@@ -37,14 +35,14 @@ describe("<DateRangeInputField />", () => {
37
35
  })
38
36
 
39
37
  it("has an accessible name for the fieldset", async () => {
40
- renderWithIntl(<DateRangeInputFieldWrapper />)
38
+ render(<DateRangeInputFieldWrapper />)
41
39
  await waitFor(() => {
42
40
  expect(screen.getByRole("group", { name: "Dates" })).toBeVisible()
43
41
  })
44
42
  })
45
43
 
46
44
  it("adds description to both inputs", async () => {
47
- renderWithIntl(<DateRangeInputFieldWrapper />)
45
+ render(<DateRangeInputFieldWrapper />)
48
46
  const inputStart = screen.getByRole("textbox", { name: "Date from" })
49
47
  const inputEnd = screen.getByRole("textbox", { name: "Date to" })
50
48
  await waitFor(() => {
@@ -56,7 +54,7 @@ describe("<DateRangeInputField />", () => {
56
54
  })
57
55
 
58
56
  it("adds validation message to description if it exists", async () => {
59
- renderWithIntl(
57
+ render(
60
58
  <DateRangeInputFieldWrapper
61
59
  validationMessage={{
62
60
  dateStart: {
@@ -77,7 +75,7 @@ describe("<DateRangeInputField />", () => {
77
75
 
78
76
  describe("Disabled", () => {
79
77
  it("disables both inputs", async () => {
80
- renderWithIntl(<DateRangeInputFieldWrapper disabled />)
78
+ render(<DateRangeInputFieldWrapper disabled />)
81
79
  const inputStart = screen.getByRole("textbox", { name: "Date from" })
82
80
  const inputEnd = screen.getByRole("textbox", { name: "Date to" })
83
81
  await waitFor(() => {
@@ -89,7 +87,7 @@ describe("<DateRangeInputField />", () => {
89
87
 
90
88
  describe("Refs", () => {
91
89
  it("correctly passes through both input refs", async () => {
92
- const onButtonClick = jest.fn()
90
+ const onButtonClick = vi.fn()
93
91
 
94
92
  const Wrapper = (): JSX.Element => {
95
93
  const inputStartDateRef = useRef<HTMLInputElement>(null)
@@ -119,7 +117,7 @@ describe("<DateRangeInputField />", () => {
119
117
  )
120
118
  }
121
119
 
122
- renderWithIntl(<Wrapper />)
120
+ render(<Wrapper />)
123
121
 
124
122
  await user.click(screen.getByText("Click me"))
125
123
  expect(onButtonClick).toHaveBeenCalledWith(
@@ -1,70 +1,8 @@
1
1
  import React from "react"
2
- import { render, screen, within } from "@testing-library/react"
2
+ import { render } from "@testing-library/react"
3
3
  import { DateRangeValidationMessage } from "./DateRangeValidationMessage"
4
4
 
5
5
  describe("<DateRangeValidationMessage />", () => {
6
- describe("when the consumer has given it a node", () => {
7
- it("will render a single validation field message", () => {
8
- render(
9
- <DateRangeValidationMessage
10
- validationMessage={{
11
- dateEnd: {
12
- status: "error",
13
- message: <p>Validation message</p>,
14
- },
15
- }}
16
- />
17
- )
18
- expect(screen.getByText("Validation message")).toBeVisible()
19
- })
20
-
21
- it("combines multiple validation messages with the same status", () => {
22
- const { container } = render(
23
- <DateRangeValidationMessage
24
- validationMessage={{
25
- dateStart: {
26
- status: "error",
27
- message: '"Date from" is not a valid date selection.',
28
- },
29
- dateEnd: {
30
- status: "error",
31
- message:
32
- 'Date to" cannot be earlier than the "Date from" selection.',
33
- },
34
- }}
35
- />
36
- )
37
- const validationList = screen.getByRole("list")
38
- const { getAllByRole } = within(validationList)
39
- const items = getAllByRole("listitem")
40
-
41
- expect(items.length).toBe(2)
42
- expect(container.getElementsByClassName("error").length).toBe(1)
43
- })
44
- })
45
-
46
- describe("when consumer passes validationMessage object and has different status", () => {
47
- it("will render two validation field messages", () => {
48
- const { container } = render(
49
- <DateRangeValidationMessage
50
- validationMessage={{
51
- dateStart: {
52
- status: "error",
53
- message: '"Date from" is close to the submission date.',
54
- },
55
- dateEnd: {
56
- status: "caution",
57
- message:
58
- '"Date to" cannot be earlier than the "Date from" selection.',
59
- },
60
- }}
61
- />
62
- )
63
- expect(container.getElementsByClassName("error").length).toBe(1)
64
- expect(container.getElementsByClassName("caution").length).toBe(1)
65
- })
66
- })
67
-
68
6
  it("renders an id when passed in", () => {
69
7
  const { container } = render(
70
8
  <DateRangeValidationMessage