@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.
- package/dist/cjs/Calendar/CalendarRange/CalendarRange.cjs +0 -2
- package/dist/cjs/Calendar/CalendarSingle/CalendarSingle.cjs +3 -5
- package/dist/cjs/DatePicker/DatePicker.cjs +8 -1
- package/dist/cjs/DatePicker/utils/getLocale.cjs +96 -3
- package/dist/cjs/DatePicker/utils/validateDate.cjs +28 -2
- package/dist/cjs/Filter/FilterBar/subcomponents/AddFiltersMenu/AddFiltersMenu.cjs +8 -1
- package/dist/cjs/Filter/FilterBar/subcomponents/ClearAllButton/ClearAllButton.cjs +14 -2
- package/dist/cjs/Filter/FilterBar/subcomponents/FilterBarDatePicker/FilterBarDatePicker.cjs +1 -0
- package/dist/cjs/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.cjs +10 -1
- package/dist/cjs/Filter/FilterDatePicker/subcomponents/DateInputField/DateInputField.cjs +8 -1
- package/dist/cjs/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.cjs +5 -1
- package/dist/cjs/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/useEndDateValidation.cjs +1 -0
- package/dist/cjs/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/useStartDateValidation.cjs +1 -0
- package/dist/cjs/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/utils/validateEndDateBeforeStartDate.cjs +16 -1
- package/dist/esm/Calendar/CalendarRange/CalendarRange.mjs +0 -2
- package/dist/esm/Calendar/CalendarSingle/CalendarSingle.mjs +3 -5
- package/dist/esm/DatePicker/DatePicker.mjs +8 -1
- package/dist/esm/DatePicker/utils/getLocale.mjs +97 -4
- package/dist/esm/DatePicker/utils/validateDate.mjs +22 -2
- package/dist/esm/Filter/FilterBar/subcomponents/AddFiltersMenu/AddFiltersMenu.mjs +8 -1
- package/dist/esm/Filter/FilterBar/subcomponents/ClearAllButton/ClearAllButton.mjs +14 -2
- package/dist/esm/Filter/FilterBar/subcomponents/FilterBarDatePicker/FilterBarDatePicker.mjs +1 -0
- package/dist/esm/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.mjs +10 -1
- package/dist/esm/Filter/FilterDatePicker/subcomponents/DateInputField/DateInputField.mjs +8 -1
- package/dist/esm/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.mjs +5 -1
- package/dist/esm/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/useEndDateValidation.mjs +1 -0
- package/dist/esm/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/useStartDateValidation.mjs +1 -0
- package/dist/esm/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/utils/validateEndDateBeforeStartDate.mjs +10 -1
- package/dist/styles.css +2 -2
- package/dist/types/AvatarGroup/_docs/example-data.d.ts +8 -0
- package/dist/types/BrandMoment/_docs/ExampleHeaders.d.ts +3 -0
- package/dist/types/Calendar/_docs/controls/defaultMonthControls.d.ts +2 -0
- package/dist/types/Calendar/_docs/controls/weekStartsOnControls.d.ts +2 -0
- package/dist/types/Container/Container.d.ts +1 -1
- package/dist/types/Content/Content.d.ts +1 -1
- package/dist/types/DateInput/DateInput/DateInput.d.ts +1 -1
- package/dist/types/DatePicker/DatePicker.d.ts +3 -3
- package/dist/types/DatePicker/_docs/controls/datePickerLocaleControls.d.ts +2 -0
- package/dist/types/DatePicker/_docs/controls/disabledDayMatchersControls.d.ts +2 -0
- package/dist/types/DatePicker/subcomponents/DateInputField/DateInputField.d.ts +1 -1
- package/dist/types/DatePicker/types.d.ts +2 -1
- package/dist/types/DatePicker/utils/getLocale.d.ts +1 -2
- package/dist/types/DateRangePicker/DateRangePicker.d.ts +2 -2
- package/dist/types/Filter/FilterBar/context/types.d.ts +28 -0
- package/dist/types/Filter/FilterButton/subcomponents/FilterButtonBase/FilterButtonBase.d.ts +1 -1
- package/dist/types/Filter/FilterDatePicker/_docs/controls/disabledDaysControls.d.ts +2 -0
- package/dist/types/Filter/FilterDatePicker/_docs/controls/validationControls.d.ts +2 -0
- package/dist/types/Filter/FilterDatePicker/subcomponents/DateInputField/DateInputField.d.ts +1 -1
- package/dist/types/Filter/FilterDateRangePicker/_docs/controls/disabledDaysControls.d.ts +2 -0
- package/dist/types/Filter/FilterDateRangePicker/_docs/controls/validationControls.d.ts +2 -0
- package/dist/types/Filter/FilterMultiSelect/_docs/MockData.d.ts +10 -0
- package/dist/types/Filter/FilterSelect/_docs/mockData.d.ts +6 -0
- package/dist/types/Filter/_docs/controls/renderTriggerControls.d.ts +2 -0
- package/dist/types/Menu/_docs/MenuContentExample.d.ts +8 -0
- package/dist/types/Menu/_docs/examples.d.ts +11 -0
- package/dist/types/Modal/_docs/controls.d.ts +11 -0
- package/dist/types/MultiSelect/MultiSelect.d.ts +23 -0
- package/dist/types/MultiSelect/subcomponents/MultiSelectOptions/MultiSelectOptions.d.ts +13 -0
- package/dist/types/Select/Select.d.ts +3 -3
- package/dist/types/Workflow/_docs/controls/controls.d.ts +2 -0
- package/dist/types/Workflow/_docs/controls/index.d.ts +1 -0
- package/dist/types/__future__/Select/Select.d.ts +2 -2
- package/dist/types/__future__/Select/_docs/mockData.d.ts +6 -0
- package/dist/types/__future__/Select/subcomponents/SelectToggle/SelectToggle.d.ts +2 -2
- package/dist/types/__future__/Select/types.d.ts +22 -0
- package/dist/types/__future__/Workflow/_docs/controls/controls.d.ts +2 -0
- package/dist/types/__future__/Workflow/_docs/controls/index.d.ts +1 -0
- package/dist/types/__overlays__/Tooltip/v1/utils/isSemanticElement.d.ts +2 -2
- package/dist/types/utils/getNodeText.d.ts +2 -1
- package/locales/en.json +40 -0
- package/package.json +3 -3
- package/src/Avatar/_docs/Avatar.mdx +1 -1
- package/src/AvatarGroup/_docs/AvatarGroup.mdx +1 -1
- package/src/Badge/_docs/Badge.mdx +1 -1
- package/src/Brand/_docs/Brand.mdx +1 -1
- package/src/BrandMoment/_docs/BrandMoment.mdx +1 -1
- package/src/Button/Button/_docs/Button.mdx +1 -1
- package/src/Button/IconButton/_docs/IconButton.mdx +1 -1
- package/src/ButtonGroup/_docs/ButtonGroup.mdx +1 -1
- package/src/Calendar/CalendarRange/CalendarRange.tsx +0 -2
- package/src/Calendar/CalendarRange/_docs/CalendarRange.mdx +1 -1
- package/src/Calendar/CalendarSingle/CalendarSingle.tsx +1 -2
- package/src/Calendar/CalendarSingle/_docs/CalendarSingle.mdx +1 -1
- package/src/Card/_docs/Card.mdx +1 -1
- package/src/Checkbox/Checkbox/_docs/Checkbox.mdx +1 -1
- package/src/Checkbox/CheckboxField/_docs/CheckboxField.mdx +1 -1
- package/src/Checkbox/CheckboxGroup/_docs/CheckboxGroup.mdx +1 -1
- package/src/Collapsible/Collapsible/_docs/Collapsible.mdx +1 -1
- package/src/Collapsible/CollapsibleGroup/_docs/CollapsibleGroup.mdx +1 -1
- package/src/Collapsible/ExpertAdviceCollapsible/_docs/ExpertAdviceCollapsible.mdx +1 -1
- package/src/Container/_docs/Container.mdx +1 -1
- package/src/Content/_docs/Content.mdx +1 -1
- package/src/DateInput/DateInputDescription/DateInputDescription.spec.tsx +26 -18
- package/src/DatePicker/DatePicker.spec.tsx +100 -69
- package/src/DatePicker/DatePicker.tsx +15 -7
- package/src/DatePicker/_docs/DatePicker.mdx +1 -3
- package/src/DatePicker/_docs/DatePicker.stickersheet.stories.tsx +57 -21
- package/src/DatePicker/_docs/DatePicker.stories.tsx +2 -3
- package/src/DatePicker/_docs/controls/datePickerLocaleControls.ts +8 -2
- package/src/DatePicker/_docs/getLocale.stickersheet.stories.tsx +49 -0
- package/src/DatePicker/subcomponents/DateInputField/DateInputField.spec.tsx +49 -36
- package/src/DatePicker/types.ts +2 -1
- package/src/DatePicker/utils/getLocale.spec.ts +2 -2
- package/src/DatePicker/utils/getLocale.ts +141 -6
- package/src/DatePicker/utils/validateDate.spec.ts +40 -16
- package/src/DatePicker/utils/{validateDate.ts → validateDate.tsx} +24 -4
- package/src/DateRangePicker/DateRangePicker.tsx +2 -2
- package/src/DateRangePicker/_docs/DateRangePicker.mdx +1 -1
- package/src/Divider/_docs/Divider.mdx +1 -1
- package/src/EmptyState/_docs/EmptyState.mdx +1 -1
- package/src/ErrorPage/_docs/ErrorPage.mdx +1 -1
- package/src/FieldGroup/_docs/FieldGroup.mdx +1 -1
- package/src/FieldMessage/_docs/FieldMessage.mdx +1 -1
- package/src/Filter/Filter/_docs/Filter.mdx +1 -1
- package/src/Filter/FilterBar/FilterBar.spec.tsx +56 -25
- package/src/Filter/FilterBar/_docs/FilterBar.mdx +1 -1
- package/src/Filter/FilterBar/subcomponents/AddFiltersMenu/AddFiltersMenu.spec.tsx +21 -13
- package/src/Filter/FilterBar/subcomponents/AddFiltersMenu/AddFiltersMenu.tsx +11 -1
- package/src/Filter/FilterBar/subcomponents/ClearAllButton/ClearAllButton.tsx +17 -2
- package/src/Filter/FilterBar/subcomponents/FilterBarButton/FilterBarButton.spec.tsx +17 -8
- package/src/Filter/FilterBar/subcomponents/FilterBarDatePicker/FilterBarDatePicker.spec.tsx +37 -23
- package/src/Filter/FilterBar/subcomponents/FilterBarDateRangePicker/FilterBarDateRangePicker.spec.tsx +35 -23
- package/src/Filter/FilterBar/subcomponents/FilterBarMultiSelect/FilterBarMultiSelect.spec.tsx +42 -26
- package/src/Filter/FilterBar/subcomponents/FilterBarSelect/FilterBarSelect.spec.tsx +37 -24
- package/src/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.spec.tsx +12 -12
- package/src/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.tsx +15 -2
- package/src/Filter/FilterButton/_docs/filter-buttons.mdx +1 -1
- package/src/Filter/FilterDatePicker/FilterDatePicker.spec.tsx +21 -16
- package/src/Filter/FilterDatePicker/_docs/FilterDatePicker.mdx +1 -1
- package/src/Filter/FilterDatePicker/_docs/FilterDatePicker.stickersheet.stories.tsx +56 -1
- package/src/Filter/FilterDatePicker/hooks/useDateInputHandlers.spec.ts +3 -3
- package/src/Filter/FilterDatePicker/hooks/{useDateValidation.spec.tsx → useDateValidation.spec.ts} +13 -12
- package/src/Filter/FilterDatePicker/subcomponents/DateInputField/DateInputField.tsx +10 -1
- package/src/Filter/FilterDatePicker/subcomponents/FilterDatePickerField/FilterDatePickerField.spec.tsx +57 -36
- package/src/Filter/FilterDatePicker/utils/validateDate.spec.ts +52 -28
- package/src/Filter/FilterDateRangePicker/FilterDateRangePicker.spec.tsx +3 -2
- package/src/Filter/FilterDateRangePicker/_docs/FilterDateRangePicker.mdx +1 -1
- package/src/Filter/FilterDateRangePicker/_docs/FilterDateRangePicker.stickersheet.stories.tsx +55 -24
- package/src/Filter/FilterDateRangePicker/subcomponents/DateRangeInputField/DateRangeInputField.spec.tsx +43 -28
- package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.spec.tsx +82 -48
- package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.tsx +6 -1
- package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/{useEndDateValidation.spec.tsx → useEndDateValidation.spec.ts} +23 -20
- package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/{useStartDateValidation.spec.tsx → useStartDateValidation.spec.ts} +13 -11
- package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/utils/validateEndDateBeforeStartDate.spec.ts +17 -6
- package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/utils/{validateEndDateBeforeStartDate.ts → validateEndDateBeforeStartDate.tsx} +9 -3
- package/src/Filter/FilterMultiSelect/FilterMultiSelect.spec.tsx +10 -14
- package/src/Filter/FilterMultiSelect/_docs/FilterMultiSelect.mdx +1 -1
- package/src/Filter/FilterMultiSelect/context/SelectionProvider/SelectionProvider.spec.tsx +392 -372
- package/src/Filter/FilterMultiSelect/subcomponents/SearchInput/SearchInput.spec.tsx +9 -6
- package/src/Filter/FilterSelect/_docs/FilterSelect.mdx +1 -1
- package/src/GuidanceBlock/_docs/GuidanceBlock.mdx +1 -1
- package/src/Heading/_docs/Heading.mdx +1 -1
- package/src/Icon/_docs/Icon.mdx +1 -1
- package/src/Illustration/Scene/BrandMomentCaptureIntro/_docs/BrandMomentCaptureIntro.mdx +1 -1
- package/src/Illustration/Scene/_docs/Scene.mdx +1 -1
- package/src/Illustration/Spot/_docs/Spot.mdx +1 -1
- package/src/Input/Input/_docs/Input.mdx +1 -1
- package/src/Input/InputRange/_docs/InputRange.mdx +1 -1
- package/src/Input/InputSearch/InputSearch.spec.tsx +15 -14
- package/src/Input/InputSearch/_docs/InputSearch.mdx +1 -1
- package/src/Label/_docs/Label.mdx +1 -1
- package/src/LabelledMessage/_docs/LabelledMessage.mdx +1 -1
- package/src/LikertScaleLegacy/_docs/LikertScaleLegacy.mdx +1 -1
- package/src/Loading/LoadingGraphic/_docs/LoadingGraphic.mdx +1 -1
- package/src/Loading/LoadingHeading/_docs/LoadingHeading.mdx +1 -1
- package/src/Loading/LoadingInput/_docs/LoadingInput.mdx +1 -1
- package/src/Loading/LoadingParagraph/_docs/LoadingParagraph.mdx +1 -1
- package/src/Loading/LoadingSpinner/_docs/LoadingSpinner.mdx +1 -1
- package/src/Menu/_docs/Menu.mdx +1 -1
- package/src/Modal/ConfirmationModal/_docs/ConfirmationModal.mdx +1 -1
- package/src/Modal/ContextModal/_docs/ContextModal.mdx +1 -1
- package/src/Modal/GenericModal/_docs/GenericModal.mdx +1 -1
- package/src/Modal/InputEditModal/_docs/InputEditModal.mdx +1 -1
- package/src/MultiSelect/_docs/MultiSelect.mdx +1 -1
- package/src/Notification/GlobalNotification/_docs/GlobalNotification.mdx +1 -1
- package/src/Notification/InlineNotification/_docs/InlineNotification.mdx +1 -1
- package/src/Notification/ToastNotification/_docs/ToastNotification.mdx +1 -1
- package/src/Pagination/_docs/Pagination.mdx +1 -1
- package/src/Pagination/subcomponents/DirectionalLink/_docs/DirectionalLink.mdx +1 -1
- package/src/Pagination/subcomponents/PaginationLink/_docs/PaginationLink.mdx +1 -1
- package/src/Popover/_docs/Popover.mdx +1 -1
- package/src/ProgressBar/_docs/ProgressBar.mdx +1 -1
- package/src/Radio/Radio/_docs/Radio.mdx +1 -1
- package/src/Radio/RadioField/_docs/RadioField.mdx +1 -1
- package/src/Radio/RadioGroup/_docs/RadioGroup.mdx +1 -1
- package/src/RichTextEditor/EditableRichTextContent/_docs/EditableRichTextContent.mdx +1 -1
- package/src/RichTextEditor/RichTextContent/_docs/RichTextContent.mdx +1 -1
- package/src/RichTextEditor/RichTextEditor/_docs/RichTextEditor.mdx +1 -1
- package/src/RichTextEditor/RichTextEditor/subcomponents/ToggleIconButton/_docs/ToggleIconButton.mdx +1 -1
- package/src/RichTextEditor/RichTextEditor/subcomponents/Toolbar/_docs/Toolbar.mdx +1 -1
- package/src/SearchField/_docs/SearchField.mdx +1 -1
- package/src/Select/_docs/Select.mdx +1 -1
- package/src/Skirt/_docs/Skirt.mdx +1 -1
- package/src/Slider/_docs/Slider.mdx +1 -1
- package/src/SplitButton/SplitButton.spec.tsx +11 -6
- package/src/SplitButton/_docs/SplitButton.mdx +1 -1
- package/src/SplitButton/subcomponents/DropdownButton/DropdownButton.spec.tsx +15 -10
- package/src/Table/_docs/Table.mdx +1 -1
- package/src/Tabs/_docs/Tabs.mdx +1 -1
- package/src/Tag/_docs/Tag.mdx +1 -1
- package/src/Text/_docs/Text.mdx +1 -1
- package/src/TextArea/_docs/TextArea.mdx +1 -1
- package/src/TextAreaField/_docs/TextAreaField.mdx +1 -1
- package/src/TextField/_docs/TextField.mdx +1 -1
- package/src/Tile/InformationTile/_docs/InformationTile.mdx +1 -1
- package/src/Tile/MultiActionTile/_docs/MultiActionTile.mdx +1 -1
- package/src/Tile/TileGrid/_docs/TileGrid.mdx +1 -1
- package/src/TimeField/_docs/TimeField.mdx +1 -1
- package/src/TitleBlockZen/_docs/TitleBlockZen.mdx +1 -1
- package/src/ToggleSwitch/ToggleSwitch/_docs/ToggleSwitch.mdx +1 -1
- package/src/ToggleSwitch/ToggleSwitchField/_docs/ToggleSwitchField.mdx +1 -1
- package/src/VisuallyHidden/_docs/VisuallyHidden.mdx +1 -1
- package/src/Well/_docs/Well.mdx +1 -1
- package/src/Workflow/_docs/ProgressStepper.mdx +1 -1
- package/src/Workflow/_docs/Workflow.mdx +1 -1
- package/src/Workflow/_docs/WorkflowFooter.mdx +1 -1
- package/src/Workflow/_docs/WorkflowHeader.mdx +1 -1
- package/src/__future__/Select/_docs/Select.mdx +1 -1
- package/src/__future__/Tag/Tag/_docs/Tag.mdx +1 -1
- package/src/__future__/Workflow/_docs/ProgressStepper.mdx +1 -1
- package/src/__future__/Workflow/_docs/Workflow.mdx +1 -1
- package/src/__future__/Workflow/_docs/WorkflowFooter.mdx +1 -1
- package/src/__future__/Workflow/_docs/WorkflowHeader.mdx +1 -1
- package/src/__overlays__/Tooltip/v1/_docs/Tooltip.mdx +1 -1
- package/src/__overlays__/Tooltip/v3/_docs/ApiSpecification.mdx +0 -1
- package/src/__overlays__/Tooltip/v3/_docs/Tooltip.docs.stories.tsx +52 -0
- package/src/__overlays__/Tooltip/v3/_docs/Tooltip.mdx +40 -61
- package/src/__overlays__/Tooltip/v3/_docs/assets/tooltip_spec.png +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React, { useRef } from "react"
|
|
2
|
-
import {
|
|
2
|
+
import { screen, waitFor } 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
6
|
import {
|
|
6
7
|
DateRangeInputField,
|
|
7
8
|
DateRangeInputFieldProps,
|
|
@@ -23,29 +24,39 @@ const DateRangeInputFieldWrapper = (
|
|
|
23
24
|
)
|
|
24
25
|
|
|
25
26
|
describe("<DateRangeInputField />", () => {
|
|
26
|
-
it("has unique ids for both inputs", () => {
|
|
27
|
-
const { container } =
|
|
27
|
+
it("has unique ids for both inputs", async () => {
|
|
28
|
+
const { container } = renderWithIntl(
|
|
29
|
+
<DateRangeInputFieldWrapper id="range" />
|
|
30
|
+
)
|
|
28
31
|
const inputStart = container.querySelector("#range--from")
|
|
29
32
|
const inputEnd = container.querySelector("#range--to")
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
await waitFor(() => {
|
|
34
|
+
expect(inputStart).toBeVisible()
|
|
35
|
+
expect(inputEnd).toBeVisible()
|
|
36
|
+
})
|
|
32
37
|
})
|
|
33
38
|
|
|
34
|
-
it("has an accessible name for the fieldset", () => {
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
it("has an accessible name for the fieldset", async () => {
|
|
40
|
+
renderWithIntl(<DateRangeInputFieldWrapper />)
|
|
41
|
+
await waitFor(() => {
|
|
42
|
+
expect(screen.getByRole("group", { name: "Dates" })).toBeVisible()
|
|
43
|
+
})
|
|
37
44
|
})
|
|
38
45
|
|
|
39
|
-
it("adds description to both inputs", () => {
|
|
40
|
-
|
|
46
|
+
it("adds description to both inputs", async () => {
|
|
47
|
+
renderWithIntl(<DateRangeInputFieldWrapper />)
|
|
41
48
|
const inputStart = screen.getByRole("textbox", { name: "Date from" })
|
|
42
49
|
const inputEnd = screen.getByRole("textbox", { name: "Date to" })
|
|
43
|
-
|
|
44
|
-
|
|
50
|
+
await waitFor(() => {
|
|
51
|
+
expect(inputStart).toHaveAccessibleDescription(
|
|
52
|
+
"Input format : dd/mm/yyyy"
|
|
53
|
+
)
|
|
54
|
+
expect(inputEnd).toHaveAccessibleDescription("Input format : dd/mm/yyyy")
|
|
55
|
+
})
|
|
45
56
|
})
|
|
46
57
|
|
|
47
|
-
it("adds validation message to description if it exists", () => {
|
|
48
|
-
|
|
58
|
+
it("adds validation message to description if it exists", async () => {
|
|
59
|
+
renderWithIntl(
|
|
49
60
|
<DateRangeInputFieldWrapper
|
|
50
61
|
validationMessage={{
|
|
51
62
|
dateStart: {
|
|
@@ -56,28 +67,29 @@ describe("<DateRangeInputField />", () => {
|
|
|
56
67
|
/>
|
|
57
68
|
)
|
|
58
69
|
const inputStart = screen.getByRole("textbox", { name: "Date from" })
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
70
|
+
await waitFor(() => {
|
|
71
|
+
expect(inputStart).toHaveAccessibleDescription(
|
|
72
|
+
"Date Start has an error Input format : dd/mm/yyyy"
|
|
73
|
+
)
|
|
74
|
+
expect(screen.getByText("Date Start has an error")).toBeVisible()
|
|
75
|
+
})
|
|
63
76
|
})
|
|
64
77
|
|
|
65
78
|
describe("Disabled", () => {
|
|
66
|
-
it("disables both inputs", () => {
|
|
67
|
-
|
|
79
|
+
it("disables both inputs", async () => {
|
|
80
|
+
renderWithIntl(<DateRangeInputFieldWrapper disabled />)
|
|
68
81
|
const inputStart = screen.getByRole("textbox", { name: "Date from" })
|
|
69
82
|
const inputEnd = screen.getByRole("textbox", { name: "Date to" })
|
|
70
|
-
|
|
71
|
-
|
|
83
|
+
await waitFor(() => {
|
|
84
|
+
expect(inputStart).toBeDisabled()
|
|
85
|
+
expect(inputEnd).toBeDisabled()
|
|
86
|
+
})
|
|
72
87
|
})
|
|
73
88
|
})
|
|
74
89
|
|
|
75
90
|
describe("Refs", () => {
|
|
76
91
|
it("correctly passes through both input refs", async () => {
|
|
77
|
-
const onButtonClick = jest.fn
|
|
78
|
-
void,
|
|
79
|
-
[string | undefined, string | undefined]
|
|
80
|
-
>()
|
|
92
|
+
const onButtonClick = jest.fn()
|
|
81
93
|
|
|
82
94
|
const Wrapper = (): JSX.Element => {
|
|
83
95
|
const inputStartDateRef = useRef<HTMLInputElement>(null)
|
|
@@ -107,10 +119,13 @@ describe("<DateRangeInputField />", () => {
|
|
|
107
119
|
)
|
|
108
120
|
}
|
|
109
121
|
|
|
110
|
-
|
|
122
|
+
renderWithIntl(<Wrapper />)
|
|
111
123
|
|
|
112
124
|
await user.click(screen.getByText("Click me"))
|
|
113
|
-
expect(onButtonClick).
|
|
125
|
+
expect(onButtonClick).toHaveBeenCalledWith(
|
|
126
|
+
"test__id--from",
|
|
127
|
+
"test__id--to"
|
|
128
|
+
)
|
|
114
129
|
})
|
|
115
130
|
})
|
|
116
131
|
})
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import React, { useState
|
|
2
|
-
import {
|
|
1
|
+
import React, { useState } from "react"
|
|
2
|
+
import { screen, waitFor, within } from "@testing-library/react"
|
|
3
3
|
import userEvent from "@testing-library/user-event"
|
|
4
|
+
import { renderWithIntl } from "~tests"
|
|
4
5
|
import { DateRange } from "~components/Calendar"
|
|
5
6
|
import { FilterDateRangePickerField, FilterDateRangePickerFieldProps } from "."
|
|
6
7
|
|
|
@@ -26,10 +27,17 @@ const FilterDateRangePickerFieldWrapper = ({
|
|
|
26
27
|
)
|
|
27
28
|
}
|
|
28
29
|
|
|
30
|
+
const waitForI18nContent = async (): Promise<void> => {
|
|
31
|
+
await waitFor(() => {
|
|
32
|
+
expect(screen.getByLabelText("Date from")).toBeVisible()
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
|
+
|
|
29
36
|
describe("<FilterDateRangePickerField />", () => {
|
|
30
37
|
describe("Inputs", () => {
|
|
31
|
-
it("has empty inputs when a date range is not provided", () => {
|
|
32
|
-
|
|
38
|
+
it("has empty inputs when a date range is not provided", async () => {
|
|
39
|
+
renderWithIntl(<FilterDateRangePickerFieldWrapper />)
|
|
40
|
+
await waitForI18nContent()
|
|
33
41
|
|
|
34
42
|
const inputStartDate = screen.getByLabelText("Date from")
|
|
35
43
|
const inputEndDate = screen.getByLabelText("Date to")
|
|
@@ -37,8 +45,8 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
37
45
|
expect(inputEndDate).toHaveValue("")
|
|
38
46
|
})
|
|
39
47
|
|
|
40
|
-
it("pre-fills the inputs when date range is provided", () => {
|
|
41
|
-
|
|
48
|
+
it("pre-fills the inputs when date range is provided", async () => {
|
|
49
|
+
renderWithIntl(
|
|
42
50
|
<FilterDateRangePickerFieldWrapper
|
|
43
51
|
selectedRange={{
|
|
44
52
|
from: new Date("2022-05-01"),
|
|
@@ -46,6 +54,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
46
54
|
}}
|
|
47
55
|
/>
|
|
48
56
|
)
|
|
57
|
+
await waitForI18nContent()
|
|
49
58
|
|
|
50
59
|
const inputStartDate = screen.getByLabelText("Date from")
|
|
51
60
|
const inputEndDate = screen.getByLabelText("Date to")
|
|
@@ -53,8 +62,8 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
53
62
|
expect(inputEndDate).toHaveValue("22 May 2022")
|
|
54
63
|
})
|
|
55
64
|
|
|
56
|
-
it("allows customising the input labels", () => {
|
|
57
|
-
|
|
65
|
+
it("allows customising the input labels", async () => {
|
|
66
|
+
renderWithIntl(
|
|
58
67
|
<FilterDateRangePickerFieldWrapper
|
|
59
68
|
selectedRange={{
|
|
60
69
|
from: new Date("2022-05-01"),
|
|
@@ -65,18 +74,20 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
65
74
|
/>
|
|
66
75
|
)
|
|
67
76
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
77
|
+
await waitFor(() => {
|
|
78
|
+
const inputStartDate = screen.getByLabelText("Start date")
|
|
79
|
+
const inputEndDate = screen.getByLabelText("End date")
|
|
80
|
+
expect(inputStartDate).toHaveValue("1 May 2022")
|
|
81
|
+
expect(inputEndDate).toHaveValue("22 May 2022")
|
|
82
|
+
})
|
|
72
83
|
})
|
|
73
84
|
|
|
74
85
|
describe("onBlur", () => {
|
|
75
86
|
it("updates start date input and calendar values correctly on blur", async () => {
|
|
76
|
-
const startDateOnBlur = jest.fn
|
|
77
|
-
const endDateOnBlur = jest.fn
|
|
87
|
+
const startDateOnBlur = jest.fn()
|
|
88
|
+
const endDateOnBlur = jest.fn()
|
|
78
89
|
|
|
79
|
-
|
|
90
|
+
renderWithIntl(
|
|
80
91
|
<FilterDateRangePickerFieldWrapper
|
|
81
92
|
selectedRange={{
|
|
82
93
|
from: new Date("2022-05-02"),
|
|
@@ -86,6 +97,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
86
97
|
inputEndDateProps={{ onBlur: endDateOnBlur }}
|
|
87
98
|
/>
|
|
88
99
|
)
|
|
100
|
+
await waitForI18nContent()
|
|
89
101
|
|
|
90
102
|
const inputStartDate = screen.getByLabelText("Date from")
|
|
91
103
|
const inputEndDate = screen.getByLabelText("Date to")
|
|
@@ -114,10 +126,10 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
114
126
|
})
|
|
115
127
|
|
|
116
128
|
it("updates end date input and calendar values correctly on blur", async () => {
|
|
117
|
-
const startDateOnBlur = jest.fn
|
|
118
|
-
const endDateOnBlur = jest.fn
|
|
129
|
+
const startDateOnBlur = jest.fn()
|
|
130
|
+
const endDateOnBlur = jest.fn()
|
|
119
131
|
|
|
120
|
-
|
|
132
|
+
renderWithIntl(
|
|
121
133
|
<FilterDateRangePickerFieldWrapper
|
|
122
134
|
selectedRange={{
|
|
123
135
|
from: new Date("2022-05-01"),
|
|
@@ -127,6 +139,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
127
139
|
inputEndDateProps={{ onBlur: endDateOnBlur }}
|
|
128
140
|
/>
|
|
129
141
|
)
|
|
142
|
+
await waitForI18nContent()
|
|
130
143
|
|
|
131
144
|
const inputStartDate = screen.getByLabelText("Date from")
|
|
132
145
|
const inputEndDate = screen.getByLabelText("Date to")
|
|
@@ -156,7 +169,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
156
169
|
})
|
|
157
170
|
|
|
158
171
|
it("updates the calendar month to match the new start date input", async () => {
|
|
159
|
-
|
|
172
|
+
renderWithIntl(
|
|
160
173
|
<FilterDateRangePickerFieldWrapper
|
|
161
174
|
selectedRange={{
|
|
162
175
|
from: new Date("2022-05-02"),
|
|
@@ -164,6 +177,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
164
177
|
}}
|
|
165
178
|
/>
|
|
166
179
|
)
|
|
180
|
+
await waitForI18nContent()
|
|
167
181
|
|
|
168
182
|
const inputStartDate = screen.getByLabelText("Date from")
|
|
169
183
|
expect(inputStartDate).toHaveValue("2 May 2022")
|
|
@@ -185,19 +199,19 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
185
199
|
})
|
|
186
200
|
|
|
187
201
|
describe("Calendar", () => {
|
|
188
|
-
it("shows the default month as the start month when there isn't a selected value", () => {
|
|
189
|
-
|
|
202
|
+
it("shows the default month as the start month when there isn't a selected value", async () => {
|
|
203
|
+
renderWithIntl(
|
|
190
204
|
<FilterDateRangePickerFieldWrapper
|
|
191
205
|
defaultMonth={new Date("2022-05-02")}
|
|
192
206
|
/>
|
|
193
207
|
)
|
|
194
|
-
|
|
208
|
+
await waitForI18nContent()
|
|
195
209
|
expect(screen.getByText("May 2022")).toBeVisible()
|
|
196
210
|
expect(screen.getByText("June 2022")).toBeVisible()
|
|
197
211
|
})
|
|
198
212
|
|
|
199
|
-
it("shows the selected start date month as the start month when provided", () => {
|
|
200
|
-
|
|
213
|
+
it("shows the selected start date month as the start month when provided", async () => {
|
|
214
|
+
renderWithIntl(
|
|
201
215
|
<FilterDateRangePickerFieldWrapper
|
|
202
216
|
selectedRange={{
|
|
203
217
|
from: new Date("2022-05-01"),
|
|
@@ -205,19 +219,21 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
205
219
|
}}
|
|
206
220
|
/>
|
|
207
221
|
)
|
|
208
|
-
|
|
222
|
+
await waitForI18nContent()
|
|
209
223
|
expect(screen.getByText("May 2022")).toBeVisible()
|
|
210
224
|
expect(screen.getByText("June 2022")).toBeVisible()
|
|
211
225
|
})
|
|
212
226
|
|
|
213
|
-
it("shows the current month as the start month when selected start date is invalid", () => {
|
|
214
|
-
|
|
227
|
+
it("shows the current month as the start month when selected start date is invalid", async () => {
|
|
228
|
+
renderWithIntl(
|
|
215
229
|
<FilterDateRangePickerFieldWrapper
|
|
216
230
|
selectedRange={{
|
|
217
231
|
from: new Date("potato"),
|
|
218
232
|
}}
|
|
219
233
|
/>
|
|
220
234
|
)
|
|
235
|
+
await waitForI18nContent()
|
|
236
|
+
|
|
221
237
|
const currentMonth = new Date().toLocaleDateString("en-AU", {
|
|
222
238
|
month: "long",
|
|
223
239
|
year: "numeric",
|
|
@@ -226,7 +242,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
226
242
|
})
|
|
227
243
|
|
|
228
244
|
it("updates the range start input when changing the start date", async () => {
|
|
229
|
-
|
|
245
|
+
renderWithIntl(
|
|
230
246
|
<FilterDateRangePickerFieldWrapper
|
|
231
247
|
selectedRange={{
|
|
232
248
|
from: new Date("2022-05-15"),
|
|
@@ -234,6 +250,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
234
250
|
}}
|
|
235
251
|
/>
|
|
236
252
|
)
|
|
253
|
+
await waitForI18nContent()
|
|
237
254
|
|
|
238
255
|
const inputStartDate = screen.getByLabelText("Date from")
|
|
239
256
|
expect(inputStartDate).toHaveValue("15 May 2022")
|
|
@@ -252,7 +269,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
252
269
|
})
|
|
253
270
|
|
|
254
271
|
it("updates the range end input when changing the end date", async () => {
|
|
255
|
-
|
|
272
|
+
renderWithIntl(
|
|
256
273
|
<FilterDateRangePickerFieldWrapper
|
|
257
274
|
selectedRange={{
|
|
258
275
|
from: new Date("2022-05-15"),
|
|
@@ -260,6 +277,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
260
277
|
}}
|
|
261
278
|
/>
|
|
262
279
|
)
|
|
280
|
+
await waitForI18nContent()
|
|
263
281
|
|
|
264
282
|
const inputEndDate = screen.getByLabelText("Date to")
|
|
265
283
|
expect(inputEndDate).toHaveValue("15 Jun 2022")
|
|
@@ -278,7 +296,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
278
296
|
})
|
|
279
297
|
|
|
280
298
|
it("clears the inputs when clearing the calendar value", async () => {
|
|
281
|
-
|
|
299
|
+
renderWithIntl(
|
|
282
300
|
<FilterDateRangePickerFieldWrapper
|
|
283
301
|
selectedRange={{
|
|
284
302
|
from: new Date("2022-05-15"),
|
|
@@ -286,6 +304,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
286
304
|
}}
|
|
287
305
|
/>
|
|
288
306
|
)
|
|
307
|
+
await waitForI18nContent()
|
|
289
308
|
|
|
290
309
|
const inputStartDate = screen.getByLabelText("Date from")
|
|
291
310
|
const inputEndDate = screen.getByLabelText("Date to")
|
|
@@ -312,8 +331,8 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
312
331
|
"#test__filter-date-range-picker--input--date-end-error-message"
|
|
313
332
|
|
|
314
333
|
describe("Custom validation", () => {
|
|
315
|
-
it("shows validation messages passed in from the consumer", () => {
|
|
316
|
-
|
|
334
|
+
it("shows validation messages passed in from the consumer", async () => {
|
|
335
|
+
renderWithIntl(
|
|
317
336
|
<FilterDateRangePickerFieldWrapper
|
|
318
337
|
onValidate={{
|
|
319
338
|
dateStart: (): void => undefined,
|
|
@@ -331,19 +350,23 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
331
350
|
}}
|
|
332
351
|
/>
|
|
333
352
|
)
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
353
|
+
await waitFor(() => {
|
|
354
|
+
expect(screen.getByText("Start date error message")).toBeVisible()
|
|
355
|
+
expect(screen.getByText("End date caution message")).toBeVisible()
|
|
356
|
+
})
|
|
337
357
|
})
|
|
338
358
|
})
|
|
339
359
|
|
|
340
360
|
describe("Inbuilt validation", () => {
|
|
341
361
|
it("shows inbuilt validation messages for start date", async () => {
|
|
342
|
-
const { container } =
|
|
362
|
+
const { container } = renderWithIntl(
|
|
343
363
|
<FilterDateRangePickerFieldWrapper
|
|
344
364
|
inputStartDateProps={{ labelText: "Start date" }}
|
|
345
365
|
/>
|
|
346
366
|
)
|
|
367
|
+
await waitFor(() => {
|
|
368
|
+
expect(screen.getByLabelText("Start date")).toBeVisible()
|
|
369
|
+
})
|
|
347
370
|
|
|
348
371
|
const inputStartDate = screen.getByLabelText("Start date")
|
|
349
372
|
|
|
@@ -362,11 +385,12 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
362
385
|
})
|
|
363
386
|
|
|
364
387
|
it("shows inbuilt validation messages for end date", async () => {
|
|
365
|
-
const { container } =
|
|
388
|
+
const { container } = renderWithIntl(
|
|
366
389
|
<FilterDateRangePickerFieldWrapper
|
|
367
390
|
inputEndDateProps={{ labelText: "End date" }}
|
|
368
391
|
/>
|
|
369
392
|
)
|
|
393
|
+
await waitForI18nContent()
|
|
370
394
|
|
|
371
395
|
const inputEndDate = screen.getByLabelText("End date")
|
|
372
396
|
|
|
@@ -383,8 +407,8 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
383
407
|
})
|
|
384
408
|
})
|
|
385
409
|
|
|
386
|
-
it("shows inbuilt validation messages for pre-existing values", () => {
|
|
387
|
-
const { container } =
|
|
410
|
+
it("shows inbuilt validation messages for pre-existing values", async () => {
|
|
411
|
+
const { container } = renderWithIntl(
|
|
388
412
|
<FilterDateRangePickerFieldWrapper
|
|
389
413
|
selectedRange={{
|
|
390
414
|
from: new Date("2022-05-15"),
|
|
@@ -393,6 +417,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
393
417
|
disabledDays={[new Date("2022-05-15"), new Date("2022-05-23")]}
|
|
394
418
|
/>
|
|
395
419
|
)
|
|
420
|
+
await waitForI18nContent()
|
|
396
421
|
|
|
397
422
|
const dateStartErrorContainer =
|
|
398
423
|
container.querySelector(dateStartErrorId)
|
|
@@ -411,13 +436,14 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
411
436
|
'Date to:Cannot be earlier than the selection in "Date from"'
|
|
412
437
|
|
|
413
438
|
it("shows error on updating end date input to be before start date", async () => {
|
|
414
|
-
const { container } =
|
|
439
|
+
const { container } = renderWithIntl(
|
|
415
440
|
<FilterDateRangePickerFieldWrapper
|
|
416
441
|
selectedRange={{
|
|
417
442
|
from: new Date("2022-05-15"),
|
|
418
443
|
}}
|
|
419
444
|
/>
|
|
420
445
|
)
|
|
446
|
+
await waitForI18nContent()
|
|
421
447
|
|
|
422
448
|
const inputEndDate = screen.getByLabelText("Date to")
|
|
423
449
|
|
|
@@ -436,7 +462,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
436
462
|
})
|
|
437
463
|
|
|
438
464
|
it("removes error on updating start date input to be before end date", async () => {
|
|
439
|
-
const { container } =
|
|
465
|
+
const { container } = renderWithIntl(
|
|
440
466
|
<FilterDateRangePickerFieldWrapper
|
|
441
467
|
selectedRange={{
|
|
442
468
|
from: new Date("2022-05-15"),
|
|
@@ -444,6 +470,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
444
470
|
}}
|
|
445
471
|
/>
|
|
446
472
|
)
|
|
473
|
+
await waitForI18nContent()
|
|
447
474
|
|
|
448
475
|
const inputEndDate = screen.getByLabelText("Date to")
|
|
449
476
|
|
|
@@ -479,8 +506,9 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
479
506
|
).toEqual(3)
|
|
480
507
|
})
|
|
481
508
|
})
|
|
509
|
+
|
|
482
510
|
it("displays only one date when the start date input is set to be before the end date", async () => {
|
|
483
|
-
const { container } =
|
|
511
|
+
const { container } = renderWithIntl(
|
|
484
512
|
<FilterDateRangePickerFieldWrapper
|
|
485
513
|
selectedRange={{
|
|
486
514
|
from: new Date("2022-05-15"),
|
|
@@ -488,6 +516,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
488
516
|
}}
|
|
489
517
|
/>
|
|
490
518
|
)
|
|
519
|
+
await waitForI18nContent()
|
|
491
520
|
|
|
492
521
|
const inputStartDate = screen.getByLabelText("Date from")
|
|
493
522
|
|
|
@@ -510,7 +539,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
510
539
|
})
|
|
511
540
|
|
|
512
541
|
it("shows error on updating start date input to be after end date", async () => {
|
|
513
|
-
const { container } =
|
|
542
|
+
const { container } = renderWithIntl(
|
|
514
543
|
<FilterDateRangePickerFieldWrapper
|
|
515
544
|
selectedRange={{
|
|
516
545
|
from: new Date("2022-05-15"),
|
|
@@ -518,6 +547,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
518
547
|
}}
|
|
519
548
|
/>
|
|
520
549
|
)
|
|
550
|
+
await waitForI18nContent()
|
|
521
551
|
|
|
522
552
|
const inputStartDate = screen.getByLabelText("Date from")
|
|
523
553
|
|
|
@@ -536,7 +566,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
536
566
|
})
|
|
537
567
|
|
|
538
568
|
it("shows error if the pre-existing end date is before start date", async () => {
|
|
539
|
-
const { container } =
|
|
569
|
+
const { container } = renderWithIntl(
|
|
540
570
|
<FilterDateRangePickerFieldWrapper
|
|
541
571
|
selectedRange={{
|
|
542
572
|
from: new Date("2022-05-15"),
|
|
@@ -558,7 +588,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
558
588
|
|
|
559
589
|
describe("Combined validation", () => {
|
|
560
590
|
it("shows custom start date validation with inbuilt end date validation", async () => {
|
|
561
|
-
const { container } =
|
|
591
|
+
const { container } = renderWithIntl(
|
|
562
592
|
<FilterDateRangePickerFieldWrapper
|
|
563
593
|
onValidate={{
|
|
564
594
|
dateStart: (): void => undefined,
|
|
@@ -571,6 +601,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
571
601
|
}}
|
|
572
602
|
/>
|
|
573
603
|
)
|
|
604
|
+
await waitForI18nContent()
|
|
574
605
|
|
|
575
606
|
const inputEndDate = screen.getByLabelText("Date to")
|
|
576
607
|
|
|
@@ -590,7 +621,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
590
621
|
})
|
|
591
622
|
|
|
592
623
|
it("shows custom end date validation with inbuilt start date validation", async () => {
|
|
593
|
-
const { container } =
|
|
624
|
+
const { container } = renderWithIntl(
|
|
594
625
|
<FilterDateRangePickerFieldWrapper
|
|
595
626
|
onValidate={{
|
|
596
627
|
dateEnd: (): void => undefined,
|
|
@@ -603,6 +634,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
603
634
|
}}
|
|
604
635
|
/>
|
|
605
636
|
)
|
|
637
|
+
await waitForI18nContent()
|
|
606
638
|
|
|
607
639
|
const inputStartDate = screen.getByLabelText("Date from")
|
|
608
640
|
|
|
@@ -624,7 +656,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
624
656
|
})
|
|
625
657
|
|
|
626
658
|
it("re-validates values when selecting a value using the calendar", async () => {
|
|
627
|
-
const { container } =
|
|
659
|
+
const { container } = renderWithIntl(
|
|
628
660
|
<FilterDateRangePickerFieldWrapper
|
|
629
661
|
selectedRange={{
|
|
630
662
|
from: new Date("2022-05-10"),
|
|
@@ -632,6 +664,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
632
664
|
}}
|
|
633
665
|
/>
|
|
634
666
|
)
|
|
667
|
+
await waitForI18nContent()
|
|
635
668
|
|
|
636
669
|
const dateEndErrorContainer = container.querySelector(dateEndErrorId)
|
|
637
670
|
|
|
@@ -656,7 +689,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
656
689
|
it("only returns a valid date to the onRangeChange function", async () => {
|
|
657
690
|
const onRangeChange = jest.fn()
|
|
658
691
|
|
|
659
|
-
const { getByLabelText } =
|
|
692
|
+
const { getByLabelText } = renderWithIntl(
|
|
660
693
|
<FilterDateRangePickerFieldWrapper
|
|
661
694
|
selectedRange={{
|
|
662
695
|
from: new Date("2022-05-10"),
|
|
@@ -665,6 +698,7 @@ describe("<FilterDateRangePickerField />", () => {
|
|
|
665
698
|
onRangeChange={onRangeChange}
|
|
666
699
|
/>
|
|
667
700
|
)
|
|
701
|
+
await waitForI18nContent()
|
|
668
702
|
|
|
669
703
|
onRangeChange.mockClear()
|
|
670
704
|
|
|
@@ -254,6 +254,11 @@ export const FilterDateRangePickerField = ({
|
|
|
254
254
|
}
|
|
255
255
|
|
|
256
256
|
useEffect(() => {
|
|
257
|
+
if (inputStartDateLabel === " " || inputEndDateLabel === " ") {
|
|
258
|
+
// Translations are loading
|
|
259
|
+
return
|
|
260
|
+
}
|
|
261
|
+
|
|
257
262
|
const newStartDate = validateStartDate(
|
|
258
263
|
selectedRange?.from,
|
|
259
264
|
state.inputStartValue
|
|
@@ -268,7 +273,7 @@ export const FilterDateRangePickerField = ({
|
|
|
268
273
|
}
|
|
269
274
|
|
|
270
275
|
handleDateRangeChange({ from: newStartDate, to: newEndDate })
|
|
271
|
-
}, [])
|
|
276
|
+
}, [inputStartDateLabel, inputEndDateLabel])
|
|
272
277
|
|
|
273
278
|
return (
|
|
274
279
|
<div
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { act } from "react"
|
|
2
|
+
import { waitFor } from "@testing-library/react"
|
|
2
3
|
import { renderHook } from "@testing-library/react-hooks"
|
|
3
|
-
import {
|
|
4
|
+
import { renderWithIntl } from "~tests"
|
|
4
5
|
import { useEndDateValidation } from "./useEndDateValidation"
|
|
5
6
|
|
|
6
7
|
describe("useEndDateValidation()", () => {
|
|
7
8
|
describe("validateDate()", () => {
|
|
8
|
-
it("returns a validation message and no date", () => {
|
|
9
|
+
it("returns a validation message and no date", async () => {
|
|
9
10
|
const { result } = renderHook(() =>
|
|
10
11
|
useEndDateValidation({
|
|
11
12
|
inputLabel: "End date",
|
|
@@ -23,20 +24,21 @@ describe("useEndDateValidation()", () => {
|
|
|
23
24
|
expect(newDate).toEqual(undefined)
|
|
24
25
|
})
|
|
25
26
|
|
|
26
|
-
expect(result.current.validationMessage).
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
expect(result.current.validationMessage?.status).toBe("error")
|
|
28
|
+
|
|
29
|
+
const { container } = renderWithIntl(
|
|
30
|
+
result.current.validationMessage?.message
|
|
31
|
+
)
|
|
32
|
+
await waitFor(() => {
|
|
33
|
+
expect(container).toHaveTextContent(
|
|
34
|
+
"End date:potato is an invalid date"
|
|
35
|
+
)
|
|
34
36
|
})
|
|
35
37
|
})
|
|
36
38
|
})
|
|
37
39
|
|
|
38
40
|
describe("validateEndDateBeforeStartDate()", () => {
|
|
39
|
-
it("returns a validation message and date", () => {
|
|
41
|
+
it("returns a validation message and date", async () => {
|
|
40
42
|
const { result } = renderHook(() =>
|
|
41
43
|
useEndDateValidation({
|
|
42
44
|
inputLabel: "End date",
|
|
@@ -54,14 +56,15 @@ describe("useEndDateValidation()", () => {
|
|
|
54
56
|
expect(newDate).toEqual(new Date("2023-04-03"))
|
|
55
57
|
})
|
|
56
58
|
|
|
57
|
-
expect(result.current.validationMessage).
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
59
|
+
expect(result.current.validationMessage?.status).toBe("error")
|
|
60
|
+
|
|
61
|
+
const { container } = renderWithIntl(
|
|
62
|
+
result.current.validationMessage?.message
|
|
63
|
+
)
|
|
64
|
+
await waitFor(() => {
|
|
65
|
+
expect(container).toHaveTextContent(
|
|
66
|
+
'Cannot be earlier than the selection in "Start date"'
|
|
67
|
+
)
|
|
65
68
|
})
|
|
66
69
|
})
|
|
67
70
|
})
|