@griddo/ax 12.4.0 → 12.5.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 (37) hide show
  1. package/config/__tests__/ModulePathInMessagesPlugin.test.js +93 -0
  2. package/config/webpack/ModulePathInMessagesPlugin.js +47 -0
  3. package/config/webpack.config.js +10 -0
  4. package/package.json +2 -2
  5. package/src/__tests__/components/ConfigPanel/Form/Form.test.tsx +47 -57
  6. package/src/__tests__/components/ConfigPanel/Header/Header.test.tsx +46 -42
  7. package/src/__tests__/components/ElementsTooltip/ElementsTooltip.test.tsx +6 -17
  8. package/src/__tests__/components/EmptyState/EmptyState.test.tsx +9 -9
  9. package/src/__tests__/components/Fields/AsyncSelect/AsyncSelect.test.tsx +60 -50
  10. package/src/__tests__/components/Fields/ColorPicker/ColorPicker.test.tsx +66 -58
  11. package/src/__tests__/components/Fields/ComponentContainer/ComponentContainer.test.tsx +222 -425
  12. package/src/__tests__/components/Fields/FileField/FileField.test.tsx +13 -14
  13. package/src/__tests__/components/Fields/ImageField/ImageField.test.tsx +275 -259
  14. package/src/__tests__/components/Fields/IntegrationsField/IntegrationsField.test.tsx +50 -48
  15. package/src/__tests__/components/Fields/NoteField/NoteField.test.tsx +9 -8
  16. package/src/__tests__/components/Fields/NumberField/NumberField.test.tsx +8 -12
  17. package/src/__tests__/components/Fields/TextArea/TextArea.test.tsx +6 -2
  18. package/src/__tests__/components/Fields/ToggleField/ToggleField.test.tsx +15 -23
  19. package/src/__tests__/components/Fields/Tooltip/Tooltip.test.tsx +8 -2
  20. package/src/__tests__/components/Fields/VisualUniqueSelection/VisualUniqueSelection.test.tsx +29 -21
  21. package/src/__tests__/components/Fields/Wysiwyg/Wysiwyg.config.test.tsx +103 -0
  22. package/src/__tests__/components/FieldsBehavior/FieldsBehavior.test.tsx +7 -2
  23. package/src/__tests__/components/ResizePanel/ResizePanel.test.tsx +8 -6
  24. package/src/__tests__/components/SideModal/SideModal.test.tsx +150 -104
  25. package/src/__tests__/components/TableFilters/LiveFilter/LiveFilter.test.tsx +15 -29
  26. package/src/__tests__/components/TableFilters/StatusFilter/StatusFilter.test.tsx +61 -36
  27. package/src/__tests__/components/Tabs/Tabs.test.tsx +65 -61
  28. package/src/__tests__/components/Toast/Toast.test.tsx +19 -21
  29. package/src/__tests__/modules/FramePreview/FramePreview.test.tsx +16 -0
  30. package/src/__tests__/modules/Sites/SitesList/ListView/BulkHeader/BulkHeader.test.tsx +24 -19
  31. package/src/__tests__/modules/Sites/SitesList/SitesList.test.tsx +15 -6
  32. package/src/__tests__/modules/Users/Roles/BulkHeader/BulkHeader.test.tsx +69 -64
  33. package/src/__tests__/modules/Users/Roles/Roles.test.tsx +7 -4
  34. package/src/components/Fields/Wysiwyg/config.tsx +68 -17
  35. package/src/components/Fields/Wysiwyg/helpers.tsx +2 -0
  36. package/src/components/Fields/Wysiwyg/index.tsx +41 -10
  37. package/src/components/ResizePanel/index.tsx +7 -2
@@ -12,7 +12,8 @@ import { mock } from "vitest-mock-extended";
12
12
 
13
13
  afterEach(cleanup);
14
14
 
15
- const defaultProps = mock<IAsyncSelectProps>();
15
+ const makeProps = (overrides: Partial<IAsyncSelectProps> = {}): IAsyncSelectProps =>
16
+ Object.assign(mock<IAsyncSelectProps>(), overrides);
16
17
 
