@griddo/ax 12.4.0 → 12.5.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/config/webpack.config.js +5 -0
- package/package.json +2 -2
- package/src/__tests__/components/ConfigPanel/Form/Form.test.tsx +47 -57
- package/src/__tests__/components/ConfigPanel/Header/Header.test.tsx +46 -42
- package/src/__tests__/components/ElementsTooltip/ElementsTooltip.test.tsx +6 -17
- package/src/__tests__/components/EmptyState/EmptyState.test.tsx +9 -9
- package/src/__tests__/components/Fields/AsyncSelect/AsyncSelect.test.tsx +60 -50
- package/src/__tests__/components/Fields/ColorPicker/ColorPicker.test.tsx +66 -58
- package/src/__tests__/components/Fields/ComponentContainer/ComponentContainer.test.tsx +222 -425
- package/src/__tests__/components/Fields/FileField/FileField.test.tsx +13 -14
- package/src/__tests__/components/Fields/ImageField/ImageField.test.tsx +275 -259
- package/src/__tests__/components/Fields/IntegrationsField/IntegrationsField.test.tsx +50 -48
- package/src/__tests__/components/Fields/NoteField/NoteField.test.tsx +9 -8
- package/src/__tests__/components/Fields/NumberField/NumberField.test.tsx +8 -12
- package/src/__tests__/components/Fields/TextArea/TextArea.test.tsx +6 -2
- package/src/__tests__/components/Fields/ToggleField/ToggleField.test.tsx +15 -23
- package/src/__tests__/components/Fields/Tooltip/Tooltip.test.tsx +8 -2
- package/src/__tests__/components/Fields/VisualUniqueSelection/VisualUniqueSelection.test.tsx +29 -21
- package/src/__tests__/components/Fields/Wysiwyg/Wysiwyg.config.test.tsx +103 -0
- package/src/__tests__/components/FieldsBehavior/FieldsBehavior.test.tsx +7 -2
- package/src/__tests__/components/ResizePanel/ResizePanel.test.tsx +8 -6
- package/src/__tests__/components/SideModal/SideModal.test.tsx +150 -104
- package/src/__tests__/components/TableFilters/LiveFilter/LiveFilter.test.tsx +15 -29
- package/src/__tests__/components/TableFilters/StatusFilter/StatusFilter.test.tsx +61 -36
- package/src/__tests__/components/Tabs/Tabs.test.tsx +65 -61
- package/src/__tests__/components/Toast/Toast.test.tsx +19 -21
- package/src/__tests__/modules/FramePreview/FramePreview.test.tsx +16 -0
- package/src/__tests__/modules/Sites/SitesList/ListView/BulkHeader/BulkHeader.test.tsx +24 -19
- package/src/__tests__/modules/Sites/SitesList/SitesList.test.tsx +15 -6
- package/src/__tests__/modules/Users/Roles/BulkHeader/BulkHeader.test.tsx +69 -64
- package/src/__tests__/modules/Users/Roles/Roles.test.tsx +7 -4
- package/src/components/Fields/Wysiwyg/config.tsx +68 -17
- package/src/components/Fields/Wysiwyg/helpers.tsx +2 -0
- package/src/components/Fields/Wysiwyg/index.tsx +41 -10
- package/src/components/ResizePanel/index.tsx +7 -2
|
@@ -23,28 +23,36 @@ const mockStore = configureStore(middlewares);
|
|
|
23
23
|
vi.mock("axios");
|
|
24
24
|
const mockedAxios = axios as MockedFunction<typeof axios>;
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
26
|
+
// Antes había un `mock<IIntegrationsFieldProps>()` de módulo con el `site` puesto que todos los
|
|
27
|
+
// tests mutaban para fijar su `value`. Ahora cada uno construye los suyos.
|
|
28
|
+
const makeProps = (overrides: Partial<IIntegrationsFieldProps> = {}): IIntegrationsFieldProps =>
|
|
29
|
+
Object.assign(
|
|
30
|
+
mock<IIntegrationsFieldProps>(),
|
|
31
|
+
{
|
|
32
|
+
site: {
|
|
33
|
+
id: 86,
|
|
34
|
+
name: "Site 1",
|
|
35
|
+
theme: "default-theme",
|
|
36
|
+
author: "",
|
|
37
|
+
pages: [],
|
|
38
|
+
updated: true,
|
|
39
|
+
home: "//cx.dev.griddo.io/pre-griddo/componentfolder",
|
|
40
|
+
isPublished: false,
|
|
41
|
+
bigAvatar: "http://images.dev.griddo.io/griddo-site-thumbnail-ec2ab0ba-9424-4424-8f60-222ec746902d_10",
|
|
42
|
+
favicon: "https://images.dev.griddo.io/by-themascot-1920_2",
|
|
43
|
+
published: "2021-11-03T10:42:32.000Z",
|
|
44
|
+
smallAvatar: "http://images.dev.griddo.io/griddo-site-thumbnail-ec2ab0ba-9424-4424-8f60-222ec746902d_9",
|
|
45
|
+
thumbnail: "http://images.dev.griddo.io/griddo-site-thumbnail-ec2ab0ba-9424-4424-8f60-222ec746902d_7",
|
|
46
|
+
timezone: "Pacific/Pago_Pago",
|
|
47
|
+
lastAccess: "2022-09-05T07:34:19.000Z",
|
|
48
|
+
navigationModules: null,
|
|
49
|
+
defaultLanguage: 1,
|
|
50
|
+
path: "",
|
|
51
|
+
domain: 1,
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
overrides,
|
|
55
|
+
);
|
|
48
56
|
|
|
49
57
|
const initialStore = {
|
|
50
58
|
dataPacks: { activated: [] },
|
|
@@ -193,8 +201,6 @@ const initialStore = {
|
|
|
193
201
|
|
|
194
202
|
describe("IntegrationsField component rendering", () => {
|
|
195
203
|
test("should render the component IntegrationsField", async () => {
|
|
196
|
-
const initialState = { ...defaultProps };
|
|
197
|
-
defaultProps.value = [];
|
|
198
204
|
const store = mockStore(initialStore);
|
|
199
205
|
|
|
200
206
|
const data = {
|
|
@@ -209,7 +215,7 @@ describe("IntegrationsField component rendering", () => {
|
|
|
209
215
|
await act(async () => {
|
|
210
216
|
render(
|
|
211
217
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
212
|
-
<IntegrationsField {...{
|
|
218
|
+
<IntegrationsField {...makeProps({ value: [] })} />
|
|
213
219
|
</ThemeProvider>,
|
|
214
220
|
{ store },
|
|
215
221
|
);
|
|
@@ -219,8 +225,6 @@ describe("IntegrationsField component rendering", () => {
|
|
|
219
225
|
});
|
|
220
226
|
|
|
221
227
|
test("should render the component IntegrationsField with integrations", async () => {
|
|
222
|
-
const initialState = { ...defaultProps };
|
|
223
|
-
defaultProps.value = [...initialStore.integrations.integrations];
|
|
224
228
|
const store = mockStore(initialStore);
|
|
225
229
|
|
|
226
230
|
const data = {
|
|
@@ -235,7 +239,7 @@ describe("IntegrationsField component rendering", () => {
|
|
|
235
239
|
await act(async () => {
|
|
236
240
|
render(
|
|
237
241
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
238
|
-
<IntegrationsField {...{
|
|
242
|
+
<IntegrationsField {...makeProps({ value: [...initialStore.integrations.integrations] })} />
|
|
239
243
|
</ThemeProvider>,
|
|
240
244
|
{ store },
|
|
241
245
|
);
|
|
@@ -245,8 +249,6 @@ describe("IntegrationsField component rendering", () => {
|
|
|
245
249
|
});
|
|
246
250
|
|
|
247
251
|
test("should render the component IntegrationsField with custom code integration", async () => {
|
|
248
|
-
const initialState = { ...defaultProps };
|
|
249
|
-
|
|
250
252
|
const customOption = {
|
|
251
253
|
name: "",
|
|
252
254
|
contentHead: "",
|
|
@@ -255,7 +257,6 @@ describe("IntegrationsField component rendering", () => {
|
|
|
255
257
|
contentPresence: { presenceType: "page-manual", relatedPages: null },
|
|
256
258
|
};
|
|
257
259
|
|
|
258
|
-
defaultProps.value = [...initialStore.integrations.integrations, customOption];
|
|
259
260
|
const store = mockStore(initialStore);
|
|
260
261
|
|
|
261
262
|
const data = {
|
|
@@ -270,7 +271,7 @@ describe("IntegrationsField component rendering", () => {
|
|
|
270
271
|
await act(async () => {
|
|
271
272
|
render(
|
|
272
273
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
273
|
-
<IntegrationsField {...{ ...
|
|
274
|
+
<IntegrationsField {...makeProps({ value: [...initialStore.integrations.integrations, customOption] })} />
|
|
274
275
|
</ThemeProvider>,
|
|
275
276
|
{ store },
|
|
276
277
|
);
|
|
@@ -282,8 +283,6 @@ describe("IntegrationsField component rendering", () => {
|
|
|
282
283
|
|
|
283
284
|
describe("Events", () => {
|
|
284
285
|
test("should delete a integration", async () => {
|
|
285
|
-
const initialState = { ...defaultProps };
|
|
286
|
-
defaultProps.value = [...initialStore.integrations.integrations];
|
|
287
286
|
const store = mockStore(initialStore);
|
|
288
287
|
const onChange = vi.fn();
|
|
289
288
|
|
|
@@ -299,7 +298,10 @@ describe("Events", () => {
|
|
|
299
298
|
await act(async () => {
|
|
300
299
|
render(
|
|
301
300
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
302
|
-
<IntegrationsField
|
|
301
|
+
<IntegrationsField
|
|
302
|
+
{...makeProps({ value: [...initialStore.integrations.integrations] })}
|
|
303
|
+
onChange={onChange}
|
|
304
|
+
/>
|
|
303
305
|
</ThemeProvider>,
|
|
304
306
|
{ store },
|
|
305
307
|
);
|
|
@@ -321,8 +323,6 @@ describe("Events", () => {
|
|
|
321
323
|
});
|
|
322
324
|
|
|
323
325
|
test("should add an integration", async () => {
|
|
324
|
-
const initialState = { ...defaultProps };
|
|
325
|
-
defaultProps.value = [];
|
|
326
326
|
const store = mockStore(initialStore);
|
|
327
327
|
const onChange = vi.fn();
|
|
328
328
|
|
|
@@ -338,7 +338,7 @@ describe("Events", () => {
|
|
|
338
338
|
await act(async () => {
|
|
339
339
|
render(
|
|
340
340
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
341
|
-
<IntegrationsField {...{
|
|
341
|
+
<IntegrationsField {...makeProps({ value: [] })} onChange={onChange} />
|
|
342
342
|
</ThemeProvider>,
|
|
343
343
|
{ store },
|
|
344
344
|
);
|
|
@@ -356,8 +356,6 @@ describe("Events", () => {
|
|
|
356
356
|
});
|
|
357
357
|
|
|
358
358
|
test("should add an custom code integration", async () => {
|
|
359
|
-
const initialState = { ...defaultProps };
|
|
360
|
-
defaultProps.value = [];
|
|
361
359
|
const store = mockStore(initialStore);
|
|
362
360
|
const onChange = vi.fn();
|
|
363
361
|
|
|
@@ -373,7 +371,7 @@ describe("Events", () => {
|
|
|
373
371
|
await act(async () => {
|
|
374
372
|
render(
|
|
375
373
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
376
|
-
<IntegrationsField {...{
|
|
374
|
+
<IntegrationsField {...makeProps({ value: [] })} onChange={onChange} />
|
|
377
375
|
</ThemeProvider>,
|
|
378
376
|
{ store },
|
|
379
377
|
);
|
|
@@ -398,10 +396,11 @@ describe("Events", () => {
|
|
|
398
396
|
});
|
|
399
397
|
|
|
400
398
|
test("should paste a custom code integration", async () => {
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
399
|
+
// `{ ...initialStore }` es una copia superficial: `integrations` seguía
|
|
400
|
+
// siendo el mismo objeto, así que escribir `integrationCopy` dentro dejaba
|
|
401
|
+
// el botón de pegar visible en todos los tests posteriores y su
|
|
402
|
+
// `getByTestId("icon-action-component")` encontraba dos botones.
|
|
403
|
+
const integrationCopy = {
|
|
405
404
|
date: new Date(),
|
|
406
405
|
integration: {
|
|
407
406
|
id: 29,
|
|
@@ -418,7 +417,10 @@ describe("Events", () => {
|
|
|
418
417
|
active: true,
|
|
419
418
|
},
|
|
420
419
|
};
|
|
421
|
-
const store = mockStore(
|
|
420
|
+
const store = mockStore({
|
|
421
|
+
...initialStore,
|
|
422
|
+
integrations: { ...initialStore.integrations, integrationCopy },
|
|
423
|
+
});
|
|
422
424
|
const onChange = vi.fn();
|
|
423
425
|
|
|
424
426
|
const data = {
|
|
@@ -434,7 +436,7 @@ describe("Events", () => {
|
|
|
434
436
|
render(
|
|
435
437
|
<Router history={history}>
|
|
436
438
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
437
|
-
<IntegrationsField {...{
|
|
439
|
+
<IntegrationsField {...makeProps({ value: [] })} onChange={onChange} />
|
|
438
440
|
</ThemeProvider>
|
|
439
441
|
</Router>,
|
|
440
442
|
{ store },
|
|
@@ -444,6 +446,6 @@ describe("Events", () => {
|
|
|
444
446
|
const iconActionComponents = screen.getAllByTestId("icon-action-component");
|
|
445
447
|
fireEvent.click(iconActionComponents[0]);
|
|
446
448
|
|
|
447
|
-
expect(onChange).toHaveBeenLastCalledWith([
|
|
449
|
+
expect(onChange).toHaveBeenLastCalledWith([integrationCopy.integration]);
|
|
448
450
|
});
|
|
449
451
|
});
|
|
@@ -8,14 +8,17 @@ import { mock } from "vitest-mock-extended";
|
|
|
8
8
|
|
|
9
9
|
afterEach(cleanup);
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
// `value` se construye por test: el último escribía `value.title` sobre el
|
|
12
|
+
// objeto compartido, así que "should not render title" fallaba en cuanto se
|
|
13
|
+
// ejecutaba después de él.
|
|
14
|
+
const makeProps = (value: INoteFieldProps["value"] = { text: "This is the text" }): INoteFieldProps =>
|
|
15
|
+
Object.assign(mock<INoteFieldProps>(), { value });
|
|
13
16
|
|
|
14
17
|
describe("NoteField component rendering", () => {
|
|
15
18
|
it("should render the component", () => {
|
|
16
19
|
render(
|
|
17
20
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
18
|
-
<NoteField {...
|
|
21
|
+
<NoteField {...makeProps()} />
|
|
19
22
|
</ThemeProvider>,
|
|
20
23
|
);
|
|
21
24
|
|
|
@@ -27,7 +30,7 @@ describe("NoteField component rendering", () => {
|
|
|
27
30
|
it("should render text value", () => {
|
|
28
31
|
render(
|
|
29
32
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
30
|
-
<NoteField {...
|
|
33
|
+
<NoteField {...makeProps()} />
|
|
31
34
|
</ThemeProvider>,
|
|
32
35
|
);
|
|
33
36
|
|
|
@@ -37,7 +40,7 @@ describe("NoteField component rendering", () => {
|
|
|
37
40
|
it("should not render title", () => {
|
|
38
41
|
render(
|
|
39
42
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
40
|
-
<NoteField {...
|
|
43
|
+
<NoteField {...makeProps()} />
|
|
41
44
|
</ThemeProvider>,
|
|
42
45
|
);
|
|
43
46
|
|
|
@@ -47,11 +50,9 @@ describe("NoteField component rendering", () => {
|
|
|
47
50
|
});
|
|
48
51
|
|
|
49
52
|
it("should render title", () => {
|
|
50
|
-
defaultProps.value.title = "Super title";
|
|
51
|
-
|
|
52
53
|
render(
|
|
53
54
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
54
|
-
<NoteField {...
|
|
55
|
+
<NoteField {...makeProps({ text: "This is the text", title: "Super title" })} />
|
|
55
56
|
</ThemeProvider>,
|
|
56
57
|
);
|
|
57
58
|
|
|
@@ -9,14 +9,15 @@ import userEvent from "@testing-library/user-event";
|
|
|
9
9
|
|
|
10
10
|
afterEach(cleanup);
|
|
11
11
|
|
|
12
|
-
const
|
|
12
|
+
const makeProps = (overrides: Partial<INumberFieldProps> = {}): INumberFieldProps =>
|
|
13
|
+
Object.assign(mock<INumberFieldProps>(), overrides);
|
|
13
14
|
const user = userEvent.setup();
|
|
14
15
|
|
|
15
16
|
describe("NumberField component rendering", () => {
|
|
16
17
|
it("should render the component", () => {
|
|
17
18
|
render(
|
|
18
19
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
19
|
-
<NumberField {...
|
|
20
|
+
<NumberField {...makeProps()} />
|
|
20
21
|
</ThemeProvider>,
|
|
21
22
|
);
|
|
22
23
|
|
|
@@ -32,7 +33,7 @@ describe("onClick events", () => {
|
|
|
32
33
|
|
|
33
34
|
render(
|
|
34
35
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
35
|
-
<NumberField {...
|
|
36
|
+
<NumberField {...makeProps()} onChange={onChange} />
|
|
36
37
|
</ThemeProvider>,
|
|
37
38
|
);
|
|
38
39
|
|
|
@@ -42,13 +43,11 @@ describe("onClick events", () => {
|
|
|
42
43
|
});
|
|
43
44
|
|
|
44
45
|
it("should call onChange when clicking arrow down", () => {
|
|
45
|
-
defaultProps.value = 2;
|
|
46
|
-
defaultProps.min = 1;
|
|
47
46
|
const onChange = vi.fn();
|
|
48
47
|
|
|
49
48
|
render(
|
|
50
49
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
51
|
-
<NumberField {...
|
|
50
|
+
<NumberField {...makeProps({ value: 2, min: 1 })} onChange={onChange} />
|
|
52
51
|
</ThemeProvider>,
|
|
53
52
|
);
|
|
54
53
|
|
|
@@ -67,7 +66,7 @@ describe("onBlur events", () => {
|
|
|
67
66
|
|
|
68
67
|
render(
|
|
69
68
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
70
|
-
<NumberField {...
|
|
69
|
+
<NumberField {...makeProps()} handleValidation={handleValidation} onBlur={onBlur} />
|
|
71
70
|
</ThemeProvider>,
|
|
72
71
|
);
|
|
73
72
|
|
|
@@ -79,14 +78,12 @@ describe("onBlur events", () => {
|
|
|
79
78
|
|
|
80
79
|
describe("onChange events", () => {
|
|
81
80
|
it("should call onChange on change", () => {
|
|
82
|
-
defaultProps.max = 7;
|
|
83
|
-
defaultProps.error = true;
|
|
84
81
|
const onChange = vi.fn();
|
|
85
82
|
const handleValidation = vi.fn();
|
|
86
83
|
|
|
87
84
|
render(
|
|
88
85
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
89
|
-
<NumberField {...
|
|
86
|
+
<NumberField {...makeProps({ max: 7, error: true })} onChange={onChange} handleValidation={handleValidation} />
|
|
90
87
|
</ThemeProvider>,
|
|
91
88
|
);
|
|
92
89
|
|
|
@@ -97,12 +94,11 @@ describe("onChange events", () => {
|
|
|
97
94
|
});
|
|
98
95
|
|
|
99
96
|
it("should call onChange with undefined", async () => {
|
|
100
|
-
defaultProps.value = undefined;
|
|
101
97
|
const onChange = vi.fn();
|
|
102
98
|
|
|
103
99
|
render(
|
|
104
100
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
105
|
-
<NumberField {...
|
|
101
|
+
<NumberField {...makeProps({ value: undefined })} onChange={onChange} />
|
|
106
102
|
</ThemeProvider>,
|
|
107
103
|
);
|
|
108
104
|
|
|
@@ -26,6 +26,12 @@ describe("TextArea component rendering", () => {
|
|
|
26
26
|
});
|
|
27
27
|
|
|
28
28
|
describe("TextArea events", () => {
|
|
29
|
+
// Solo un test falsea los timers, pero restaurarlos en un hook evita que se
|
|
30
|
+
// queden falsos para el resto del describe si una aserción falla antes.
|
|
31
|
+
afterEach(() => {
|
|
32
|
+
vi.useRealTimers();
|
|
33
|
+
});
|
|
34
|
+
|
|
29
35
|
// Asserts the observable contract instead of spying on React.useState: an ESM
|
|
30
36
|
// namespace is immutable, so `vi.spyOn(React, ...)` no longer intercepts the
|
|
31
37
|
// hook the component imported. onChange is debounced by 300ms.
|
|
@@ -44,8 +50,6 @@ describe("TextArea events", () => {
|
|
|
44
50
|
fireEvent.change(textAreaComponent, { target: { value: "test" } });
|
|
45
51
|
vi.advanceTimersByTime(300);
|
|
46
52
|
expect(onChange).toHaveBeenCalledWith("test");
|
|
47
|
-
|
|
48
|
-
vi.useRealTimers();
|
|
49
53
|
});
|
|
50
54
|
|
|
51
55
|
test("should call the onBlur", () => {
|
|
@@ -10,13 +10,14 @@ import globalTheme from "@ax/themes/theme.json";
|
|
|
10
10
|
|
|
11
11
|
afterEach(cleanup);
|
|
12
12
|
|
|
13
|
-
const
|
|
13
|
+
const makeProps = (overrides: Partial<IToggleFieldProps> = {}): IToggleFieldProps =>
|
|
14
|
+
Object.assign(mock<IToggleFieldProps>(), overrides);
|
|
14
15
|
|
|
15
16
|
describe("ToggleField component rendering", () => {
|
|
16
17
|
it("should render the component", () => {
|
|
17
18
|
render(
|
|
18
19
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
19
|
-
<ToggleField {...
|
|
20
|
+
<ToggleField {...makeProps()} />
|
|
20
21
|
</ThemeProvider>,
|
|
21
22
|
);
|
|
22
23
|
|
|
@@ -29,11 +30,9 @@ describe("ToggleField component rendering", () => {
|
|
|
29
30
|
});
|
|
30
31
|
|
|
31
32
|
it("should render input as checked", () => {
|
|
32
|
-
defaultProps.value = true;
|
|
33
|
-
|
|
34
33
|
render(
|
|
35
34
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
36
|
-
<ToggleField {...
|
|
35
|
+
<ToggleField {...makeProps({ value: true })} />
|
|
37
36
|
</ThemeProvider>,
|
|
38
37
|
);
|
|
39
38
|
|
|
@@ -42,11 +41,9 @@ describe("ToggleField component rendering", () => {
|
|
|
42
41
|
});
|
|
43
42
|
|
|
44
43
|
it("should render input as disabled", () => {
|
|
45
|
-
defaultProps.disabled = true;
|
|
46
|
-
|
|
47
44
|
render(
|
|
48
45
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
49
|
-
<ToggleField {...
|
|
46
|
+
<ToggleField {...makeProps({ disabled: true })} />
|
|
50
47
|
</ThemeProvider>,
|
|
51
48
|
);
|
|
52
49
|
|
|
@@ -55,11 +52,9 @@ describe("ToggleField component rendering", () => {
|
|
|
55
52
|
});
|
|
56
53
|
|
|
57
54
|
it("should render input with name", () => {
|
|
58
|
-
defaultProps.name = "This is the name";
|
|
59
|
-
|
|
60
55
|
render(
|
|
61
56
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
62
|
-
<ToggleField {...
|
|
57
|
+
<ToggleField {...makeProps({ name: "This is the name" })} />
|
|
63
58
|
</ThemeProvider>,
|
|
64
59
|
);
|
|
65
60
|
|
|
@@ -68,11 +63,9 @@ describe("ToggleField component rendering", () => {
|
|
|
68
63
|
});
|
|
69
64
|
|
|
70
65
|
it("should render the auxText", () => {
|
|
71
|
-
defaultProps.auxText = "This is the new text";
|
|
72
|
-
|
|
73
66
|
render(
|
|
74
67
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
75
|
-
<ToggleField {...
|
|
68
|
+
<ToggleField {...makeProps({ auxText: "This is the new text" })} />
|
|
76
69
|
</ThemeProvider>,
|
|
77
70
|
);
|
|
78
71
|
|
|
@@ -81,11 +74,9 @@ describe("ToggleField component rendering", () => {
|
|
|
81
74
|
});
|
|
82
75
|
|
|
83
76
|
it("should render with the background", () => {
|
|
84
|
-
defaultProps.background = true;
|
|
85
|
-
|
|
86
77
|
render(
|
|
87
78
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
88
|
-
<ToggleField {...
|
|
79
|
+
<ToggleField {...makeProps({ background: true })} />
|
|
89
80
|
</ThemeProvider>,
|
|
90
81
|
);
|
|
91
82
|
|
|
@@ -98,29 +89,30 @@ describe("ToggleField component rendering", () => {
|
|
|
98
89
|
|
|
99
90
|
describe("onClick events", () => {
|
|
100
91
|
it("should call onChange function with value true", () => {
|
|
101
|
-
|
|
102
|
-
defaultProps.onChange = vi.fn();
|
|
92
|
+
const onChange = vi.fn();
|
|
103
93
|
|
|
104
94
|
render(
|
|
105
95
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
106
|
-
<ToggleField {...
|
|
96
|
+
<ToggleField {...makeProps({ value: false, onChange })} />
|
|
107
97
|
</ThemeProvider>,
|
|
108
98
|
);
|
|
109
99
|
|
|
110
100
|
const toggleFieldInput = screen.getByTestId("toggle-field-input");
|
|
111
101
|
fireEvent.click(toggleFieldInput);
|
|
112
|
-
expect(
|
|
102
|
+
expect(onChange).toHaveBeenCalledWith(true);
|
|
113
103
|
});
|
|
114
104
|
|
|
115
105
|
it("should not call onChange function", () => {
|
|
106
|
+
const onChange = vi.fn();
|
|
107
|
+
|
|
116
108
|
render(
|
|
117
109
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
118
|
-
<ToggleField {...
|
|
110
|
+
<ToggleField {...makeProps({ onChange })} onChange={undefined} />
|
|
119
111
|
</ThemeProvider>,
|
|
120
112
|
);
|
|
121
113
|
|
|
122
114
|
const toggleFieldInput = screen.getByTestId("toggle-field-input");
|
|
123
115
|
fireEvent.click(toggleFieldInput);
|
|
124
|
-
expect(
|
|
116
|
+
expect(onChange).not.toHaveBeenCalled();
|
|
125
117
|
});
|
|
126
118
|
});
|
|
@@ -45,8 +45,15 @@ describe("Tooltip component rendering", () => {
|
|
|
45
45
|
});
|
|
46
46
|
|
|
47
47
|
describe("Tooltip events triggering", () => {
|
|
48
|
-
|
|
48
|
+
beforeEach(() => {
|
|
49
49
|
vi.useFakeTimers();
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
afterEach(() => {
|
|
53
|
+
vi.useRealTimers();
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it("should render the component and Tip Component is still visible when doing click", () => {
|
|
50
57
|
defaultProps.content = "content";
|
|
51
58
|
defaultProps.children = <Icon name="modified" size="16px" />;
|
|
52
59
|
|
|
@@ -97,7 +104,6 @@ describe("Tooltip events triggering", () => {
|
|
|
97
104
|
});
|
|
98
105
|
|
|
99
106
|
it("should render the component and change visibility of Tip Component when click", () => {
|
|
100
|
-
vi.useFakeTimers();
|
|
101
107
|
defaultProps.content = "content";
|
|
102
108
|
defaultProps.children = <Icon name="modified" size="16px" />;
|
|
103
109
|
|
package/src/__tests__/components/Fields/VisualUniqueSelection/VisualUniqueSelection.test.tsx
CHANGED
|
@@ -10,40 +10,48 @@ import { mock } from "vitest-mock-extended";
|
|
|
10
10
|
|
|
11
11
|
afterEach(cleanup);
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
13
|
+
type Props = IImageSelectionProps & IScrollableSelectionProps;
|
|
14
|
+
|
|
15
|
+
// Props por test: el segundo dejaba `elementUniqueSelection` puesto en el objeto
|
|
16
|
+
// compartido, así que el primero rendrizaba el componente equivocado cuando se
|
|
17
|
+
// ejecutaba después.
|
|
18
|
+
const makeProps = (overrides: Partial<Props> = {}): Props =>
|
|
19
|
+
Object.assign(
|
|
20
|
+
mock<Props>(),
|
|
21
|
+
{
|
|
22
|
+
theme: "default-theme",
|
|
23
|
+
options: [
|
|
24
|
+
{
|
|
25
|
+
value: "primary",
|
|
26
|
+
img: "https://res.cloudinary.com/thesaurus-cms/image/upload/griddo-components/themes/primaryStyle",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
value: "secondary",
|
|
30
|
+
img: "https://res.cloudinary.com/thesaurus-cms/image/upload/griddo-components/themes/secondaryStyle",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
value: "link",
|
|
34
|
+
img: "https://res.cloudinary.com/thesaurus-cms/image/upload/griddo-components/themes/linkStyle",
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
overrides,
|
|
39
|
+
);
|
|
29
40
|
|
|
30
41
|
describe("VisualUniqueSelection component rendering", () => {
|
|
31
42
|
test("should render the component with ImageSelection", () => {
|
|
32
43
|
render(
|
|
33
44
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
34
|
-
<VisualUniqueSelection {...
|
|
45
|
+
<VisualUniqueSelection {...makeProps()} />
|
|
35
46
|
</ThemeProvider>,
|
|
36
47
|
);
|
|
37
48
|
expect(screen.getByTestId("imageSelectionComponent")).toBeTruthy();
|
|
38
49
|
});
|
|
39
50
|
|
|
40
51
|
test("should render the component with ScrollableSelection", () => {
|
|
41
|
-
defaultProps.elementUniqueSelection = true;
|
|
42
|
-
defaultProps.columns = 2;
|
|
43
|
-
|
|
44
52
|
render(
|
|
45
53
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
46
|
-
<VisualUniqueSelection {...
|
|
54
|
+
<VisualUniqueSelection {...makeProps({ elementUniqueSelection: true, columns: 2 })} />
|
|
47
55
|
</ThemeProvider>,
|
|
48
56
|
);
|
|
49
57
|
|