@griddo/ax 1.69.9 → 1.72.1
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/config/jest/componentsMock.js +0 -26
- package/package.json +4 -3
- package/src/Style/index.tsx +1 -1
- package/src/__tests__/components/ElementsTooltip/ElementsTooltip.test.tsx +97 -0
- package/src/__tests__/components/EmptyState/EmptyState.test.tsx +78 -0
- package/src/__tests__/components/FieldContainer/FieldContainer.test.tsx +82 -0
- package/src/__tests__/components/Fields/AnalyticsField/AnalyticsField.test.tsx +1 -1
- package/src/__tests__/components/Fields/AnalyticsField/PageAnalytics/PageAnalytics.test.tsx +1 -15
- package/src/__tests__/components/Fields/AnalyticsField/StructuredDataAnalytics/StructuredDataAnalytics.test.tsx +1 -16
- package/src/__tests__/components/Fields/ArrayFieldGroup/ArrayFieldGroup.test.tsx +8 -17
- package/src/__tests__/components/Fields/AsyncCheckGroup/AsyncCheckGroup.test.tsx +4 -16
- package/src/__tests__/components/Fields/AsyncSelect/AsyncSelect.test.tsx +2 -20
- package/src/__tests__/components/Fields/CheckField/CheckField.test.tsx +6 -6
- package/src/__tests__/components/Fields/CheckGroup/CheckGroup.test.tsx +15 -15
- package/src/__tests__/components/Fields/ColorPicker/ColorPicker.test.tsx +7 -16
- package/src/__tests__/components/Fields/ComponentArray/ComponentArray.test.tsx +2 -23
- package/src/__tests__/components/Fields/ComponentArray/MixableComponentArray/MixableComponentArray.test.tsx +11 -31
- package/src/__tests__/components/Fields/ComponentArray/MixableComponentArray/PasteModuleButton/PasteModuleButton.test.tsx +15 -21
- package/src/__tests__/components/Fields/ComponentArray/SameComponentArray/SameComponentArray.test.tsx +6 -25
- package/src/__tests__/components/Fields/ComponentContainer/ComponentContainer.test.tsx +559 -0
- package/src/__tests__/components/Fields/ConditionalField/ConditionalField.test.tsx +1 -1
- package/src/__tests__/components/Fields/DateField/DateField.test.tsx +1 -1
- package/src/__tests__/components/Fields/FieldGroup/FieldGroup.test.tsx +1 -1
- package/src/__tests__/components/Fields/FieldsDivider/FieldsDivider.test.tsx +1 -1
- package/src/__tests__/components/Fields/FileField/FileField.test.tsx +3 -3
- package/src/__tests__/components/Fields/HeadingField/HeadingField.test.tsx +6 -6
- package/src/__tests__/components/Fields/HiddenField/HiddenField.test.tsx +2 -8
- package/src/__tests__/components/Fields/ImageField/ImageField.test.tsx +471 -0
- package/src/__tests__/components/Fields/MultiCheckSelect/MultiCheckSelect.test.tsx +2 -16
- package/src/__tests__/components/Fields/MultiCheckSelectGroup/MultiCheckSelectGroup.test.tsx +2 -2
- package/src/__tests__/components/Fields/NoteField/NoteField.test.tsx +2 -7
- package/src/__tests__/components/Fields/NumberField/NumberField.test.tsx +2 -15
- package/src/__tests__/components/Fields/RadioField/RadioField.test.tsx +2 -12
- package/src/__tests__/components/Fields/ReferenceField/ReferenceField.test.tsx +171 -19
- package/src/__tests__/components/Fields/RichText/RichText.test.tsx +2 -13
- package/src/__tests__/components/Fields/Select/Select.test.tsx +3 -23
- package/src/__tests__/components/Fields/SliderField/SliderField.test.tsx +2 -15
- package/src/__tests__/components/Fields/TagField/TagField.test.tsx +4 -4
- package/src/__tests__/components/Fields/TextArea/TextArea.test.tsx +1 -1
- package/src/__tests__/components/Fields/TextField/TextField.test.tsx +6 -6
- package/src/__tests__/components/Fields/TimeField/HourInput/HourInput.test.tsx +142 -0
- package/src/__tests__/components/Fields/TimeField/TimeField.test.tsx +100 -0
- package/src/__tests__/components/Fields/ToggleField/ToggleField.test.tsx +2 -10
- package/src/__tests__/components/Fields/Tooltip/Tooltip.test.tsx +152 -0
- package/src/__tests__/components/Fields/UniqueCheck/UniqueCheck.test.tsx +3 -3
- package/src/__tests__/components/Fields/UrlField/UrlField.test.tsx +4 -4
- package/src/__tests__/components/Fields/VisualUniqueSelection/ImageSelection/ImageSelection.test.tsx +2 -14
- package/src/__tests__/components/Fields/VisualUniqueSelection/ScrollableSelection/ScrollableSelection.test.tsx +6 -20
- package/src/__tests__/components/Fields/VisualUniqueSelection/VisualUniqueSelection.test.tsx +3 -29
- package/src/__tests__/components/Fields/Wysiwyg/Wysiwyg.test.tsx +1 -1
- package/src/__tests__/components/FieldsBehavior/FieldsBehavior.test.tsx +149 -0
- package/src/__tests__/components/SubNav/SubNav.test.tsx +37 -0
- package/src/__tests__/components/TableCounter/TableCounter.test.tsx +51 -0
- package/src/__tests__/components/TableFilters/CategoryFilter/CategoryFilter.test.tsx +241 -0
- package/src/__tests__/components/TableFilters/CustomizeFilters/CustomizeFilters.test.tsx +131 -0
- package/src/__tests__/components/TableFilters/DateFilter/DateFilter.test.tsx +148 -0
- package/src/__tests__/components/TableFilters/LiveFilter/LiveFilter.test.tsx +266 -0
- package/src/__tests__/components/TableFilters/NameFilter/NameFilter.test.tsx +196 -0
- package/src/__tests__/components/TableFilters/SiteFilter/SiteFilter.test.tsx +318 -0
- package/src/__tests__/components/TableFilters/StatusFilter/StatusFilter.test.tsx +195 -0
- package/src/__tests__/components/TableFilters/TranslationsFilter/TranslationsFilter.test.tsx +157 -0
- package/src/__tests__/components/TableFilters/TypeFilter/TypeFilter.test.tsx +165 -0
- package/src/__tests__/components/TableList/TableList.test.tsx +119 -0
- package/src/__tests__/components/Tabs/Tabs.test.tsx +205 -0
- package/src/__tests__/components/Tag/Tag.test.tsx +140 -0
- package/src/__tests__/components/Toast/Toast.test.tsx +102 -0
- package/src/api/navigation.tsx +1 -1
- package/src/components/Browser/index.tsx +1 -1
- package/src/components/Button/index.tsx +3 -3
- package/src/components/ConfigPanel/NavigationForm/Field/index.tsx +14 -3
- package/src/components/ElementsTooltip/index.tsx +10 -9
- package/src/components/EmptyState/index.tsx +2 -2
- package/src/components/FieldContainer/index.tsx +3 -3
- package/src/components/Fields/ArrayFieldGroup/index.tsx +1 -1
- package/src/components/Fields/AsyncCheckGroup/index.tsx +1 -1
- package/src/components/Fields/AsyncSelect/index.tsx +1 -1
- package/src/components/Fields/CheckField/index.tsx +3 -3
- package/src/components/Fields/CheckGroup/index.tsx +2 -2
- package/src/components/Fields/ComponentContainer/index.tsx +7 -6
- package/src/components/Fields/ComponentContainer/style.tsx +2 -2
- package/src/components/Fields/HeadingField/index.tsx +1 -1
- package/src/components/Fields/HiddenField/index.tsx +1 -1
- package/src/components/Fields/ImageField/index.tsx +10 -5
- package/src/components/Fields/MultiCheckSelect/index.tsx +3 -3
- package/src/components/Fields/NumberField/index.tsx +2 -1
- package/src/components/Fields/ReferenceField/ItemList/Item/index.tsx +5 -7
- package/src/components/Fields/ReferenceField/ItemList/Item/style.tsx +2 -2
- package/src/components/Fields/ReferenceField/ItemList/index.tsx +1 -1
- package/src/components/Fields/RichText/index.tsx +10 -6
- package/src/components/Fields/Select/index.tsx +2 -2
- package/src/components/Fields/SliderField/index.tsx +1 -1
- package/src/components/Fields/TextField/index.tsx +2 -7
- package/src/components/Fields/TimeField/HourInput/index.tsx +103 -0
- package/src/components/Fields/TimeField/HourInput/style.tsx +19 -0
- package/src/components/Fields/TimeField/HourInput/utils.tsx +35 -0
- package/src/components/Fields/TimeField/index.tsx +57 -0
- package/src/components/Fields/TimeField/style.tsx +37 -0
- package/src/components/Fields/index.tsx +2 -0
- package/src/components/FieldsBehavior/index.tsx +1 -1
- package/src/components/FloatingMenu/index.tsx +2 -2
- package/src/components/Gallery/GalleryFilters/Type/index.tsx +50 -0
- package/src/components/Gallery/GalleryFilters/Type/style.tsx +39 -0
- package/src/components/Gallery/GalleryPanel/DetailPanel/index.tsx +2 -1
- package/src/components/Gallery/GalleryPanel/GalleryDragAndDrop/style.tsx +3 -3
- package/src/components/Gallery/hooks.tsx +10 -4
- package/src/components/Gallery/index.tsx +2 -0
- package/src/components/Icon/index.tsx +1 -1
- package/src/components/IconAction/index.tsx +1 -1
- package/src/components/Lists/index.tsx +1 -1
- package/src/components/Loading/index.tsx +1 -1
- package/src/components/Pagination/index.tsx +1 -1
- package/src/components/SideModal/SideModalOption/index.tsx +4 -2
- package/src/components/SideModal/index.tsx +1 -1
- package/src/components/SubNav/index.tsx +3 -3
- package/src/components/SubNav/style.tsx +1 -3
- package/src/components/TableCounter/index.tsx +7 -2
- package/src/components/TableFilters/CategoryFilter/index.tsx +2 -2
- package/src/components/TableFilters/CategoryFilter/style.tsx +1 -10
- package/src/components/TableFilters/CustomizeFilters/index.tsx +2 -3
- package/src/components/TableFilters/DateFilter/index.tsx +4 -4
- package/src/components/TableFilters/LiveFilter/index.tsx +1 -1
- package/src/components/TableFilters/LiveFilter/style.tsx +2 -10
- package/src/components/TableFilters/NameFilter/index.tsx +4 -4
- package/src/components/TableFilters/SiteFilter/index.tsx +16 -13
- package/src/components/TableFilters/SiteFilter/style.tsx +1 -10
- package/src/components/TableFilters/StatusFilter/index.tsx +3 -3
- package/src/components/TableFilters/TranslationsFilter/index.tsx +4 -7
- package/src/components/TableFilters/TranslationsFilter/style.tsx +1 -10
- package/src/components/TableFilters/TypeFilter/index.tsx +2 -2
- package/src/components/TableFilters/TypeFilter/style.tsx +1 -10
- package/src/components/TableList/index.tsx +6 -6
- package/src/components/TableList/style.tsx +1 -1
- package/src/components/Tabs/index.tsx +19 -7
- package/src/components/Tag/index.tsx +6 -6
- package/src/components/Toast/index.tsx +4 -4
- package/src/components/Tooltip/index.tsx +5 -3
- package/src/components/index.tsx +2 -0
- package/src/containers/Navigation/Defaults/actions.tsx +10 -5
- package/src/containers/Navigation/Defaults/utils.tsx +13 -4
- package/src/containers/Sites/actions.tsx +7 -0
- package/src/containers/Sites/constants.tsx +1 -0
- package/src/containers/Sites/interfaces.tsx +6 -0
- package/src/containers/Sites/reducer.tsx +4 -0
- package/src/containers/StructuredData/actions.tsx +21 -8
- package/src/containers/StructuredData/constants.tsx +2 -0
- package/src/containers/StructuredData/interfaces.tsx +7 -1
- package/src/containers/StructuredData/reducer.tsx +5 -1
- package/src/helpers/fields.tsx +2 -2
- package/src/helpers/index.tsx +3 -0
- package/src/helpers/parseTheme.js +456 -0
- package/src/helpers/schemas.tsx +2 -2
- package/src/hooks/forms.tsx +2 -1
- package/src/modules/App/Routing/NavMenu/index.tsx +9 -1
- package/src/modules/Content/BulkHeader/TableHeader/index.tsx +1 -1
- package/src/modules/Content/hooks.tsx +19 -12
- package/src/modules/Content/index.tsx +23 -14
- package/src/modules/Navigation/Defaults/DefaultsEditor/Editor/DefaultsBrowser/index.tsx +3 -0
- package/src/modules/Navigation/Defaults/DefaultsEditor/Editor/index.tsx +3 -1
- package/src/modules/Navigation/Defaults/DefaultsEditor/index.tsx +16 -18
- package/src/modules/Navigation/Defaults/DefaultsEditor/utils.tsx +37 -0
- package/src/modules/StructuredData/Form/ConnectedField/index.tsx +3 -2
- package/src/modules/StructuredData/Form/index.tsx +22 -17
- package/src/modules/StructuredData/StructuredDataList/hooks.tsx +30 -20
- package/src/modules/StructuredData/StructuredDataList/index.tsx +24 -14
- package/src/types/index.tsx +8 -7
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { render, screen, cleanup, fireEvent } from "@testing-library/react";
|
|
3
|
+
import { mock } from "jest-mock-extended";
|
|
4
|
+
import { ThemeProvider } from "styled-components";
|
|
5
|
+
import { parseTheme } from "@ax/helpers";
|
|
6
|
+
import globalTheme from "@ax/themes/theme.json";
|
|
7
|
+
import { TimeField } from "@ax/components";
|
|
8
|
+
|
|
9
|
+
afterEach(cleanup);
|
|
10
|
+
|
|
11
|
+
const defaultProps = mock<ITimeFieldProps>();
|
|
12
|
+
|
|
13
|
+
describe("TimeField component rendering", () => {
|
|
14
|
+
it("should render the component", () => {
|
|
15
|
+
render(
|
|
16
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
17
|
+
<TimeField {...defaultProps} />
|
|
18
|
+
</ThemeProvider>
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
const timeFieldWrapper = screen.getByTestId("time-field-wrapper");
|
|
22
|
+
expect(timeFieldWrapper).toBeTruthy();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it("should render component as disabled", () => {
|
|
26
|
+
defaultProps.disabled = true;
|
|
27
|
+
|
|
28
|
+
render(
|
|
29
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
30
|
+
<TimeField {...defaultProps} />
|
|
31
|
+
</ThemeProvider>
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
const timeFieldWrapper = screen.getByTestId<HTMLInputElement>("time-field-wrapper");
|
|
35
|
+
expect(timeFieldWrapper).toBeTruthy();
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it("should render component with error", () => {
|
|
39
|
+
defaultProps.error = true;
|
|
40
|
+
|
|
41
|
+
render(
|
|
42
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
43
|
+
<TimeField {...defaultProps} />
|
|
44
|
+
</ThemeProvider>
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
const timeFieldWrapper = screen.getByTestId<HTMLInputElement>("time-field-wrapper");
|
|
48
|
+
expect(timeFieldWrapper).toBeTruthy();
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it("should render the component input", () => {
|
|
52
|
+
render(
|
|
53
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
54
|
+
<TimeField {...defaultProps} />
|
|
55
|
+
</ThemeProvider>
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
const timeFieldWInput = screen.getByTestId("time-field-input");
|
|
59
|
+
expect(timeFieldWInput).toBeTruthy();
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
describe("onChange events", () => {
|
|
64
|
+
it("should call onChange on change", () => {
|
|
65
|
+
const onChangeMock = defaultProps.onChange as jest.MockedFunction<(value: string) => void>;
|
|
66
|
+
defaultProps.value = "12:30 am";
|
|
67
|
+
|
|
68
|
+
render(
|
|
69
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
70
|
+
<TimeField {...defaultProps} />
|
|
71
|
+
</ThemeProvider>
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
const input = screen.getByTestId("time-field-input");
|
|
75
|
+
fireEvent.change(input, { target: { value: "12:30 am" } });
|
|
76
|
+
expect(onChangeMock).toHaveBeenCalledWith("12:30 am");
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it("should call onChange on change with no value", () => {
|
|
80
|
+
const onChangeMock = defaultProps.onChange as jest.MockedFunction<(value: string) => void>;
|
|
81
|
+
defaultProps.value = undefined;
|
|
82
|
+
|
|
83
|
+
render(
|
|
84
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
85
|
+
<TimeField {...defaultProps} />
|
|
86
|
+
</ThemeProvider>
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
const input = screen.getByTestId("time-field-input");
|
|
90
|
+
fireEvent.change(input, { target: { value: "00:00 am" } });
|
|
91
|
+
expect(onChangeMock).toHaveBeenCalledWith("00:00 am");
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
interface ITimeFieldProps {
|
|
96
|
+
value?: string;
|
|
97
|
+
onChange: (value: string) => void;
|
|
98
|
+
error?: boolean;
|
|
99
|
+
disabled?: boolean;
|
|
100
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import ToggleField from "@ax/components/Fields/ToggleField";
|
|
2
|
+
import ToggleField, { IToggleFieldProps } from "@ax/components/Fields/ToggleField";
|
|
3
3
|
import { ThemeProvider } from "styled-components";
|
|
4
|
-
import { parseTheme } from "@
|
|
4
|
+
import { parseTheme } from "@ax/helpers";
|
|
5
5
|
import globalTheme from "@ax/themes/theme.json";
|
|
6
6
|
import { render, screen, cleanup, fireEvent } from "@testing-library/react";
|
|
7
7
|
import { mock } from "jest-mock-extended";
|
|
@@ -90,11 +90,3 @@ describe("onClick events", () => {
|
|
|
90
90
|
expect(defaultProps.onChange).not.toHaveBeenCalled();
|
|
91
91
|
});
|
|
92
92
|
});
|
|
93
|
-
|
|
94
|
-
interface IToggleFieldProps {
|
|
95
|
-
name: string;
|
|
96
|
-
value: any;
|
|
97
|
-
checked?: boolean;
|
|
98
|
-
disabled?: boolean;
|
|
99
|
-
onChange?: (value: boolean) => void;
|
|
100
|
-
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
import { ThemeProvider } from "styled-components";
|
|
4
|
+
import { render, screen, cleanup, fireEvent, act } from "@testing-library/react";
|
|
5
|
+
import "@testing-library/jest-dom";
|
|
6
|
+
import { mock } from "jest-mock-extended";
|
|
7
|
+
|
|
8
|
+
import { parseTheme } from "@ax/helpers";
|
|
9
|
+
|
|
10
|
+
import Tooltip, { ITooltipProps } from "@ax/components/Tooltip";
|
|
11
|
+
import { Icon } from "@ax/components";
|
|
12
|
+
import globalTheme from "@ax/themes/theme.json";
|
|
13
|
+
|
|
14
|
+
afterEach(cleanup);
|
|
15
|
+
|
|
16
|
+
const defaultProps = mock<ITooltipProps>();
|
|
17
|
+
|
|
18
|
+
describe("Tooltip component rendering", () => {
|
|
19
|
+
it("should render the component", () => {
|
|
20
|
+
defaultProps.content = "content";
|
|
21
|
+
render(
|
|
22
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
23
|
+
<Tooltip {...defaultProps} />
|
|
24
|
+
</ThemeProvider>
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
const tooltipComponent = screen.getByTestId("tooltip-component");
|
|
28
|
+
const tipComponent = screen.getByTestId("tip-component");
|
|
29
|
+
|
|
30
|
+
expect(tooltipComponent).toBeTruthy();
|
|
31
|
+
expect(tipComponent).toBeTruthy();
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it("should not render the component", () => {
|
|
35
|
+
defaultProps.content = undefined;
|
|
36
|
+
render(
|
|
37
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
38
|
+
<Tooltip {...defaultProps} />
|
|
39
|
+
</ThemeProvider>
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
const tooltipComponent = screen.queryByTestId("tooltip-component");
|
|
43
|
+
expect(tooltipComponent).not.toBeTruthy();
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
describe("Tooltip events triggering", () => {
|
|
48
|
+
it("should render the component and Tip Component is still visible when doing click", () => {
|
|
49
|
+
jest.useFakeTimers();
|
|
50
|
+
defaultProps.content = "content";
|
|
51
|
+
defaultProps.children = <Icon name="modified" size="16px" />;
|
|
52
|
+
|
|
53
|
+
const { rerender } = render(
|
|
54
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
55
|
+
<Tooltip {...defaultProps} />
|
|
56
|
+
</ThemeProvider>
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
const tooltipComponent = screen.getByTestId("tooltip-component");
|
|
60
|
+
const tipComponent = screen.queryByText("content");
|
|
61
|
+
|
|
62
|
+
defaultProps.hideOnClick = false;
|
|
63
|
+
rerender(
|
|
64
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
65
|
+
<Tooltip {...defaultProps} />
|
|
66
|
+
</ThemeProvider>
|
|
67
|
+
);
|
|
68
|
+
expect(tipComponent).not.toBeVisible();
|
|
69
|
+
|
|
70
|
+
act(() => {
|
|
71
|
+
// over the tooltip
|
|
72
|
+
fireEvent.mouseEnter(tooltipComponent);
|
|
73
|
+
|
|
74
|
+
rerender(
|
|
75
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
76
|
+
<Tooltip {...defaultProps} />
|
|
77
|
+
</ThemeProvider>
|
|
78
|
+
);
|
|
79
|
+
jest.runAllTimers();
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
expect(tipComponent).toBeVisible();
|
|
83
|
+
|
|
84
|
+
act(() => {
|
|
85
|
+
// click and change the clicked value
|
|
86
|
+
fireEvent.mouseDown(tooltipComponent);
|
|
87
|
+
|
|
88
|
+
rerender(
|
|
89
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
90
|
+
<Tooltip {...defaultProps} />
|
|
91
|
+
</ThemeProvider>
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
jest.runAllTimers();
|
|
95
|
+
});
|
|
96
|
+
expect(tipComponent).toBeVisible();
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it("should render the component and change visibility of Tip Component when click", () => {
|
|
100
|
+
jest.useFakeTimers();
|
|
101
|
+
defaultProps.content = "content";
|
|
102
|
+
defaultProps.children = <Icon name="modified" size="16px" />;
|
|
103
|
+
|
|
104
|
+
const { rerender } = render(
|
|
105
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
106
|
+
<Tooltip {...defaultProps} />
|
|
107
|
+
</ThemeProvider>
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
const tooltipComponent = screen.getByTestId("tooltip-component");
|
|
111
|
+
const tipComponent = screen.queryByText("content");
|
|
112
|
+
const iconComponent = screen.getByTestId("icon-component");
|
|
113
|
+
|
|
114
|
+
defaultProps.hideOnClick = true;
|
|
115
|
+
rerender(
|
|
116
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
117
|
+
<Tooltip {...defaultProps} />
|
|
118
|
+
</ThemeProvider>
|
|
119
|
+
);
|
|
120
|
+
expect(tipComponent).not.toBeVisible();
|
|
121
|
+
|
|
122
|
+
act(() => {
|
|
123
|
+
// over the tooltip
|
|
124
|
+
fireEvent.mouseEnter(tooltipComponent);
|
|
125
|
+
|
|
126
|
+
rerender(
|
|
127
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
128
|
+
<Tooltip {...defaultProps} />
|
|
129
|
+
</ThemeProvider>
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
jest.runAllTimers();
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
expect(tipComponent).toBeVisible();
|
|
136
|
+
|
|
137
|
+
act(() => {
|
|
138
|
+
fireEvent.mouseDown(tooltipComponent);
|
|
139
|
+
|
|
140
|
+
rerender(
|
|
141
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
142
|
+
<Tooltip {...defaultProps} />
|
|
143
|
+
</ThemeProvider>
|
|
144
|
+
);
|
|
145
|
+
});
|
|
146
|
+
fireEvent.mouseEnter(tooltipComponent);
|
|
147
|
+
fireEvent.mouseDown(document);
|
|
148
|
+
|
|
149
|
+
expect(tooltipComponent).toBeTruthy();
|
|
150
|
+
expect(tipComponent).not.toBeVisible();
|
|
151
|
+
});
|
|
152
|
+
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import UniqueCheck from "@ax/components/Fields/UniqueCheck";
|
|
3
3
|
import { ThemeProvider } from "styled-components";
|
|
4
|
-
import { parseTheme } from "@
|
|
4
|
+
import { parseTheme } from "@ax/helpers";
|
|
5
5
|
import globalTheme from "@ax/themes/theme.json";
|
|
6
6
|
import "@testing-library/jest-dom";
|
|
7
7
|
import { render, screen, cleanup } from "@testing-library/react";
|
|
@@ -35,9 +35,9 @@ describe("CheckField component rendering", () => {
|
|
|
35
35
|
</ThemeProvider>
|
|
36
36
|
);
|
|
37
37
|
|
|
38
|
-
const checkFieldLabel = screen.getByTestId("
|
|
38
|
+
const checkFieldLabel = screen.getByTestId("check-field-label");
|
|
39
39
|
|
|
40
|
-
expect(screen.getAllByTestId("
|
|
40
|
+
expect(screen.getAllByTestId("check-field-label")).toHaveLength(1);
|
|
41
41
|
expect(checkFieldLabel).toHaveTextContent("Option 1");
|
|
42
42
|
});
|
|
43
43
|
});
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
structuredDataResponse,
|
|
14
14
|
} from "../../../../__mocks__/mockedAxios";
|
|
15
15
|
|
|
16
|
-
import { parseTheme } from "@
|
|
16
|
+
import { parseTheme } from "@ax/helpers";
|
|
17
17
|
import UrlField, { IUrlFieldProps } from "@ax/components/Fields/UrlField/index";
|
|
18
18
|
import globalTheme from "@ax/themes/theme.json";
|
|
19
19
|
|
|
@@ -251,7 +251,7 @@ describe("UrlField component rendering", () => {
|
|
|
251
251
|
render(Component, { store });
|
|
252
252
|
});
|
|
253
253
|
|
|
254
|
-
expect(screen.getAllByTestId("
|
|
254
|
+
expect(screen.getAllByTestId("select-component")).toBeTruthy();
|
|
255
255
|
});
|
|
256
256
|
|
|
257
257
|
test("should render the select with tabs and subSlug", async () => {
|
|
@@ -290,7 +290,7 @@ describe("UrlField component rendering", () => {
|
|
|
290
290
|
render(Component, { store });
|
|
291
291
|
});
|
|
292
292
|
|
|
293
|
-
const selectComponents = screen.getAllByTestId("
|
|
293
|
+
const selectComponents = screen.getAllByTestId("select-component");
|
|
294
294
|
|
|
295
295
|
await act(async () => {
|
|
296
296
|
selectComponents[3].click();
|
|
@@ -431,7 +431,7 @@ describe("onClick events", () => {
|
|
|
431
431
|
});
|
|
432
432
|
|
|
433
433
|
const selectionListItem = screen.getAllByTestId("selection-list-item");
|
|
434
|
-
const checkFieldInputs = screen.getAllByTestId("
|
|
434
|
+
const checkFieldInputs = screen.getAllByTestId("check-field-input");
|
|
435
435
|
const pageField = screen.getByTestId("page-field");
|
|
436
436
|
|
|
437
437
|
await act(async () => {
|
package/src/__tests__/components/Fields/VisualUniqueSelection/ImageSelection/ImageSelection.test.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import ImageSelection from "@ax/components/Fields/VisualUniqueSelection/ImageSelection";
|
|
2
|
+
import ImageSelection, { IImageSelectionProps } from "@ax/components/Fields/VisualUniqueSelection/ImageSelection";
|
|
3
3
|
import { ThemeProvider } from "styled-components";
|
|
4
|
-
import { parseTheme } from "@
|
|
4
|
+
import { parseTheme } from "@ax/helpers";
|
|
5
5
|
import globalTheme from "@ax/themes/theme.json";
|
|
6
6
|
import "@testing-library/jest-dom";
|
|
7
7
|
import { render, screen, cleanup, fireEvent } from "@testing-library/react";
|
|
@@ -85,15 +85,3 @@ describe("VisualUniqueSelection component events", () => {
|
|
|
85
85
|
expect(onChangeMock).toHaveBeenCalled();
|
|
86
86
|
});
|
|
87
87
|
});
|
|
88
|
-
|
|
89
|
-
interface IImageSelectionProps {
|
|
90
|
-
value: string;
|
|
91
|
-
title: string;
|
|
92
|
-
onChange: (value: string) => void;
|
|
93
|
-
options: any;
|
|
94
|
-
name: string;
|
|
95
|
-
objKey: string;
|
|
96
|
-
columns: number;
|
|
97
|
-
disabled?: boolean;
|
|
98
|
-
theme: string;
|
|
99
|
-
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import ScrollableSelection
|
|
2
|
+
import ScrollableSelection, {
|
|
3
|
+
IScrollableSelectionProps,
|
|
4
|
+
} from "@ax/components/Fields/VisualUniqueSelection/ScrollableSelection";
|
|
3
5
|
import { ThemeProvider } from "styled-components";
|
|
4
|
-
import { parseTheme } from "@
|
|
6
|
+
import { parseTheme } from "@ax/helpers";
|
|
5
7
|
import globalTheme from "@ax/themes/theme.json";
|
|
6
8
|
import "@testing-library/jest-dom";
|
|
7
9
|
import { render, screen, cleanup, fireEvent } from "@testing-library/react";
|
|
@@ -129,8 +131,8 @@ describe("ScrollableSelection component events", () => {
|
|
|
129
131
|
const dots = screen.getAllByTestId("dotSelected");
|
|
130
132
|
expect((dots[0] as HTMLOptionElement).selected).toBeTruthy();
|
|
131
133
|
expect(screen.getByTestId("scrollableSelectionComponent")).toBeTruthy();
|
|
132
|
-
const nextButton = screen.getAllByTestId("
|
|
133
|
-
const prevButton = screen.getAllByTestId("
|
|
134
|
+
const nextButton = screen.getAllByTestId("icon-action-component")[1];
|
|
135
|
+
const prevButton = screen.getAllByTestId("icon-action-component")[0];
|
|
134
136
|
fireEvent.click(nextButton);
|
|
135
137
|
expect((dots[0] as HTMLOptionElement).selected).toBeFalsy();
|
|
136
138
|
expect((dots[1] as HTMLOptionElement).selected).toBeTruthy();
|
|
@@ -158,19 +160,3 @@ describe("ScrollableSelection component events", () => {
|
|
|
158
160
|
expect(onChangeMock).toHaveBeenCalled();
|
|
159
161
|
});
|
|
160
162
|
});
|
|
161
|
-
|
|
162
|
-
interface IScrollableSelectionProps {
|
|
163
|
-
value: string;
|
|
164
|
-
title: string;
|
|
165
|
-
onChange: (value: string) => void;
|
|
166
|
-
options: any[];
|
|
167
|
-
name: string;
|
|
168
|
-
objKey: string;
|
|
169
|
-
columns: number;
|
|
170
|
-
disabled?: boolean;
|
|
171
|
-
actions: any;
|
|
172
|
-
selectedContent: any;
|
|
173
|
-
reference?: string;
|
|
174
|
-
theme: string;
|
|
175
|
-
elementUniqueSelection: boolean;
|
|
176
|
-
}
|
package/src/__tests__/components/Fields/VisualUniqueSelection/VisualUniqueSelection.test.tsx
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import VisualUniqueSelection from "@ax/components/Fields/VisualUniqueSelection";
|
|
3
|
+
import { IImageSelectionProps } from "@ax/components/Fields/VisualUniqueSelection/ImageSelection";
|
|
4
|
+
import { IScrollableSelectionProps } from "@ax/components/Fields/VisualUniqueSelection/ScrollableSelection";
|
|
3
5
|
import { ThemeProvider } from "styled-components";
|
|
4
|
-
import { parseTheme } from "@
|
|
6
|
+
import { parseTheme } from "@ax/helpers";
|
|
5
7
|
import globalTheme from "@ax/themes/theme.json";
|
|
6
8
|
import { render, screen, cleanup } from "@testing-library/react";
|
|
7
9
|
import { mock } from "jest-mock-extended";
|
|
@@ -48,31 +50,3 @@ describe("VisualUniqueSelection component rendering", () => {
|
|
|
48
50
|
expect(screen.getByTestId("scrollableSelectionComponent")).toBeTruthy();
|
|
49
51
|
});
|
|
50
52
|
});
|
|
51
|
-
|
|
52
|
-
interface IImageSelectionProps {
|
|
53
|
-
value: string;
|
|
54
|
-
title: string;
|
|
55
|
-
onChange: (value: string) => void;
|
|
56
|
-
options: any;
|
|
57
|
-
name: string;
|
|
58
|
-
objKey: string;
|
|
59
|
-
columns: number;
|
|
60
|
-
disabled?: boolean;
|
|
61
|
-
theme: string;
|
|
62
|
-
elementUniqueSelection: boolean;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
interface IScrollableSelectionProps {
|
|
66
|
-
value: string;
|
|
67
|
-
title: string;
|
|
68
|
-
onChange: (value: string) => void;
|
|
69
|
-
options: any[];
|
|
70
|
-
name: string;
|
|
71
|
-
objKey: string;
|
|
72
|
-
columns: number;
|
|
73
|
-
disabled?: boolean;
|
|
74
|
-
actions: any;
|
|
75
|
-
selectedContent: any;
|
|
76
|
-
reference?: string;
|
|
77
|
-
theme: string;
|
|
78
|
-
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { ThemeProvider } from "styled-components";
|
|
3
|
-
import { parseTheme } from "@
|
|
3
|
+
import { parseTheme } from "@ax/helpers";
|
|
4
4
|
import { mock } from "jest-mock-extended";
|
|
5
5
|
import configureStore from "redux-mock-store";
|
|
6
6
|
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
|
|
3
|
+
import { ThemeProvider } from "styled-components";
|
|
4
|
+
import { render, screen, cleanup } from "@testing-library/react";
|
|
5
|
+
import { parseTheme } from "@ax/helpers";
|
|
6
|
+
import "@testing-library/jest-dom";
|
|
7
|
+
|
|
8
|
+
import FieldsBehavior from "@ax/components/FieldsBehavior";
|
|
9
|
+
import globalTheme from "@ax/themes/theme.json";
|
|
10
|
+
|
|
11
|
+
afterEach(cleanup);
|
|
12
|
+
|
|
13
|
+
describe("FieldsBehavior component rendering", () => {
|
|
14
|
+
it("should render the component", () => {
|
|
15
|
+
const defaultProps = {
|
|
16
|
+
objKey: "subjDocumentUrl",
|
|
17
|
+
fieldType: "TextField",
|
|
18
|
+
innerFields: [],
|
|
19
|
+
field: {
|
|
20
|
+
title: "Document URL",
|
|
21
|
+
type: "TextField",
|
|
22
|
+
key: "subjDocumentUrl",
|
|
23
|
+
placeholder: "https://",
|
|
24
|
+
condition: "url",
|
|
25
|
+
},
|
|
26
|
+
filled: true,
|
|
27
|
+
title: "Cool title",
|
|
28
|
+
type: "TextField",
|
|
29
|
+
mandatory: "true",
|
|
30
|
+
isTitle: true,
|
|
31
|
+
theme: "default-theme",
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
render(
|
|
35
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
36
|
+
<FieldsBehavior {...defaultProps} />
|
|
37
|
+
</ThemeProvider>
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
const fieldsBehaviorWrapper = screen.getByTestId("fields-behavior-wrapper");
|
|
41
|
+
expect(fieldsBehaviorWrapper).toBeTruthy();
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it("should render the component with error message", () => {
|
|
45
|
+
const defaultProps = {
|
|
46
|
+
objKey: "subjDocumentUrl",
|
|
47
|
+
fieldType: "TextField",
|
|
48
|
+
innerFields: [],
|
|
49
|
+
field: {
|
|
50
|
+
title: "Document URL",
|
|
51
|
+
type: "TextField",
|
|
52
|
+
key: "subjDocumentUrl",
|
|
53
|
+
placeholder: "https://",
|
|
54
|
+
condition: "url",
|
|
55
|
+
},
|
|
56
|
+
error: true,
|
|
57
|
+
helptext: "ayuda",
|
|
58
|
+
filled: true,
|
|
59
|
+
title: "Cool title",
|
|
60
|
+
type: "TextField",
|
|
61
|
+
mandatory: "true",
|
|
62
|
+
isTitle: true,
|
|
63
|
+
theme: "default-theme",
|
|
64
|
+
whiteList: ["BasicContent", "CardCollection"],
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
render(
|
|
68
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
69
|
+
<FieldsBehavior {...defaultProps} />
|
|
70
|
+
</ThemeProvider>
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
const fieldsBehaviorWrapper = screen.getByTestId("fields-behavior-wrapper");
|
|
74
|
+
expect(fieldsBehaviorWrapper).toBeTruthy();
|
|
75
|
+
const helpMessage = screen.queryByText("ayuda");
|
|
76
|
+
expect(helpMessage).toBeTruthy();
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it("should render the component with tooltip 'Options'", () => {
|
|
80
|
+
const defaultProps = {
|
|
81
|
+
objKey: "subjDocumentUrl",
|
|
82
|
+
fieldType: "TextField",
|
|
83
|
+
innerFields: [],
|
|
84
|
+
field: {
|
|
85
|
+
title: "Document URL",
|
|
86
|
+
type: "TextField",
|
|
87
|
+
key: "subjDocumentUrl",
|
|
88
|
+
placeholder: "https://",
|
|
89
|
+
condition: "url",
|
|
90
|
+
},
|
|
91
|
+
title: "Cool title",
|
|
92
|
+
type: "TextField",
|
|
93
|
+
mandatory: "true",
|
|
94
|
+
isTitle: true,
|
|
95
|
+
theme: "default-theme",
|
|
96
|
+
advanced: true,
|
|
97
|
+
whiteList: [],
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
render(
|
|
101
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
102
|
+
<FieldsBehavior {...defaultProps} />
|
|
103
|
+
</ThemeProvider>
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
const fieldsBehaviorWrapper = screen.getByTestId("fields-behavior-wrapper");
|
|
107
|
+
expect(fieldsBehaviorWrapper).toBeTruthy();
|
|
108
|
+
|
|
109
|
+
const tooltipComponent = screen.getByTestId("tooltip-component");
|
|
110
|
+
const tipComponent = screen.queryByText("Options");
|
|
111
|
+
expect(tooltipComponent).toBeTruthy();
|
|
112
|
+
expect(tipComponent).toBeTruthy();
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it("should render the component with tooltip 'Hide'", () => {
|
|
116
|
+
const defaultProps = {
|
|
117
|
+
objKey: "subjDocumentUrl",
|
|
118
|
+
fieldType: "TextField",
|
|
119
|
+
innerFields: [],
|
|
120
|
+
field: {
|
|
121
|
+
title: "Document URL",
|
|
122
|
+
type: "TextField",
|
|
123
|
+
key: "subjDocumentUrl",
|
|
124
|
+
placeholder: "https://",
|
|
125
|
+
condition: "url",
|
|
126
|
+
},
|
|
127
|
+
title: "Cool title",
|
|
128
|
+
type: "TextField",
|
|
129
|
+
mandatory: "true",
|
|
130
|
+
isTitle: true,
|
|
131
|
+
theme: "default-theme",
|
|
132
|
+
hideable: true,
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
render(
|
|
136
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
137
|
+
<FieldsBehavior {...defaultProps} />
|
|
138
|
+
</ThemeProvider>
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
const fieldsBehaviorWrapper = screen.getByTestId("fields-behavior-wrapper");
|
|
142
|
+
expect(fieldsBehaviorWrapper).toBeTruthy();
|
|
143
|
+
|
|
144
|
+
const tooltipComponent = screen.getByTestId("tooltip-component");
|
|
145
|
+
const tipComponent = screen.queryByText("Hide");
|
|
146
|
+
expect(tooltipComponent).toBeTruthy();
|
|
147
|
+
expect(tipComponent).toBeTruthy();
|
|
148
|
+
});
|
|
149
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
|
|
3
|
+
import { ThemeProvider } from "styled-components";
|
|
4
|
+
import { mock } from "jest-mock-extended";
|
|
5
|
+
import { render, screen, cleanup } from "@testing-library/react";
|
|
6
|
+
import { parseTheme } from "@ax/helpers";
|
|
7
|
+
|
|
8
|
+
import SubNav, { ISubNavProps } from "@ax/components/SubNav";
|
|
9
|
+
import globalTheme from "@ax/themes/theme.json";
|
|
10
|
+
|
|
11
|
+
afterEach(cleanup);
|
|
12
|
+
|
|
13
|
+
const defaultProps = mock<ISubNavProps>();
|
|
14
|
+
|
|
15
|
+
describe("SubNav component rendering", () => {
|
|
16
|
+
it("should render the component's wrapper", () => {
|
|
17
|
+
render(
|
|
18
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
19
|
+
<SubNav {...defaultProps} />
|
|
20
|
+
</ThemeProvider>
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
const subNavWrapper = screen.getByTestId("sub-nav-wrapper");
|
|
24
|
+
expect(subNavWrapper).toBeTruthy();
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it("should render the component", () => {
|
|
28
|
+
render(
|
|
29
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
30
|
+
<SubNav {...defaultProps} />
|
|
31
|
+
</ThemeProvider>
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
const subNav = screen.getByTestId("sub-nav");
|
|
35
|
+
expect(subNav).toBeTruthy();
|
|
36
|
+
});
|
|
37
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
import { ThemeProvider } from "styled-components";
|
|
4
|
+
import { render, screen, cleanup } from "@testing-library/react";
|
|
5
|
+
|
|
6
|
+
import { parseTheme } from "@ax/helpers";
|
|
7
|
+
import globalTheme from "@ax/themes/theme.json";
|
|
8
|
+
import TableCounter, { ITableCounter } from "@ax/components/TableCounter";
|
|
9
|
+
|
|
10
|
+
afterEach(cleanup);
|
|
11
|
+
|
|
12
|
+
const props: ITableCounter = {
|
|
13
|
+
totalItems: 0,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
describe("TableCounter component", () => {
|
|
17
|
+
test("should render the component", () => {
|
|
18
|
+
render(
|
|
19
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
20
|
+
<TableCounter {...props} />
|
|
21
|
+
</ThemeProvider>
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
const tableCounter = screen.getAllByTestId("table-counter");
|
|
25
|
+
expect(tableCounter).toBeTruthy();
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test("should render the total items value", () => {
|
|
29
|
+
const defaultProps = { totalItems: 0 };
|
|
30
|
+
|
|
31
|
+
render(
|
|
32
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
33
|
+
<TableCounter {...defaultProps} />
|
|
34
|
+
</ThemeProvider>
|
|
35
|
+
);
|
|
36
|
+
const tableCounter = screen.getByTestId("table-counter");
|
|
37
|
+
expect(tableCounter.textContent).toEqual("0 results");
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test("should render results label in singular when totalItems equal 1", () => {
|
|
41
|
+
const defaultProps = { totalItems: 1 };
|
|
42
|
+
|
|
43
|
+
render(
|
|
44
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
45
|
+
<TableCounter {...defaultProps} />
|
|
46
|
+
</ThemeProvider>
|
|
47
|
+
);
|
|
48
|
+
const tableCounter = screen.getByTestId("table-counter");
|
|
49
|
+
expect(tableCounter.textContent).toEqual("1 result");
|
|
50
|
+
});
|
|
51
|
+
});
|