17
18
  const defaultSite = mock<ISite>();
18
19
  defaultSite.id = 113;
@@ -22,11 +23,10 @@ const mockedAxios = axios as MockedFunction<typeof axios>;
22
23
 
23
24
  describe("AsyncSelect component rendering", () => {
24
25
  test("should render the component AsyncSelect", async () => {
25
- defaultProps.name = "texto de prueba";
26
26
  await act(async () => {
27
27
  render(
28
28
  <ThemeProvider theme={parseTheme(globalTheme)}>
29
- <AsyncSelect {...defaultProps} />
29
+ <AsyncSelect {...makeProps({ name: "texto de prueba" })} />
30
30
  </ThemeProvider>,
31
31
  );
32
32
  });
@@ -36,15 +36,6 @@ describe("AsyncSelect component rendering", () => {
36
36
 
37
37
  describe("AsyncSelect component events", () => {
38
38
  test("should call the api and receive data in pages", async () => {
39
- defaultProps.site = defaultSite;
40
- defaultProps.entity = "pages";
41
- defaultProps.options = {
42
- excludeDetailPages: true,
43
- };
44
- defaultProps.lang = "en_GB";
45
- defaultProps.selectedContent = { id: 1 };
46
- defaultProps.value = [3622, 3621];
47
-
48
39
  const data = {
49
40
  data: [
50
41
  {
@@ -83,7 +74,18 @@ describe("AsyncSelect component events", () => {
83
74
  await act(async () => {
84
75
  render(
85
76
  <ThemeProvider theme={parseTheme(globalTheme)}>
86
- <AsyncSelect {...defaultProps} />
77
+ <AsyncSelect
78
+ {...makeProps({
79
+ site: defaultSite,
80
+ entity: "pages",
81
+ options: {
82
+ excludeDetailPages: true,
83
+ },
84
+ lang: "en_GB",
85
+ selectedContent: { id: 1 },
86
+ value: [3622, 3621],
87
+ })}
88
+ />
87
89
  </ThemeProvider>,
88
90
  );
89
91
  });
@@ -92,15 +94,6 @@ describe("AsyncSelect component events", () => {
92
94
  });
93
95
 
94
96
  test("should call the api and receive data in pages with no selectedContent", async () => {
95
- defaultProps.site = defaultSite;
96
- defaultProps.entity = "pages";
97
- defaultProps.options = {
98
- excludeDetailPages: true,
99
- };
100
- defaultProps.lang = "en_GB";
101
- defaultProps.selectedContent = null;
102
- defaultProps.value = 3622;
103
-
104
97
  const data = {
105
98
  data: [
106
99
  {
@@ -139,7 +132,18 @@ describe("AsyncSelect component events", () => {
139
132
  await act(async () => {
140
133
  render(
141
134
  <ThemeProvider theme={parseTheme(globalTheme)}>
142
- <AsyncSelect {...defaultProps} />
135
+ <AsyncSelect
136
+ {...makeProps({
137
+ site: defaultSite,
138
+ entity: "pages",
139
+ options: {
140
+ excludeDetailPages: true,
141
+ },
142
+ lang: "en_GB",
143
+ selectedContent: null,
144
+ value: 3622,
145
+ })}
146
+ />
143
147
  </ThemeProvider>,
144
148
  );
145
149
  });
@@ -148,14 +152,6 @@ describe("AsyncSelect component events", () => {
148
152
  });
149
153
 
150
154
  test("should call the api and receive data in categories", async () => {
151
- defaultProps.site = defaultSite;
152
- defaultProps.entity = "categories";
153
- defaultProps.options = {
154
- excludeDetailPages: true,
155
- };
156
- defaultProps.lang = "en_GB";
157
- defaultProps.value = 3622;
158
-
159
155
  const data = {
160
156
  data: [
161
157
  {
@@ -194,7 +190,17 @@ describe("AsyncSelect component events", () => {
194
190
  await act(async () => {
195
191
  render(
196
192
  <ThemeProvider theme={parseTheme(globalTheme)}>
197
- <AsyncSelect {...defaultProps} />
193
+ <AsyncSelect
194
+ {...makeProps({
195
+ site: defaultSite,
196
+ entity: "categories",
197
+ options: {
198
+ excludeDetailPages: true,
199
+ },
200
+ lang: "en_GB",
201
+ value: 3622,
202
+ })}
203
+ />
198
204
  </ThemeProvider>,
199
205
  );
200
206
  });
@@ -203,13 +209,6 @@ describe("AsyncSelect component events", () => {
203
209
  });
204
210
 
205
211
  test("should call the api and not receiving data", async () => {
206
- defaultProps.site = defaultSite;
207
- defaultProps.entity = "categories";
208
- defaultProps.options = {
209
- excludeDetailPages: true,
210
- };
211
- defaultProps.lang = "en_GB";
212
-
213
212
  const data = {
214
213
  data: [],
215
214
  status: 500,
@@ -223,7 +222,16 @@ describe("AsyncSelect component events", () => {
223
222
  await act(async () => {
224
223
  render(
225
224
  <ThemeProvider theme={parseTheme(globalTheme)}>
226
- <AsyncSelect {...defaultProps} />
225
+ <AsyncSelect
226
+ {...makeProps({
227
+ site: defaultSite,
228
+ entity: "categories",
229
+ options: {
230
+ excludeDetailPages: true,
231
+ },
232
+ lang: "en_GB",
233
+ })}
234
+ />
227
235
  </ThemeProvider>,
228
236
  );
229
237
  });
@@ -232,15 +240,6 @@ describe("AsyncSelect component events", () => {
232
240
  });
233
241
 
234
242
  test("should call the api with source", async () => {
235
- defaultProps.site = defaultSite;
236
- defaultProps.entity = "categories";
237
- defaultProps.source = "source";
238
- defaultProps.options = {
239
- excludeDetailPages: true,
240
- };
241
- defaultProps.lang = "en_GB";
242
- defaultProps.value = 3787;
243
-
244
243
  const data = {
245
244
  data: [
246
245
  {
@@ -279,7 +278,18 @@ describe("AsyncSelect component events", () => {
279
278
  await act(async () => {
280
279
  render(
281
280
  <ThemeProvider theme={parseTheme(globalTheme)}>
282
- <AsyncSelect {...defaultProps} />
281
+ <AsyncSelect
282
+ {...makeProps({
283
+ site: defaultSite,
284
+ entity: "categories",
285
+ source: "source",
286
+ options: {
287
+ excludeDetailPages: true,
288
+ },
289
+ lang: "en_GB",
290
+ value: 3787,
291
+ })}
292
+ />
283
293
  </ThemeProvider>,
284
294
  );
285
295
  });
@@ -1,4 +1,3 @@
1
- import type { MockedFunction } from "vitest";
2
1
  import React from "react";
3
2
  import "@testing-library/jest-dom";
4
3
  import ColorPicker, { IProps } from "@ax/components/Fields/ColorPicker";
@@ -10,28 +9,26 @@ import { mock } from "vitest-mock-extended";
10
9
 
11
10
  afterEach(cleanup);
12
11
 
13
- const defaultProps = mock<IProps>();
12
+ // `onChange` es obligatoria y el componente la invoca. El proxy de `mock<T>()`
13
+ // solo materializa una prop al accederla y el spread de JSX copia solo las
14
+ // propias, así que sin ponerla aquí no llegaría al componente.
15
+ const makeProps = (overrides: Partial<IProps> = {}): IProps =>
16
+ Object.assign(mock<IProps>(), { onChange: vi.fn() }, overrides);
14
17
 
15
18
  describe("ColorPicker component rendering", () => {
16
19
  test("should render the component ColorPicker", () => {
17
- defaultProps.value = "#000000";
18
- defaultProps.theme = parseTheme(globalTheme);
19
-
20
20
  render(
21
21
  <ThemeProvider theme={parseTheme(globalTheme)}>
22
- <ColorPicker {...defaultProps} />
22
+ <ColorPicker {...makeProps({ value: "#000000", theme: parseTheme(globalTheme) })} />
23
23
  </ThemeProvider>,
24
24
  );
25
25
  expect(screen.getByTestId("color-picker-wrapper")).toBeTruthy();
26
26
  });
27
27
 
28
28
  test("should render the Picker", () => {
29
- defaultProps.value = "#000000";
30
- defaultProps.theme = parseTheme(globalTheme);
31
- defaultProps.error = true;
32
29
  render(
33
30
  <ThemeProvider theme={parseTheme(globalTheme)}>
34
- <ColorPicker {...defaultProps} />
31
+ <ColorPicker {...makeProps({ value: "#000000", theme: parseTheme(globalTheme), error: true })} />
35
32
  </ThemeProvider>,
36
33
  );
37
34
  const inputActionComponent = screen.getByTestId("icon-action-component");
@@ -43,15 +40,19 @@ describe("ColorPicker component rendering", () => {
43
40
 
44
41
  describe("ColorPicker events", () => {
45
42
  test("should trigger the onChange", () => {
46
- defaultProps.value = "#000000";
47
- defaultProps.theme = parseTheme(globalTheme);
48
- defaultProps.colors = ["#000000", "#d9e3f0", "#f47373", "#697689"];
49
- defaultProps.isThemePalette = false;
50
- const onChangeMock = defaultProps.onChange as MockedFunction<(newColor: string) => void>;
43
+ const onChangeMock = vi.fn();
51
44
 
52
45
  render(
53
46
  <ThemeProvider theme={parseTheme(globalTheme)}>
54
- <ColorPicker {...defaultProps} />
47
+ <ColorPicker
48
+ {...makeProps({
49
+ onChange: onChangeMock,
50
+ value: "#000000",
51
+ theme: parseTheme(globalTheme),
52
+ colors: ["#000000", "#d9e3f0", "#f47373", "#697689"],
53
+ isThemePalette: false,
54
+ })}
55
+ />
55
56
  </ThemeProvider>,
56
57
  );
57
58
  const inputComponent = screen.getByTestId("input-picker-wrapper");
@@ -65,15 +66,17 @@ describe("ColorPicker events", () => {
65
66
  });
66
67
 
67
68
  test("should trigger the onChange", () => {
68
- defaultProps.value = "#000000";
69
- defaultProps.theme = parseTheme(globalTheme);
70
- const handleValidationMock = defaultProps.handleValidation as MockedFunction<
71
- (value: string, validators: Record<string, unknown>) => void
72
- >;
73
- defaultProps.error = true;
69
+ const handleValidationMock = vi.fn();
74
70
  render(
75
71
  <ThemeProvider theme={parseTheme(globalTheme)}>
76
- <ColorPicker {...defaultProps} />
72
+ <ColorPicker
73
+ {...makeProps({
74
+ handleValidation: handleValidationMock,
75
+ value: "#000000",
76
+ theme: parseTheme(globalTheme),
77
+ error: true,
78
+ })}
79
+ />
77
80
  </ThemeProvider>,
78
81
  );
79
82
  const inputComponent = screen.getByTestId("input-picker-wrapper");
@@ -83,13 +86,12 @@ describe("ColorPicker events", () => {
83
86
  });
84
87
 
85
88
  test("should trigger the onChange of the Picker", async () => {
86
- defaultProps.value = "#000000";
87
- defaultProps.theme = parseTheme(globalTheme);
88
- defaultProps.error = true;
89
- const onChangeMock = defaultProps.onChange as MockedFunction<(newColor: string) => void>;
89
+ const onChangeMock = vi.fn();
90
90
  render(
91
91
  <ThemeProvider theme={parseTheme(globalTheme)}>
92
- <ColorPicker {...defaultProps} />
92
+ <ColorPicker
93
+ {...makeProps({ onChange: onChangeMock, value: "#000000", theme: parseTheme(globalTheme), error: true })}
94
+ />
93
95
  </ThemeProvider>,
94
96
  );
95
97
 
@@ -103,14 +105,18 @@ describe("ColorPicker events", () => {
103
105
  });
104
106
 
105
107
  test("should trigger the onChange of the Picker with color", async () => {
106
- defaultProps.value = "#000000";
107
- defaultProps.theme = parseTheme(globalTheme);
108
- defaultProps.error = true;
109
- defaultProps.colors = ["#fff", "#000"];
110
- const onChangeMock = defaultProps.onChange as MockedFunction<(newColor: string) => void>;
108
+ const onChangeMock = vi.fn();
111
109
  render(
112
110
  <ThemeProvider theme={parseTheme(globalTheme)}>
113
- <ColorPicker {...defaultProps} />
111
+ <ColorPicker
112
+ {...makeProps({
113
+ onChange: onChangeMock,
114
+ value: "#000000",
115
+ theme: parseTheme(globalTheme),
116
+ error: true,
117
+ colors: ["#fff", "#000"],
118
+ })}
119
+ />
114
120
  </ThemeProvider>,
115
121
  );
116
122
 
@@ -124,17 +130,19 @@ describe("ColorPicker events", () => {
124
130
  });
125
131
 
126
132
  test("should not pass colors to picker", async () => {
127
- defaultProps.value = "#000000";
128
- defaultProps.theme = "default";
129
- defaultProps.error = true;
130
- defaultProps.colors = [
131
- { color: "#f0f0f0", theme: "default" },
132
- { color: "#fff", theme: "cms-default" },
133
- ];
134
-
135
133
  render(
136
134
  <ThemeProvider theme={parseTheme(globalTheme)}>
137
- <ColorPicker {...defaultProps} />
135
+ <ColorPicker
136
+ {...makeProps({
137
+ value: "#000000",
138
+ theme: "default",
139
+ error: true,
140
+ colors: [
141
+ { color: "#f0f0f0", theme: "default" },
142
+ { color: "#fff", theme: "cms-default" },
143
+ ],
144
+ })}
145
+ />
138
146
  </ThemeProvider>,
139
147
  );
140
148
 
@@ -147,17 +155,19 @@ describe("ColorPicker events", () => {
147
155
  });
148
156
 
149
157
  test("should pass colors to picker", async () => {
150
- defaultProps.value = "#000000";
151
- defaultProps.theme = "default";
152
- defaultProps.error = true;
153
- defaultProps.colors = [
154
- { options: ["#f0f0f0"], theme: "default" },
155
- { color: "#fff", theme: "cms-default" },
156
- ];
157
-
158
158
  render(
159
159
  <ThemeProvider theme={parseTheme(globalTheme)}>
160
- <ColorPicker {...defaultProps} />
160
+ <ColorPicker
161
+ {...makeProps({
162
+ value: "#000000",
163
+ theme: "default",
164
+ error: true,
165
+ colors: [
166
+ { options: ["#f0f0f0"], theme: "default" },
167
+ { color: "#fff", theme: "cms-default" },
168
+ ],
169
+ })}
170
+ />
161
171
  </ThemeProvider>,
162
172
  );
163
173
 
@@ -170,15 +180,13 @@ describe("ColorPicker events", () => {
170
180
  });
171
181
 
172
182
  test("should trigger the handleOnBlur", async () => {
173
- defaultProps.value = "#000000";
174
- defaultProps.theme = parseTheme(globalTheme);
175
- const handleValidationMock = defaultProps.handleValidation as MockedFunction<
176
- (value: string, validators: Record<string, unknown>) => void
177
- >;
183
+ const handleValidationMock = vi.fn();
178
184
 
179
185
  render(
180
186
  <ThemeProvider theme={parseTheme(globalTheme)}>
181
- <ColorPicker {...defaultProps} />
187
+ <ColorPicker
188
+ {...makeProps({ handleValidation: handleValidationMock, value: "#000000", theme: parseTheme(globalTheme) })}
189
+ />
182
190
  </ThemeProvider>,
183
191
  );
184
192
  const inputComponent = screen.getByTestId("input-picker-wrapper");