@kaizen/components 1.61.0 → 1.61.2
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.
- package/codemods/utils/__snapshots__/transformSource.spec.ts.snap +2 -2
- package/dist/cjs/RichTextEditor/RichTextContent/RichTextContent.cjs +10 -1
- package/dist/esm/RichTextEditor/RichTextContent/RichTextContent.mjs +11 -2
- package/dist/styles.css +115 -114
- package/package.json +5 -4
- package/src/Avatar/Avatar.spec.tsx +1 -1
- package/src/Calendar/utils/setFocusInCalendar.spec.tsx +2 -2
- package/src/Checkbox/Checkbox/Checkbox.spec.tsx +2 -2
- package/src/Collapsible/Collapsible/Collapsible.spec.tsx +2 -14
- package/src/Collapsible/Collapsible/_docs/Collapsible.stickersheet.stories.tsx +49 -0
- package/src/Collapsible/Collapsible/_docs/Collapsible.stories.tsx +0 -11
- package/src/DateInput/DateInputDescription/DateInputDescription.spec.tsx +5 -6
- package/src/DateInput/DateInputWithIconButton/DateInputWithIconButton.spec.tsx +4 -6
- package/src/DatePicker/DatePicker.spec.tsx +32 -36
- package/src/DatePicker/subcomponents/DateInputField/DateInputField.spec.tsx +13 -13
- package/src/DatePicker/utils/validateDate.spec.ts +5 -6
- package/src/EmptyState/EmptyState.spec.tsx +1 -1
- package/src/ErrorPage/ErrorPage.spec.tsx +19 -19
- package/src/Filter/FilterBar/FilterBar.spec.tsx +26 -26
- package/src/Filter/FilterBar/context/utils/updateDependentFilters.spec.ts +2 -4
- package/src/Filter/FilterBar/subcomponents/AddFiltersMenu/AddFiltersMenu.spec.tsx +3 -4
- package/src/Filter/FilterBar/subcomponents/FilterBarButton/FilterBarButton.spec.tsx +3 -6
- package/src/Filter/FilterBar/subcomponents/FilterBarDatePicker/FilterBarDatePicker.spec.tsx +10 -12
- package/src/Filter/FilterBar/subcomponents/FilterBarDateRangePicker/FilterBarDateRangePicker.spec.tsx +9 -10
- package/src/Filter/FilterBar/subcomponents/FilterBarMultiSelect/FilterBarMultiSelect.spec.tsx +12 -14
- package/src/Filter/FilterBar/subcomponents/FilterBarSelect/FilterBarSelect.spec.tsx +11 -13
- package/src/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.spec.tsx +5 -5
- package/src/Filter/FilterDatePicker/FilterDatePicker.spec.tsx +12 -15
- package/src/Filter/FilterDatePicker/hooks/useDateInputHandlers.spec.ts +12 -15
- package/src/Filter/FilterDatePicker/hooks/useDateValidation.spec.ts +3 -5
- package/src/Filter/FilterDatePicker/subcomponents/FilterDatePickerField/FilterDatePickerField.spec.tsx +23 -28
- package/src/Filter/FilterDatePicker/utils/getDateValidationHandler.spec.tsx +2 -6
- package/src/Filter/FilterDatePicker/utils/validateDate.spec.ts +5 -6
- package/src/Filter/FilterDateRangePicker/FilterDateRangePicker.spec.tsx +2 -3
- package/src/Filter/FilterDateRangePicker/_docs/FilterDateRangePicker.stickersheet.stories.tsx +27 -0
- package/src/Filter/FilterDateRangePicker/subcomponents/DateRangeInputField/DateRangeInputField.spec.tsx +9 -11
- package/src/Filter/FilterDateRangePicker/subcomponents/DateRangeValidationMessage/DateRangeValidationMessage.spec.tsx +1 -63
- package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.spec.tsx +32 -32
- package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/useEndDateValidation.spec.ts +3 -8
- package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/useStartDateValidation.spec.ts +2 -5
- package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/utils/validateEndDateBeforeStartDate.spec.ts +2 -3
- package/src/Filter/FilterMultiSelect/FilterMultiSelect.spec.tsx +9 -10
- package/src/Filter/FilterMultiSelect/context/MenuTriggerProvider/MenuTriggerProvider.spec.tsx +2 -1
- package/src/Filter/FilterMultiSelect/context/SelectionProvider/SelectionProvider.spec.tsx +32 -32
- package/src/Filter/FilterMultiSelect/subcomponents/MultiSelectOption/MultiSelectOption.spec.tsx +9 -7
- package/src/Filter/FilterMultiSelect/subcomponents/SearchInput/SearchInput.spec.tsx +12 -12
- package/src/Filter/FilterMultiSelect/subcomponents/SelectionControlButton/ClearButton/ClearButton.spec.tsx +7 -7
- package/src/Filter/FilterMultiSelect/subcomponents/SelectionControlButton/SelectAllButton/SelectAllButton.spec.tsx +9 -9
- package/src/Filter/FilterSelect/FilterSelect.spec.tsx +2 -2
- package/src/Heading/Heading.spec.tsx +1 -31
- package/src/Illustration/subcomponents/VideoPlayer/VideoPlayer.spec.tsx +43 -97
- package/src/Illustration/subcomponents/VideoPlayer/VideoPlayer.stickersheet.stories.tsx +68 -0
- package/src/Illustration/subcomponents/VideoPlayer/VideoPlayer.stories.tsx +37 -0
- package/src/Input/InputRange/InputRange.spec.tsx +2 -2
- package/src/Input/InputSearch/InputSearch.spec.tsx +3 -5
- package/src/KaizenProvider/KaizenProvider.spec.tsx +2 -2
- package/src/KaizenProvider/subcomponents/OptionalIntlProvider/OptionalIntlProvider.spec.tsx +2 -3
- package/src/Modal/ConfirmationModal/ConfirmationModal.spec.tsx +7 -7
- package/src/Modal/ContextModal/ContextModal.spec.tsx +5 -5
- package/src/Modal/GenericModal/GenericModal.spec.tsx +4 -4
- package/src/Modal/InputEditModal/InputEditModal.spec.tsx +7 -7
- package/src/MultiSelect/subcomponents/MultiSelectOptionField/MultiSelectOptionField.spec.tsx +3 -3
- package/src/MultiSelect/subcomponents/MultiSelectOptions/MultiSelectOptions.spec.tsx +3 -3
- package/src/MultiSelect/subcomponents/MultiSelectToggle/MultiSelectToggle.spec.tsx +2 -2
- package/src/Notification/subcomponents/GenericNotification/GenericNotification.stories.tsx +60 -0
- package/src/Pagination/Pagination.spec.tsx +2 -2
- package/src/RichTextEditor/EditableRichTextContent/EditableRichTextContent.spec.tsx +4 -4
- package/src/RichTextEditor/RichTextContent/RichTextContent.tsx +11 -2
- package/src/RichTextEditor/utils/commands/addMark.spec.ts +2 -2
- package/src/RichTextEditor/utils/commands/fixtures/helpers.ts +4 -3
- package/src/RichTextEditor/utils/commands/getMarkAttrs.spec.ts +2 -2
- package/src/RichTextEditor/utils/commands/getMarkRange.spec.ts +2 -2
- package/src/RichTextEditor/utils/commands/listIsActive.spec.ts +2 -2
- package/src/RichTextEditor/utils/commands/markContainsSelection.spec.ts +2 -2
- package/src/RichTextEditor/utils/commands/markIsActive.spec.ts +2 -2
- package/src/RichTextEditor/utils/commands/removeMark.spec.ts +2 -2
- package/src/RichTextEditor/utils/commands/updateMark.spec.ts +2 -2
- package/src/RichTextEditor/utils/commands/validateAndRemoveMarks.spec.ts +3 -3
- package/src/RichTextEditor/utils/core/createRichTextEditor.spec.ts +11 -11
- package/src/RichTextEditor/utils/core/hooks/useRichTextEditor.spec.tsx +2 -2
- package/src/SplitButton/SplitButton.spec.tsx +5 -5
- package/src/SplitButton/subcomponents/DropdownButton/DropdownButton.spec.tsx +3 -4
- package/src/Text/Text.spec.tsx +1 -57
- package/src/TextArea/TextArea.spec.tsx +2 -2
- package/src/TimeField/TimeField.spec.tsx +2 -2
- package/src/TitleBlockZen/TitleBlockZen.spec.tsx +36 -68
- package/src/TitleBlockZen/_docs/TitleBlockZen.stories.tsx +78 -8
- package/src/TitleBlockZen/subcomponents/MobileActions.spec.tsx +2 -2
- package/src/TitleBlockZen/subcomponents/NavigationTabs.spec.tsx +8 -2
- package/src/ToggleSwitch/ToggleSwitch/ToggleSwitch.spec.tsx +2 -2
- package/src/__actions__/Menu/v1/Menu.spec.tsx +2 -2
- package/src/__containers__/GuidanceBlock/v1/GuidanceBlock.spec.tsx +5 -5
- package/src/__containers__/GuidanceBlock/v2/GuidanceBlock.spec.tsx +5 -5
- package/src/__future__/Select/Select.spec.tsx +4 -4
- package/src/__layout__/Workflow/v3/_docs/Workflow.stories.tsx +8 -2
- package/src/__layout__/Workflow/v3/subcomponents/Footer/components/Root/FooterRoot.module.css +1 -0
- package/src/__layout__/Workflow/v3/subcomponents/Header/components/Root/Root.module.css +1 -1
- package/src/__overlays__/Tooltip/v1/Tooltip.spec.tsx +1 -1
- package/src/__overlays__/Tooltip/v1/utils/isSemanticElement.spec.tsx +4 -9
- package/src/utils/useMediaQueries.spec.tsx +7 -7
- package/src/Heading/__snapshots__/Heading.spec.tsx.snap +0 -85
- package/src/Illustration/utils/usePausePlay.spec.tsx +0 -85
- package/src/Notification/subcomponents/GenericNotification/GenericNotification.spec.tsx +0 -76
- package/src/Text/__snapshots__/Text.spec.tsx.snap +0 -49
- package/src/__overlays__/Tooltip/v1/subcomponents/AppearanceAnim.spec.tsx +0 -39
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useState } from "react"
|
|
2
|
-
import { screen, waitFor, within } from "@testing-library/react"
|
|
2
|
+
import { screen, waitFor, within, render } from "@testing-library/react"
|
|
3
3
|
import userEvent from "@testing-library/user-event"
|
|
4
|
-
import {
|
|
4
|
+
import { vi } from "vitest"
|
|
5
5
|
import { DateRange } from "~components/Calendar"
|
|
6
6
|
import { FilterDateRangePickerField, FilterDateRangePickerFieldProps } from "."
|
|
7
7
|
|
|
@@ -36,7 +36,7 @@ const waitForI18nContent = async (): Promise<void> => {
|
|
|
36
36
|
describe("<FilterDateRangePickerField />", () => {
|
|
37
37
|
describe("Inputs", () => {
|
|
38
38
|
it("has empty inputs when a date range is not provided", async () => {
|
|
39
|
-
|
|
39
|
+
render(<FilterDateRangePickerFieldWrapper />)
|
|
40
40
|
await waitForI18nContent()
|
|
41
41
|
|
|
42
42
|
const inputStartDate = screen.getByLabelText("Date from")
|
|
@@ -46,7 +46,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
46
46
|
})
|
|
47
47
|
|
|
48
48
|
it("pre-fills the inputs when date range is provided", async () => {
|
|
49
|
-
|
|
49
|
+
render(
|
|
50
50
|
<FilterDateRangePickerFieldWrapper
|
|
51
51
|
selectedRange={{
|
|
52
52
|
from: new Date("2022-05-01"),
|
|
@@ -63,7 +63,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
63
63
|
})
|
|
64
64
|
|
|
65
65
|
it("allows customising the input labels", async () => {
|
|
66
|
-
|
|
66
|
+
render(
|
|
67
67
|
<FilterDateRangePickerFieldWrapper
|
|
68
68
|
selectedRange={{
|
|
69
69
|
from: new Date("2022-05-01"),
|
|
@@ -84,10 +84,10 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
84
84
|
|
|
85
85
|
describe("onBlur", () => {
|
|
86
86
|
it("updates start date input and calendar values correctly on blur", async () => {
|
|
87
|
-
const startDateOnBlur =
|
|
88
|
-
const endDateOnBlur =
|
|
87
|
+
const startDateOnBlur = vi.fn()
|
|
88
|
+
const endDateOnBlur = vi.fn()
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
render(
|
|
91
91
|
<FilterDateRangePickerFieldWrapper
|
|
92
92
|
selectedRange={{
|
|
93
93
|
from: new Date("2022-05-02"),
|
|
@@ -126,10 +126,10 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
126
126
|
})
|
|
127
127
|
|
|
128
128
|
it("updates end date input and calendar values correctly on blur", async () => {
|
|
129
|
-
const startDateOnBlur =
|
|
130
|
-
const endDateOnBlur =
|
|
129
|
+
const startDateOnBlur = vi.fn()
|
|
130
|
+
const endDateOnBlur = vi.fn()
|
|
131
131
|
|
|
132
|
-
|
|
132
|
+
render(
|
|
133
133
|
<FilterDateRangePickerFieldWrapper
|
|
134
134
|
selectedRange={{
|
|
135
135
|
from: new Date("2022-05-01"),
|
|
@@ -169,7 +169,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
169
169
|
})
|
|
170
170
|
|
|
171
171
|
it("updates the calendar month to match the new start date input", async () => {
|
|
172
|
-
|
|
172
|
+
render(
|
|
173
173
|
<FilterDateRangePickerFieldWrapper
|
|
174
174
|
selectedRange={{
|
|
175
175
|
from: new Date("2022-05-02"),
|
|
@@ -200,7 +200,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
200
200
|
|
|
201
201
|
describe("Calendar", () => {
|
|
202
202
|
it("shows the default month as the start month when there isn't a selected value", async () => {
|
|
203
|
-
|
|
203
|
+
render(
|
|
204
204
|
<FilterDateRangePickerFieldWrapper
|
|
205
205
|
defaultMonth={new Date("2022-05-02")}
|
|
206
206
|
/>
|
|
@@ -211,7 +211,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
211
211
|
})
|
|
212
212
|
|
|
213
213
|
it("shows the selected start date month as the start month when provided", async () => {
|
|
214
|
-
|
|
214
|
+
render(
|
|
215
215
|
<FilterDateRangePickerFieldWrapper
|
|
216
216
|
selectedRange={{
|
|
217
217
|
from: new Date("2022-05-01"),
|
|
@@ -225,7 +225,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
225
225
|
})
|
|
226
226
|
|
|
227
227
|
it("shows the current month as the start month when selected start date is invalid", async () => {
|
|
228
|
-
|
|
228
|
+
render(
|
|
229
229
|
<FilterDateRangePickerFieldWrapper
|
|
230
230
|
selectedRange={{
|
|
231
231
|
from: new Date("potato"),
|
|
@@ -242,7 +242,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
242
242
|
})
|
|
243
243
|
|
|
244
244
|
it("updates the range start input when changing the start date", async () => {
|
|
245
|
-
|
|
245
|
+
render(
|
|
246
246
|
<FilterDateRangePickerFieldWrapper
|
|
247
247
|
selectedRange={{
|
|
248
248
|
from: new Date("2022-05-15"),
|
|
@@ -269,7 +269,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
269
269
|
})
|
|
270
270
|
|
|
271
271
|
it("updates the range end input when changing the end date", async () => {
|
|
272
|
-
|
|
272
|
+
render(
|
|
273
273
|
<FilterDateRangePickerFieldWrapper
|
|
274
274
|
selectedRange={{
|
|
275
275
|
from: new Date("2022-05-15"),
|
|
@@ -296,7 +296,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
296
296
|
})
|
|
297
297
|
|
|
298
298
|
it("clears the inputs when clearing the calendar value", async () => {
|
|
299
|
-
|
|
299
|
+
render(
|
|
300
300
|
<FilterDateRangePickerFieldWrapper
|
|
301
301
|
selectedRange={{
|
|
302
302
|
from: new Date("2022-05-15"),
|
|
@@ -332,7 +332,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
332
332
|
|
|
333
333
|
describe("Custom validation", () => {
|
|
334
334
|
it("shows validation messages passed in from the consumer", async () => {
|
|
335
|
-
|
|
335
|
+
render(
|
|
336
336
|
<FilterDateRangePickerFieldWrapper
|
|
337
337
|
onValidate={{
|
|
338
338
|
dateStart: (): void => undefined,
|
|
@@ -359,7 +359,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
359
359
|
|
|
360
360
|
describe("Inbuilt validation", () => {
|
|
361
361
|
it("shows inbuilt validation messages for start date", async () => {
|
|
362
|
-
const { container } =
|
|
362
|
+
const { container } = render(
|
|
363
363
|
<FilterDateRangePickerFieldWrapper
|
|
364
364
|
inputStartDateProps={{ labelText: "Start date" }}
|
|
365
365
|
/>
|
|
@@ -385,7 +385,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
385
385
|
})
|
|
386
386
|
|
|
387
387
|
it("shows inbuilt validation messages for end date", async () => {
|
|
388
|
-
const { container } =
|
|
388
|
+
const { container } = render(
|
|
389
389
|
<FilterDateRangePickerFieldWrapper
|
|
390
390
|
inputEndDateProps={{ labelText: "End date" }}
|
|
391
391
|
/>
|
|
@@ -408,7 +408,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
408
408
|
})
|
|
409
409
|
|
|
410
410
|
it("shows inbuilt validation messages for pre-existing values", async () => {
|
|
411
|
-
const { container } =
|
|
411
|
+
const { container } = render(
|
|
412
412
|
<FilterDateRangePickerFieldWrapper
|
|
413
413
|
selectedRange={{
|
|
414
414
|
from: new Date("2022-05-15"),
|
|
@@ -436,7 +436,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
436
436
|
'Date to:Cannot be earlier than the selection in "Date from"'
|
|
437
437
|
|
|
438
438
|
it("shows error on updating end date input to be before start date", async () => {
|
|
439
|
-
const { container } =
|
|
439
|
+
const { container } = render(
|
|
440
440
|
<FilterDateRangePickerFieldWrapper
|
|
441
441
|
selectedRange={{
|
|
442
442
|
from: new Date("2022-05-15"),
|
|
@@ -462,7 +462,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
462
462
|
})
|
|
463
463
|
|
|
464
464
|
it("removes error on updating start date input to be before end date", async () => {
|
|
465
|
-
const { container } =
|
|
465
|
+
const { container } = render(
|
|
466
466
|
<FilterDateRangePickerFieldWrapper
|
|
467
467
|
selectedRange={{
|
|
468
468
|
from: new Date("2022-05-15"),
|
|
@@ -508,7 +508,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
508
508
|
})
|
|
509
509
|
|
|
510
510
|
it("displays only one date when the start date input is set to be before the end date", async () => {
|
|
511
|
-
const { container } =
|
|
511
|
+
const { container } = render(
|
|
512
512
|
<FilterDateRangePickerFieldWrapper
|
|
513
513
|
selectedRange={{
|
|
514
514
|
from: new Date("2022-05-15"),
|
|
@@ -539,7 +539,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
539
539
|
})
|
|
540
540
|
|
|
541
541
|
it("shows error on updating start date input to be after end date", async () => {
|
|
542
|
-
const { container } =
|
|
542
|
+
const { container } = render(
|
|
543
543
|
<FilterDateRangePickerFieldWrapper
|
|
544
544
|
selectedRange={{
|
|
545
545
|
from: new Date("2022-05-15"),
|
|
@@ -566,7 +566,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
566
566
|
})
|
|
567
567
|
|
|
568
568
|
it("shows error if the pre-existing end date is before start date", async () => {
|
|
569
|
-
const { container } =
|
|
569
|
+
const { container } = render(
|
|
570
570
|
<FilterDateRangePickerFieldWrapper
|
|
571
571
|
selectedRange={{
|
|
572
572
|
from: new Date("2022-05-15"),
|
|
@@ -588,7 +588,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
588
588
|
|
|
589
589
|
describe("Combined validation", () => {
|
|
590
590
|
it("shows custom start date validation with inbuilt end date validation", async () => {
|
|
591
|
-
const { container } =
|
|
591
|
+
const { container } = render(
|
|
592
592
|
<FilterDateRangePickerFieldWrapper
|
|
593
593
|
onValidate={{
|
|
594
594
|
dateStart: (): void => undefined,
|
|
@@ -621,7 +621,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
621
621
|
})
|
|
622
622
|
|
|
623
623
|
it("shows custom end date validation with inbuilt start date validation", async () => {
|
|
624
|
-
const { container } =
|
|
624
|
+
const { container } = render(
|
|
625
625
|
<FilterDateRangePickerFieldWrapper
|
|
626
626
|
onValidate={{
|
|
627
627
|
dateEnd: (): void => undefined,
|
|
@@ -656,7 +656,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
656
656
|
})
|
|
657
657
|
|
|
658
658
|
it("re-validates values when selecting a value using the calendar", async () => {
|
|
659
|
-
const { container } =
|
|
659
|
+
const { container } = render(
|
|
660
660
|
<FilterDateRangePickerFieldWrapper
|
|
661
661
|
selectedRange={{
|
|
662
662
|
from: new Date("2022-05-10"),
|
|
@@ -687,9 +687,9 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
687
687
|
})
|
|
688
688
|
|
|
689
689
|
it("only returns a valid date to the onRangeChange function", async () => {
|
|
690
|
-
const onRangeChange =
|
|
690
|
+
const onRangeChange = vi.fn()
|
|
691
691
|
|
|
692
|
-
const { getByLabelText } =
|
|
692
|
+
const { getByLabelText } = render(
|
|
693
693
|
<FilterDateRangePickerFieldWrapper
|
|
694
694
|
selectedRange={{
|
|
695
695
|
from: new Date("2022-05-10"),
|
|
@@ -1,6 +1,5 @@
|
|
|
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"
|
|
4
3
|
import { useEndDateValidation } from "./useEndDateValidation"
|
|
5
4
|
|
|
6
5
|
describe("useEndDateValidation()", () => {
|
|
@@ -25,9 +24,7 @@ describe("useEndDateValidation()", () => {
|
|
|
25
24
|
|
|
26
25
|
expect(result.current.validationMessage?.status).toBe("error")
|
|
27
26
|
|
|
28
|
-
const { container } =
|
|
29
|
-
result.current.validationMessage?.message
|
|
30
|
-
)
|
|
27
|
+
const { container } = render(result.current.validationMessage?.message)
|
|
31
28
|
await waitFor(() => {
|
|
32
29
|
expect(container).toHaveTextContent(
|
|
33
30
|
"End date:potato is an invalid date"
|
|
@@ -57,9 +54,7 @@ describe("useEndDateValidation()", () => {
|
|
|
57
54
|
|
|
58
55
|
expect(result.current.validationMessage?.status).toBe("error")
|
|
59
56
|
|
|
60
|
-
const { container } =
|
|
61
|
-
result.current.validationMessage?.message
|
|
62
|
-
)
|
|
57
|
+
const { container } = render(result.current.validationMessage?.message)
|
|
63
58
|
await waitFor(() => {
|
|
64
59
|
expect(container).toHaveTextContent(
|
|
65
60
|
'Cannot be earlier than the selection in "Start date"'
|
|
@@ -1,6 +1,5 @@
|
|
|
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"
|
|
4
3
|
import { useStartDateValidation } from "./useStartDateValidation"
|
|
5
4
|
|
|
6
5
|
describe("useStartDateValidation()", () => {
|
|
@@ -23,9 +22,7 @@ describe("useStartDateValidation()", () => {
|
|
|
23
22
|
|
|
24
23
|
expect(result.current.validationMessage?.status).toBe("error")
|
|
25
24
|
|
|
26
|
-
const { container } =
|
|
27
|
-
result.current.validationMessage?.message
|
|
28
|
-
)
|
|
25
|
+
const { container } = render(result.current.validationMessage?.message)
|
|
29
26
|
await waitFor(() => {
|
|
30
27
|
expect(container).toHaveTextContent(
|
|
31
28
|
"Start date:potato is an invalid date"
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { screen, waitFor } from "@testing-library/react"
|
|
2
|
-
import { renderWithIntl } from "~tests"
|
|
1
|
+
import { screen, waitFor, render } from "@testing-library/react"
|
|
3
2
|
import { validateEndDateBeforeStartDate } from "./validateEndDateBeforeStartDate"
|
|
4
3
|
|
|
5
4
|
describe("validateEndDateBeforeStartDate()", () => {
|
|
@@ -99,7 +98,7 @@ describe("validateEndDateBeforeStartDate()", () => {
|
|
|
99
98
|
|
|
100
99
|
expect(validationMessage?.status).toBe("error")
|
|
101
100
|
|
|
102
|
-
|
|
101
|
+
render(validationMessage?.message)
|
|
103
102
|
await waitFor(() => {
|
|
104
103
|
expect(
|
|
105
104
|
screen.getByText(
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import React, { useState } from "react"
|
|
2
2
|
import { Selection } from "@react-types/shared"
|
|
3
|
-
import { waitFor } from "@testing-library/react"
|
|
3
|
+
import { waitFor, render } from "@testing-library/react"
|
|
4
4
|
import userEvent from "@testing-library/user-event"
|
|
5
|
-
import { renderWithIntl } from "~tests"
|
|
6
5
|
import { FilterMultiSelect, FilterMultiSelectProps } from "./FilterMultiSelect"
|
|
7
6
|
import { ItemType } from "./types"
|
|
8
7
|
import { getSelectedOptionLabels } from "./utils"
|
|
@@ -74,7 +73,7 @@ const FilterMultiSelectWrapper = ({
|
|
|
74
73
|
|
|
75
74
|
describe("<FilterMultiSelect>", () => {
|
|
76
75
|
it("opens the popover using the trigger button", async () => {
|
|
77
|
-
const { getByRole } =
|
|
76
|
+
const { getByRole } = render(<FilterMultiSelectWrapper />)
|
|
78
77
|
|
|
79
78
|
const triggerButton = getByRole("button", { name: "Engineer : Front-End" })
|
|
80
79
|
await user.click(triggerButton)
|
|
@@ -85,7 +84,7 @@ describe("<FilterMultiSelect>", () => {
|
|
|
85
84
|
})
|
|
86
85
|
|
|
87
86
|
it("selects an unselected option on click", async () => {
|
|
88
|
-
const { getByRole } =
|
|
87
|
+
const { getByRole } = render(<FilterMultiSelectWrapper isOpen />)
|
|
89
88
|
|
|
90
89
|
const devOpsOption = getByRole("option", {
|
|
91
90
|
name: "Dev-ops",
|
|
@@ -99,7 +98,7 @@ describe("<FilterMultiSelect>", () => {
|
|
|
99
98
|
})
|
|
100
99
|
|
|
101
100
|
it("deselects a selected option on click", async () => {
|
|
102
|
-
const { getByRole } =
|
|
101
|
+
const { getByRole } = render(<FilterMultiSelectWrapper isOpen />)
|
|
103
102
|
|
|
104
103
|
const devOpsOption = getByRole("option", {
|
|
105
104
|
name: "Front-End",
|
|
@@ -113,7 +112,7 @@ describe("<FilterMultiSelect>", () => {
|
|
|
113
112
|
})
|
|
114
113
|
|
|
115
114
|
it("filters out options which do not match the search term", async () => {
|
|
116
|
-
const { getByRole, getAllByRole } =
|
|
115
|
+
const { getByRole, getAllByRole } = render(
|
|
117
116
|
<FilterMultiSelectWrapper isOpen />
|
|
118
117
|
)
|
|
119
118
|
expect(getAllByRole("option")).toHaveLength(5)
|
|
@@ -127,7 +126,7 @@ describe("<FilterMultiSelect>", () => {
|
|
|
127
126
|
|
|
128
127
|
describe("Clear button", () => {
|
|
129
128
|
it("deselects all options when unfiltered", async () => {
|
|
130
|
-
const { getByRole, queryAllByRole } =
|
|
129
|
+
const { getByRole, queryAllByRole } = render(
|
|
131
130
|
<FilterMultiSelectWrapper
|
|
132
131
|
isOpen
|
|
133
132
|
selectedKeys={new Set(["id-fe", "id-devops"])}
|
|
@@ -143,7 +142,7 @@ describe("<FilterMultiSelect>", () => {
|
|
|
143
142
|
})
|
|
144
143
|
|
|
145
144
|
it("deselects only selected filtered options", async () => {
|
|
146
|
-
const { getByRole, queryAllByRole } =
|
|
145
|
+
const { getByRole, queryAllByRole } = render(
|
|
147
146
|
<FilterMultiSelectWrapper
|
|
148
147
|
isOpen
|
|
149
148
|
selectedKeys={new Set(["id-fe", "id-devops"])}
|
|
@@ -172,7 +171,7 @@ describe("<FilterMultiSelect>", () => {
|
|
|
172
171
|
options.filter(option => option.hasAttribute("aria-disabled"))
|
|
173
172
|
|
|
174
173
|
it("selects all non-disabled options when unfiltered", async () => {
|
|
175
|
-
const { getByRole, queryAllByRole } =
|
|
174
|
+
const { getByRole, queryAllByRole } = render(
|
|
176
175
|
<FilterMultiSelectWrapper isOpen selectedKeys={new Set([])} />
|
|
177
176
|
)
|
|
178
177
|
|
|
@@ -187,7 +186,7 @@ describe("<FilterMultiSelect>", () => {
|
|
|
187
186
|
})
|
|
188
187
|
|
|
189
188
|
it("selects only non-disabled filtered options", async () => {
|
|
190
|
-
const { getByRole, queryAllByRole } =
|
|
189
|
+
const { getByRole, queryAllByRole } = render(
|
|
191
190
|
<FilterMultiSelectWrapper isOpen selectedKeys={new Set([])} />
|
|
192
191
|
)
|
|
193
192
|
|
package/src/Filter/FilterMultiSelect/context/MenuTriggerProvider/MenuTriggerProvider.spec.tsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from "react"
|
|
2
2
|
import { render, screen, waitFor } from "@testing-library/react"
|
|
3
3
|
import userEvent from "@testing-library/user-event"
|
|
4
|
+
import { vi } from "vitest"
|
|
4
5
|
import { FilterTriggerButton } from "~components/Filter/FilterMultiSelect/subcomponents/Trigger"
|
|
5
6
|
import { MenuPopup } from "../../subcomponents/MenuPopup"
|
|
6
7
|
import {
|
|
@@ -59,7 +60,7 @@ describe("<MenuTriggerProvider /> - Visual content", () => {
|
|
|
59
60
|
})
|
|
60
61
|
|
|
61
62
|
it("fires the onOpenChange callback when the trigger is interacted", async () => {
|
|
62
|
-
const onOpenChange =
|
|
63
|
+
const onOpenChange = vi.fn()
|
|
63
64
|
render(<MenuTriggerProviderWrapper isOpen onOpenChange={onOpenChange} />)
|
|
64
65
|
|
|
65
66
|
const trigger = screen.getByRole("button", {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React, { useState } from "react"
|
|
2
2
|
import { StaticIntlProvider } from "@cultureamp/i18n-react-intl"
|
|
3
3
|
import { Selection } from "@react-types/shared"
|
|
4
|
-
import { screen, waitFor } from "@testing-library/react"
|
|
4
|
+
import { screen, waitFor, render } from "@testing-library/react"
|
|
5
5
|
import userEvent from "@testing-library/user-event"
|
|
6
|
-
import {
|
|
6
|
+
import { vi } from "vitest"
|
|
7
7
|
import { FilterMultiSelect } from "../../FilterMultiSelect"
|
|
8
8
|
import { ListBox } from "../../subcomponents/ListBox"
|
|
9
9
|
import { SearchInput } from "../../subcomponents/SearchInput"
|
|
@@ -104,7 +104,7 @@ describe("<SelectionProvider>", () => {
|
|
|
104
104
|
describe("<SelectionProviderWrapper /> - Visual content", () => {
|
|
105
105
|
describe("Given no selectedKeys", () => {
|
|
106
106
|
it("shows all the options unselected", async () => {
|
|
107
|
-
|
|
107
|
+
render(<SelectionProviderWrapper />)
|
|
108
108
|
await waitFor(() => {
|
|
109
109
|
expect(
|
|
110
110
|
screen.getByRole("option", {
|
|
@@ -128,7 +128,7 @@ describe("<SelectionProvider>", () => {
|
|
|
128
128
|
})
|
|
129
129
|
|
|
130
130
|
it("labels the listbox with the provided label", async () => {
|
|
131
|
-
|
|
131
|
+
render(<SelectionProviderWrapper />)
|
|
132
132
|
await waitFor(() => {
|
|
133
133
|
const listBox = screen.getByLabelText("selection-label-mock", {
|
|
134
134
|
selector: "ul",
|
|
@@ -140,7 +140,7 @@ describe("<SelectionProvider>", () => {
|
|
|
140
140
|
|
|
141
141
|
describe("Given selectedKeys is [option-2-value-mock]", () => {
|
|
142
142
|
it("shows only option 2 is selected", async () => {
|
|
143
|
-
|
|
143
|
+
render(
|
|
144
144
|
<SelectionProviderWrapper
|
|
145
145
|
selectedKeys={new Set(["option-2-value-mock"])}
|
|
146
146
|
/>
|
|
@@ -170,7 +170,7 @@ describe("<SelectionProvider>", () => {
|
|
|
170
170
|
|
|
171
171
|
describe("Given selectedKeys is 'all'", () => {
|
|
172
172
|
it("shows all options are selected", async () => {
|
|
173
|
-
|
|
173
|
+
render(<SelectionProviderWrapper selectedKeys="all" />)
|
|
174
174
|
await waitFor(() => {
|
|
175
175
|
expect(
|
|
176
176
|
screen.getByRole("option", {
|
|
@@ -197,7 +197,7 @@ describe("<SelectionProvider>", () => {
|
|
|
197
197
|
|
|
198
198
|
describe("<SelectionProviderWrapper /> - Mouse interaction", () => {
|
|
199
199
|
it("selects the option when clicks on a non-selected option", async () => {
|
|
200
|
-
|
|
200
|
+
render(<SelectionProviderWrapper />)
|
|
201
201
|
const option1 = screen.getByRole("option", {
|
|
202
202
|
name: "option-1-label-mock",
|
|
203
203
|
})
|
|
@@ -215,8 +215,8 @@ describe("<SelectionProvider>", () => {
|
|
|
215
215
|
})
|
|
216
216
|
|
|
217
217
|
it("fires onSelectionChange when clicks on a option", async () => {
|
|
218
|
-
const spy =
|
|
219
|
-
|
|
218
|
+
const spy = vi.fn()
|
|
219
|
+
render(<SelectionProviderWrapper onSelectionChange={spy} />)
|
|
220
220
|
const option1 = screen.getByRole("option", {
|
|
221
221
|
name: "option-1-label-mock",
|
|
222
222
|
})
|
|
@@ -229,7 +229,7 @@ describe("<SelectionProvider>", () => {
|
|
|
229
229
|
})
|
|
230
230
|
|
|
231
231
|
it("selects all options when clicks on Select all button", async () => {
|
|
232
|
-
|
|
232
|
+
render(<SelectionProviderWrapper />)
|
|
233
233
|
const selectAll = screen.getByRole("button", {
|
|
234
234
|
name: "Select all",
|
|
235
235
|
})
|
|
@@ -261,8 +261,8 @@ describe("<SelectionProvider>", () => {
|
|
|
261
261
|
})
|
|
262
262
|
|
|
263
263
|
it("fires onSelectionChange when clicks on Select all button", async () => {
|
|
264
|
-
const spy =
|
|
265
|
-
|
|
264
|
+
const spy = vi.fn()
|
|
265
|
+
render(<SelectionProviderWrapper onSelectionChange={spy} />)
|
|
266
266
|
const selectAll = screen.getByRole("button", {
|
|
267
267
|
name: "Select all",
|
|
268
268
|
})
|
|
@@ -275,7 +275,7 @@ describe("<SelectionProvider>", () => {
|
|
|
275
275
|
})
|
|
276
276
|
|
|
277
277
|
it("clears all the selection when clicks on Clear button", async () => {
|
|
278
|
-
|
|
278
|
+
render(
|
|
279
279
|
<SelectionProviderWrapper
|
|
280
280
|
selectedKeys={new Set(["option-2-value-mock"])}
|
|
281
281
|
/>
|
|
@@ -309,8 +309,8 @@ describe("<SelectionProvider>", () => {
|
|
|
309
309
|
})
|
|
310
310
|
|
|
311
311
|
it("fires onSelectionChange when clicks on Clear all button", async () => {
|
|
312
|
-
const spy =
|
|
313
|
-
|
|
312
|
+
const spy = vi.fn()
|
|
313
|
+
render(
|
|
314
314
|
<SelectionProviderWrapper
|
|
315
315
|
onSelectionChange={spy}
|
|
316
316
|
selectedKeys={new Set(["option-2-value-mock"])}
|
|
@@ -328,7 +328,7 @@ describe("<SelectionProvider>", () => {
|
|
|
328
328
|
})
|
|
329
329
|
|
|
330
330
|
it("de-selects the option when clicks on a selected option", async () => {
|
|
331
|
-
|
|
331
|
+
render(
|
|
332
332
|
<SelectionProviderWrapper
|
|
333
333
|
selectedKeys={new Set(["option-2-value-mock"])}
|
|
334
334
|
/>
|
|
@@ -354,7 +354,7 @@ describe("<SelectionProvider>", () => {
|
|
|
354
354
|
describe("<SelectionProviderWrapper /> - Keyboard interaction", () => {
|
|
355
355
|
describe("Given no selectedKeys", () => {
|
|
356
356
|
it("focuses on the frist option when tabs onto the list", async () => {
|
|
357
|
-
|
|
357
|
+
render(<SelectionProviderWrapper />)
|
|
358
358
|
await user.tab()
|
|
359
359
|
|
|
360
360
|
await waitFor(() => {
|
|
@@ -367,7 +367,7 @@ describe("<SelectionProvider>", () => {
|
|
|
367
367
|
|
|
368
368
|
describe("Given selectedKeys is [option-2-value-mock, option-3-value-mock]", () => {
|
|
369
369
|
it("focuses the frist selected option when tabs onto the list", async () => {
|
|
370
|
-
|
|
370
|
+
render(
|
|
371
371
|
<SelectionProviderWrapper
|
|
372
372
|
selectedKeys={new Set(["option-2-value-mock"])}
|
|
373
373
|
/>
|
|
@@ -383,7 +383,7 @@ describe("<SelectionProvider>", () => {
|
|
|
383
383
|
})
|
|
384
384
|
|
|
385
385
|
it("moves the focus down when hits arrow down key", async () => {
|
|
386
|
-
|
|
386
|
+
render(<SelectionProviderWrapper />)
|
|
387
387
|
await user.tab()
|
|
388
388
|
await user.keyboard("{ArrowDown}")
|
|
389
389
|
|
|
@@ -395,7 +395,7 @@ describe("<SelectionProvider>", () => {
|
|
|
395
395
|
})
|
|
396
396
|
|
|
397
397
|
it("keeps the focus at the last element when hits arrow down key on it", async () => {
|
|
398
|
-
|
|
398
|
+
render(
|
|
399
399
|
<SelectionProviderWrapper
|
|
400
400
|
selectedKeys={new Set(["option-3-value-mock"])}
|
|
401
401
|
/>
|
|
@@ -411,7 +411,7 @@ describe("<SelectionProvider>", () => {
|
|
|
411
411
|
})
|
|
412
412
|
|
|
413
413
|
it("moves the focus up when hits arrow up key", async () => {
|
|
414
|
-
|
|
414
|
+
render(
|
|
415
415
|
<SelectionProviderWrapper
|
|
416
416
|
selectedKeys={new Set(["option-3-value-mock"])}
|
|
417
417
|
/>
|
|
@@ -427,7 +427,7 @@ describe("<SelectionProvider>", () => {
|
|
|
427
427
|
})
|
|
428
428
|
|
|
429
429
|
it("keeps the focus ring at the first element when hits arrow up key on it", async () => {
|
|
430
|
-
|
|
430
|
+
render(<SelectionProviderWrapper />)
|
|
431
431
|
await user.tab()
|
|
432
432
|
await user.keyboard("{ArrowUp}")
|
|
433
433
|
|
|
@@ -439,7 +439,7 @@ describe("<SelectionProvider>", () => {
|
|
|
439
439
|
})
|
|
440
440
|
|
|
441
441
|
it("selects the option when hits enter on a non-selected option", async () => {
|
|
442
|
-
|
|
442
|
+
render(<SelectionProviderWrapper />)
|
|
443
443
|
|
|
444
444
|
await user.tab()
|
|
445
445
|
await user.keyboard("{Enter}")
|
|
@@ -455,7 +455,7 @@ describe("<SelectionProvider>", () => {
|
|
|
455
455
|
})
|
|
456
456
|
|
|
457
457
|
it("de-selects the option when hits enter on a selected option", async () => {
|
|
458
|
-
|
|
458
|
+
render(
|
|
459
459
|
<SelectionProviderWrapper
|
|
460
460
|
selectedKeys={new Set(["option-2-value-mock"])}
|
|
461
461
|
/>
|
|
@@ -475,8 +475,8 @@ describe("<SelectionProvider>", () => {
|
|
|
475
475
|
})
|
|
476
476
|
|
|
477
477
|
it("fires onSelectionChange when hits enter on a option", async () => {
|
|
478
|
-
const spy =
|
|
479
|
-
|
|
478
|
+
const spy = vi.fn()
|
|
479
|
+
render(<SelectionProviderWrapper onSelectionChange={spy} />)
|
|
480
480
|
|
|
481
481
|
await user.tab()
|
|
482
482
|
await user.keyboard("{Enter}")
|
|
@@ -490,7 +490,7 @@ describe("<SelectionProvider>", () => {
|
|
|
490
490
|
describe("<SelectionProviderWrapper /> - Search Filtering", () => {
|
|
491
491
|
describe("With no onSearchInputChange callback", () => {
|
|
492
492
|
it("shows only the matched options", async () => {
|
|
493
|
-
|
|
493
|
+
render(<SelectionProviderWrapper />)
|
|
494
494
|
const searchInput = screen.getByRole("searchbox")
|
|
495
495
|
await user.type(searchInput, "1")
|
|
496
496
|
|
|
@@ -515,9 +515,9 @@ describe("<SelectionProvider>", () => {
|
|
|
515
515
|
})
|
|
516
516
|
describe("With a onSearchInputChange callback", () => {
|
|
517
517
|
it("Does not filter the matched options", async () => {
|
|
518
|
-
const onSearchInputChange =
|
|
518
|
+
const onSearchInputChange = vi.fn()
|
|
519
519
|
|
|
520
|
-
|
|
520
|
+
render(
|
|
521
521
|
<SelectionProviderWrapper onSearchInputChange={onSearchInputChange} />
|
|
522
522
|
)
|
|
523
523
|
const searchInput = screen.getByRole("searchbox")
|
|
@@ -544,9 +544,9 @@ describe("<SelectionProvider>", () => {
|
|
|
544
544
|
})
|
|
545
545
|
|
|
546
546
|
it("Calls back to the consumer with the search text", async () => {
|
|
547
|
-
const onSearchInputChange =
|
|
547
|
+
const onSearchInputChange = vi.fn()
|
|
548
548
|
|
|
549
|
-
|
|
549
|
+
render(
|
|
550
550
|
<SelectionProviderWrapper onSearchInputChange={onSearchInputChange} />
|
|
551
551
|
)
|
|
552
552
|
const searchInput = screen.getByRole("searchbox")
|
|
@@ -563,7 +563,7 @@ describe("<SelectionProvider>", () => {
|
|
|
563
563
|
|
|
564
564
|
describe("<SelectionProviderWrapper /> - controlling items from the consumer", () => {
|
|
565
565
|
it("renders only items passed", async () => {
|
|
566
|
-
const { rerender } =
|
|
566
|
+
const { rerender } = render(<SelectionProviderWrapper />)
|
|
567
567
|
await waitFor(() => {
|
|
568
568
|
expect(
|
|
569
569
|
screen.getByRole("option", {
|