@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.
Files changed (165) hide show
  1. package/config/jest/componentsMock.js +0 -26
  2. package/package.json +4 -3
  3. package/src/Style/index.tsx +1 -1
  4. package/src/__tests__/components/ElementsTooltip/ElementsTooltip.test.tsx +97 -0
  5. package/src/__tests__/components/EmptyState/EmptyState.test.tsx +78 -0
  6. package/src/__tests__/components/FieldContainer/FieldContainer.test.tsx +82 -0
  7. package/src/__tests__/components/Fields/AnalyticsField/AnalyticsField.test.tsx +1 -1
  8. package/src/__tests__/components/Fields/AnalyticsField/PageAnalytics/PageAnalytics.test.tsx +1 -15
  9. package/src/__tests__/components/Fields/AnalyticsField/StructuredDataAnalytics/StructuredDataAnalytics.test.tsx +1 -16
  10. package/src/__tests__/components/Fields/ArrayFieldGroup/ArrayFieldGroup.test.tsx +8 -17
  11. package/src/__tests__/components/Fields/AsyncCheckGroup/AsyncCheckGroup.test.tsx +4 -16
  12. package/src/__tests__/components/Fields/AsyncSelect/AsyncSelect.test.tsx +2 -20
  13. package/src/__tests__/components/Fields/CheckField/CheckField.test.tsx +6 -6
  14. package/src/__tests__/components/Fields/CheckGroup/CheckGroup.test.tsx +15 -15
  15. package/src/__tests__/components/Fields/ColorPicker/ColorPicker.test.tsx +7 -16
  16. package/src/__tests__/components/Fields/ComponentArray/ComponentArray.test.tsx +2 -23
  17. package/src/__tests__/components/Fields/ComponentArray/MixableComponentArray/MixableComponentArray.test.tsx +11 -31
  18. package/src/__tests__/components/Fields/ComponentArray/MixableComponentArray/PasteModuleButton/PasteModuleButton.test.tsx +15 -21
  19. package/src/__tests__/components/Fields/ComponentArray/SameComponentArray/SameComponentArray.test.tsx +6 -25
  20. package/src/__tests__/components/Fields/ComponentContainer/ComponentContainer.test.tsx +559 -0
  21. package/src/__tests__/components/Fields/ConditionalField/ConditionalField.test.tsx +1 -1
  22. package/src/__tests__/components/Fields/DateField/DateField.test.tsx +1 -1
  23. package/src/__tests__/components/Fields/FieldGroup/FieldGroup.test.tsx +1 -1
  24. package/src/__tests__/components/Fields/FieldsDivider/FieldsDivider.test.tsx +1 -1
  25. package/src/__tests__/components/Fields/FileField/FileField.test.tsx +3 -3
  26. package/src/__tests__/components/Fields/HeadingField/HeadingField.test.tsx +6 -6
  27. package/src/__tests__/components/Fields/HiddenField/HiddenField.test.tsx +2 -8
  28. package/src/__tests__/components/Fields/ImageField/ImageField.test.tsx +471 -0
  29. package/src/__tests__/components/Fields/MultiCheckSelect/MultiCheckSelect.test.tsx +2 -16
  30. package/src/__tests__/components/Fields/MultiCheckSelectGroup/MultiCheckSelectGroup.test.tsx +2 -2
  31. package/src/__tests__/components/Fields/NoteField/NoteField.test.tsx +2 -7
  32. package/src/__tests__/components/Fields/NumberField/NumberField.test.tsx +2 -15
  33. package/src/__tests__/components/Fields/RadioField/RadioField.test.tsx +2 -12
  34. package/src/__tests__/components/Fields/ReferenceField/ReferenceField.test.tsx +171 -19
  35. package/src/__tests__/components/Fields/RichText/RichText.test.tsx +2 -13
  36. package/src/__tests__/components/Fields/Select/Select.test.tsx +3 -23
  37. package/src/__tests__/components/Fields/SliderField/SliderField.test.tsx +2 -15
  38. package/src/__tests__/components/Fields/TagField/TagField.test.tsx +4 -4
  39. package/src/__tests__/components/Fields/TextArea/TextArea.test.tsx +1 -1
  40. package/src/__tests__/components/Fields/TextField/TextField.test.tsx +6 -6
  41. package/src/__tests__/components/Fields/TimeField/HourInput/HourInput.test.tsx +142 -0
  42. package/src/__tests__/components/Fields/TimeField/TimeField.test.tsx +100 -0
  43. package/src/__tests__/components/Fields/ToggleField/ToggleField.test.tsx +2 -10
  44. package/src/__tests__/components/Fields/Tooltip/Tooltip.test.tsx +152 -0
  45. package/src/__tests__/components/Fields/UniqueCheck/UniqueCheck.test.tsx +3 -3
  46. package/src/__tests__/components/Fields/UrlField/UrlField.test.tsx +4 -4
  47. package/src/__tests__/components/Fields/VisualUniqueSelection/ImageSelection/ImageSelection.test.tsx +2 -14
  48. package/src/__tests__/components/Fields/VisualUniqueSelection/ScrollableSelection/ScrollableSelection.test.tsx +6 -20
  49. package/src/__tests__/components/Fields/VisualUniqueSelection/VisualUniqueSelection.test.tsx +3 -29
  50. package/src/__tests__/components/Fields/Wysiwyg/Wysiwyg.test.tsx +1 -1
  51. package/src/__tests__/components/FieldsBehavior/FieldsBehavior.test.tsx +149 -0
  52. package/src/__tests__/components/SubNav/SubNav.test.tsx +37 -0
  53. package/src/__tests__/components/TableCounter/TableCounter.test.tsx +51 -0
  54. package/src/__tests__/components/TableFilters/CategoryFilter/CategoryFilter.test.tsx +241 -0
  55. package/src/__tests__/components/TableFilters/CustomizeFilters/CustomizeFilters.test.tsx +131 -0
  56. package/src/__tests__/components/TableFilters/DateFilter/DateFilter.test.tsx +148 -0
  57. package/src/__tests__/components/TableFilters/LiveFilter/LiveFilter.test.tsx +266 -0
  58. package/src/__tests__/components/TableFilters/NameFilter/NameFilter.test.tsx +196 -0
  59. package/src/__tests__/components/TableFilters/SiteFilter/SiteFilter.test.tsx +318 -0
  60. package/src/__tests__/components/TableFilters/StatusFilter/StatusFilter.test.tsx +195 -0
  61. package/src/__tests__/components/TableFilters/TranslationsFilter/TranslationsFilter.test.tsx +157 -0
  62. package/src/__tests__/components/TableFilters/TypeFilter/TypeFilter.test.tsx +165 -0
  63. package/src/__tests__/components/TableList/TableList.test.tsx +119 -0
  64. package/src/__tests__/components/Tabs/Tabs.test.tsx +205 -0
  65. package/src/__tests__/components/Tag/Tag.test.tsx +140 -0
  66. package/src/__tests__/components/Toast/Toast.test.tsx +102 -0
  67. package/src/api/navigation.tsx +1 -1
  68. package/src/components/Browser/index.tsx +1 -1
  69. package/src/components/Button/index.tsx +3 -3
  70. package/src/components/ConfigPanel/NavigationForm/Field/index.tsx +14 -3
  71. package/src/components/ElementsTooltip/index.tsx +10 -9
  72. package/src/components/EmptyState/index.tsx +2 -2
  73. package/src/components/FieldContainer/index.tsx +3 -3
  74. package/src/components/Fields/ArrayFieldGroup/index.tsx +1 -1
  75. package/src/components/Fields/AsyncCheckGroup/index.tsx +1 -1
  76. package/src/components/Fields/AsyncSelect/index.tsx +1 -1
  77. package/src/components/Fields/CheckField/index.tsx +3 -3
  78. package/src/components/Fields/CheckGroup/index.tsx +2 -2
  79. package/src/components/Fields/ComponentContainer/index.tsx +7 -6
  80. package/src/components/Fields/ComponentContainer/style.tsx +2 -2
  81. package/src/components/Fields/HeadingField/index.tsx +1 -1
  82. package/src/components/Fields/HiddenField/index.tsx +1 -1
  83. package/src/components/Fields/ImageField/index.tsx +10 -5
  84. package/src/components/Fields/MultiCheckSelect/index.tsx +3 -3
  85. package/src/components/Fields/NumberField/index.tsx +2 -1
  86. package/src/components/Fields/ReferenceField/ItemList/Item/index.tsx +5 -7
  87. package/src/components/Fields/ReferenceField/ItemList/Item/style.tsx +2 -2
  88. package/src/components/Fields/ReferenceField/ItemList/index.tsx +1 -1
  89. package/src/components/Fields/RichText/index.tsx +10 -6
  90. package/src/components/Fields/Select/index.tsx +2 -2
  91. package/src/components/Fields/SliderField/index.tsx +1 -1
  92. package/src/components/Fields/TextField/index.tsx +2 -7
  93. package/src/components/Fields/TimeField/HourInput/index.tsx +103 -0
  94. package/src/components/Fields/TimeField/HourInput/style.tsx +19 -0
  95. package/src/components/Fields/TimeField/HourInput/utils.tsx +35 -0
  96. package/src/components/Fields/TimeField/index.tsx +57 -0
  97. package/src/components/Fields/TimeField/style.tsx +37 -0
  98. package/src/components/Fields/index.tsx +2 -0
  99. package/src/components/FieldsBehavior/index.tsx +1 -1
  100. package/src/components/FloatingMenu/index.tsx +2 -2
  101. package/src/components/Gallery/GalleryFilters/Type/index.tsx +50 -0
  102. package/src/components/Gallery/GalleryFilters/Type/style.tsx +39 -0
  103. package/src/components/Gallery/GalleryPanel/DetailPanel/index.tsx +2 -1
  104. package/src/components/Gallery/GalleryPanel/GalleryDragAndDrop/style.tsx +3 -3
  105. package/src/components/Gallery/hooks.tsx +10 -4
  106. package/src/components/Gallery/index.tsx +2 -0
  107. package/src/components/Icon/index.tsx +1 -1
  108. package/src/components/IconAction/index.tsx +1 -1
  109. package/src/components/Lists/index.tsx +1 -1
  110. package/src/components/Loading/index.tsx +1 -1
  111. package/src/components/Pagination/index.tsx +1 -1
  112. package/src/components/SideModal/SideModalOption/index.tsx +4 -2
  113. package/src/components/SideModal/index.tsx +1 -1
  114. package/src/components/SubNav/index.tsx +3 -3
  115. package/src/components/SubNav/style.tsx +1 -3
  116. package/src/components/TableCounter/index.tsx +7 -2
  117. package/src/components/TableFilters/CategoryFilter/index.tsx +2 -2
  118. package/src/components/TableFilters/CategoryFilter/style.tsx +1 -10
  119. package/src/components/TableFilters/CustomizeFilters/index.tsx +2 -3
  120. package/src/components/TableFilters/DateFilter/index.tsx +4 -4
  121. package/src/components/TableFilters/LiveFilter/index.tsx +1 -1
  122. package/src/components/TableFilters/LiveFilter/style.tsx +2 -10
  123. package/src/components/TableFilters/NameFilter/index.tsx +4 -4
  124. package/src/components/TableFilters/SiteFilter/index.tsx +16 -13
  125. package/src/components/TableFilters/SiteFilter/style.tsx +1 -10
  126. package/src/components/TableFilters/StatusFilter/index.tsx +3 -3
  127. package/src/components/TableFilters/TranslationsFilter/index.tsx +4 -7
  128. package/src/components/TableFilters/TranslationsFilter/style.tsx +1 -10
  129. package/src/components/TableFilters/TypeFilter/index.tsx +2 -2
  130. package/src/components/TableFilters/TypeFilter/style.tsx +1 -10
  131. package/src/components/TableList/index.tsx +6 -6
  132. package/src/components/TableList/style.tsx +1 -1
  133. package/src/components/Tabs/index.tsx +19 -7
  134. package/src/components/Tag/index.tsx +6 -6
  135. package/src/components/Toast/index.tsx +4 -4
  136. package/src/components/Tooltip/index.tsx +5 -3
  137. package/src/components/index.tsx +2 -0
  138. package/src/containers/Navigation/Defaults/actions.tsx +10 -5
  139. package/src/containers/Navigation/Defaults/utils.tsx +13 -4
  140. package/src/containers/Sites/actions.tsx +7 -0
  141. package/src/containers/Sites/constants.tsx +1 -0
  142. package/src/containers/Sites/interfaces.tsx +6 -0
  143. package/src/containers/Sites/reducer.tsx +4 -0
  144. package/src/containers/StructuredData/actions.tsx +21 -8
  145. package/src/containers/StructuredData/constants.tsx +2 -0
  146. package/src/containers/StructuredData/interfaces.tsx +7 -1
  147. package/src/containers/StructuredData/reducer.tsx +5 -1
  148. package/src/helpers/fields.tsx +2 -2
  149. package/src/helpers/index.tsx +3 -0
  150. package/src/helpers/parseTheme.js +456 -0
  151. package/src/helpers/schemas.tsx +2 -2
  152. package/src/hooks/forms.tsx +2 -1
  153. package/src/modules/App/Routing/NavMenu/index.tsx +9 -1
  154. package/src/modules/Content/BulkHeader/TableHeader/index.tsx +1 -1
  155. package/src/modules/Content/hooks.tsx +19 -12
  156. package/src/modules/Content/index.tsx +23 -14
  157. package/src/modules/Navigation/Defaults/DefaultsEditor/Editor/DefaultsBrowser/index.tsx +3 -0
  158. package/src/modules/Navigation/Defaults/DefaultsEditor/Editor/index.tsx +3 -1
  159. package/src/modules/Navigation/Defaults/DefaultsEditor/index.tsx +16 -18
  160. package/src/modules/Navigation/Defaults/DefaultsEditor/utils.tsx +37 -0
  161. package/src/modules/StructuredData/Form/ConnectedField/index.tsx +3 -2
  162. package/src/modules/StructuredData/Form/index.tsx +22 -17
  163. package/src/modules/StructuredData/StructuredDataList/hooks.tsx +30 -20
  164. package/src/modules/StructuredData/StructuredDataList/index.tsx +24 -14
  165. 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 "@griddo/core";
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 "@griddo/core";
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("checkFieldLabel");
38
+ const checkFieldLabel = screen.getByTestId("check-field-label");
39
39
 
40
- expect(screen.getAllByTestId("checkFieldLabel")).toHaveLength(1);
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 "@griddo/core";
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("selectComponent")).toBeTruthy();
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("selectComponent");
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("checkFieldInput");
434
+ const checkFieldInputs = screen.getAllByTestId("check-field-input");
435
435
  const pageField = screen.getByTestId("page-field");
436
436
 
437
437
  await act(async () => {
@@ -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 "@griddo/core";
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 from "@ax/components/Fields/VisualUniqueSelection/ScrollableSelection";
2
+ import ScrollableSelection, {
3
+ IScrollableSelectionProps,
4
+ } from "@ax/components/Fields/VisualUniqueSelection/ScrollableSelection";
3
5
  import { ThemeProvider } from "styled-components";
4
- import { parseTheme } from "@griddo/core";
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("iconActionComponent")[1];
133
- const prevButton = screen.getAllByTestId("iconActionComponent")[0];
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
- }
@@ -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 "@griddo/core";
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 "@griddo/core";
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
+ });