@centreon/ui 24.4.36 → 24.4.37

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 (64) hide show
  1. package/package.json +1 -1
  2. package/src/Button/Icon/index.stories.tsx +1 -1
  3. package/src/Button/Icon/index.tsx +1 -1
  4. package/src/InputField/Select/IconPopover/index.tsx +1 -1
  5. package/src/Listing/ActionBar/index.tsx +1 -2
  6. package/src/Panel/index.tsx +1 -1
  7. package/src/components/Form/{AccessRightsV2 → AccessRights}/AccessRights.cypress.spec.tsx +23 -0
  8. package/src/components/Form/{AccessRightsV2 → AccessRights}/ShareInput/ContactSwitch.tsx +9 -1
  9. package/src/components/Form/{AccessRightsV2 → AccessRights}/ShareInput/ShareInput.styles.ts +8 -0
  10. package/src/components/Form/{AccessRightsV2 → AccessRights}/ShareInput/useShareInput.tsx +4 -0
  11. package/src/components/Form/{AccessRightsV2 → AccessRights}/models.ts +1 -0
  12. package/src/components/Form/{AccessRightsV2 → AccessRights}/storiesData.ts +1 -0
  13. package/src/components/Form/index.ts +2 -2
  14. package/src/components/Form/AccessRights/AccessRights.resource.ts +0 -45
  15. package/src/components/Form/AccessRights/AccessRightsForm.stories.tsx +0 -59
  16. package/src/components/Form/AccessRights/AccessRightsForm.styles.ts +0 -21
  17. package/src/components/Form/AccessRights/AccessRightsForm.tsx +0 -67
  18. package/src/components/Form/AccessRights/AccessRightsFormActions.tsx +0 -80
  19. package/src/components/Form/AccessRights/Input/AddAction.tsx +0 -31
  20. package/src/components/Form/AccessRights/Input/ContactAccessRightInput.stories.tsx +0 -54
  21. package/src/components/Form/AccessRights/Input/ContactAccessRightInput.tsx +0 -72
  22. package/src/components/Form/AccessRights/Input/ContactAccessRightsInput.styles.ts +0 -22
  23. package/src/components/Form/AccessRights/Input/ContactInputField.tsx +0 -105
  24. package/src/components/Form/AccessRights/Input/RoleInputField.tsx +0 -29
  25. package/src/components/Form/AccessRights/List/ContactAccessRightsList.stories.tsx +0 -97
  26. package/src/components/Form/AccessRights/List/ContactAccessRightsList.styles.ts +0 -71
  27. package/src/components/Form/AccessRights/List/ContactAccessRightsList.tsx +0 -51
  28. package/src/components/Form/AccessRights/List/ContactAccessRightsListItem.stories.tsx +0 -116
  29. package/src/components/Form/AccessRights/List/ContactAccessRightsListItem.tsx +0 -118
  30. package/src/components/Form/AccessRights/List/ContactAccessRightsListItemSkeleton.tsx +0 -26
  31. package/src/components/Form/AccessRights/List/ContactAccessRightsListSkeleton.tsx +0 -28
  32. package/src/components/Form/AccessRights/Stats/AccessRightsStats.styles.ts +0 -18
  33. package/src/components/Form/AccessRights/Stats/AccessRightsStats.tsx +0 -41
  34. package/src/components/Form/AccessRights/__fixtures__/contactAccessRight.mock.ts +0 -54
  35. package/src/components/Form/AccessRights/common/GroupLabel.styles.ts +0 -18
  36. package/src/components/Form/AccessRights/common/GroupLabel.tsx +0 -15
  37. package/src/components/Form/AccessRights/common/Input.styles.ts +0 -48
  38. package/src/components/Form/AccessRights/common/RoleInputSelect.styles.ts +0 -11
  39. package/src/components/Form/AccessRights/common/RoleInputSelect.tsx +0 -57
  40. package/src/components/Form/AccessRights/index.ts +0 -3
  41. package/src/components/Form/AccessRights/useAccessRightsForm.test.tsx +0 -531
  42. package/src/components/Form/AccessRights/useAccessRightsForm.tsx +0 -282
  43. package/src/components/Form/AccessRights/useAccessRightsForm.utils.ts +0 -41
  44. /package/src/components/Form/{AccessRightsV2 → AccessRights}/AccessRights.stories.tsx +0 -0
  45. /package/src/components/Form/{AccessRightsV2 → AccessRights}/AccessRights.styles.ts +0 -0
  46. /package/src/components/Form/{AccessRightsV2 → AccessRights}/AccessRights.tsx +0 -0
  47. /package/src/components/Form/{AccessRightsV2 → AccessRights}/Actions/Actions.styles.ts +0 -0
  48. /package/src/components/Form/{AccessRightsV2 → AccessRights}/Actions/Actions.tsx +0 -0
  49. /package/src/components/Form/{AccessRightsV2 → AccessRights}/Actions/useActions.ts +0 -0
  50. /package/src/components/Form/{AccessRightsV2 → AccessRights}/List/Item.tsx +0 -0
  51. /package/src/components/Form/{AccessRightsV2 → AccessRights}/List/List.styles.tsx +0 -0
  52. /package/src/components/Form/{AccessRightsV2 → AccessRights}/List/List.tsx +0 -0
  53. /package/src/components/Form/{AccessRightsV2 → AccessRights}/List/ListItemSkeleton.tsx +0 -0
  54. /package/src/components/Form/{AccessRightsV2 → AccessRights}/List/ListSkeleton.tsx +0 -0
  55. /package/src/components/Form/{AccessRightsV2 → AccessRights}/List/RemoveAccessRight.tsx +0 -0
  56. /package/src/components/Form/{AccessRightsV2 → AccessRights}/List/StateChip.tsx +0 -0
  57. /package/src/components/Form/{AccessRightsV2 → AccessRights}/List/useItem.ts +0 -0
  58. /package/src/components/Form/{AccessRightsV2 → AccessRights}/Provider.tsx +0 -0
  59. /package/src/components/Form/{AccessRightsV2 → AccessRights}/ShareInput/ShareInput.tsx +0 -0
  60. /package/src/components/Form/{AccessRightsV2 → AccessRights}/Stats/Stats.tsx +0 -0
  61. /package/src/components/Form/{AccessRightsV2 → AccessRights}/atoms.ts +0 -0
  62. /package/src/components/Form/{AccessRightsV2 → AccessRights}/common/RoleSelectField.styles.tsx +0 -0
  63. /package/src/components/Form/{AccessRightsV2 → AccessRights}/common/RoleSelectField.tsx +0 -0
  64. /package/src/components/Form/{AccessRightsV2 → AccessRights}/useAccessRightsInitValues.ts +0 -0
@@ -1,531 +0,0 @@
1
- import { ReactElement } from 'react';
2
-
3
- import { renderHook } from '@testing-library/react-hooks';
4
- import { act } from '@testing-library/react';
5
-
6
- import {
7
- AccessRightsFormProvider,
8
- AccessRightsFormProviderProps,
9
- useAccessRightsForm
10
- } from './useAccessRightsForm';
11
- import {
12
- contactAccessRightsMock,
13
- contactsMock,
14
- rolesMock
15
- } from './__fixtures__/contactAccessRight.mock';
16
-
17
- const contextWrapper = (
18
- contextProps: AccessRightsFormProviderProps
19
- ): ReactElement => <AccessRightsFormProvider {...contextProps} />;
20
-
21
- describe('useAccessRightsForm', () => {
22
- const baseContextProps: AccessRightsFormProviderProps = {
23
- children: null,
24
- options: {
25
- contacts: contactsMock(25),
26
- roles: rolesMock()
27
- }
28
- };
29
-
30
- const initialValues: AccessRightsFormProviderProps['initialValues'] =
31
- contactAccessRightsMock(30);
32
-
33
- it('should render the hook', () => {
34
- const contextProps = { ...baseContextProps };
35
-
36
- const { result } = renderHook(() => useAccessRightsForm(), {
37
- initialProps: contextProps,
38
- wrapper: contextWrapper
39
- });
40
-
41
- expect(result.current).toBeDefined();
42
- });
43
-
44
- describe('Provider', () => {
45
- it('should persist the `options`', () => {
46
- const contextProps = { ...baseContextProps };
47
-
48
- const { result } = renderHook(() => useAccessRightsForm(), {
49
- initialProps: contextProps,
50
- wrapper: contextWrapper
51
- });
52
-
53
- expect(result.current.options).toBeDefined();
54
- expect(result.current.options).toEqual(contextProps.options);
55
- });
56
-
57
- it('should persist the `initialValues` as `contactAccessRights`', () => {
58
- const contextProps = { ...baseContextProps, initialValues };
59
-
60
- const { result } = renderHook(() => useAccessRightsForm(), {
61
- initialProps: contextProps,
62
- wrapper: contextWrapper
63
- });
64
-
65
- expect(result.current.contactAccessRights).toBeDefined();
66
- expect(result.current.contactAccessRights).toHaveLength(
67
- initialValues.length
68
- );
69
- initialValues.forEach((initialValue) => {
70
- expect(
71
- result.current.contactAccessRights.find(
72
- ({ contactAccessRight: { contact } }) =>
73
- contact?.id === initialValue.contact?.id
74
- )
75
- ).toBeDefined();
76
- });
77
- });
78
- });
79
-
80
- describe('addContactAccessRight', () => {
81
- it('should add a contact access right', () => {
82
- const contextProps = { ...baseContextProps };
83
-
84
- const { result } = renderHook(() => useAccessRightsForm(), {
85
- initialProps: contextProps,
86
- wrapper: contextWrapper
87
- });
88
-
89
- const contactAccessRight = contactAccessRightsMock(1)[0];
90
- act(() => result.current.addContactAccessRight(contactAccessRight));
91
-
92
- expect(result.current.contactAccessRights).toHaveLength(1);
93
- expect(
94
- result.current.contactAccessRights.find(
95
- ({ contactAccessRight: { contact } }) =>
96
- contact?.id === contactAccessRight.contact?.id
97
- )
98
- ).toBeDefined();
99
- });
100
- it('should not add a contact access right if it already exists', () => {
101
- const contextProps = { ...baseContextProps, initialValues };
102
-
103
- const { result } = renderHook(() => useAccessRightsForm(), {
104
- initialProps: contextProps,
105
- wrapper: contextWrapper
106
- });
107
-
108
- const { contactAccessRight } = result.current.contactAccessRights[0];
109
- act(() => result.current.addContactAccessRight(contactAccessRight));
110
-
111
- expect(result.current.contactAccessRights).toHaveLength(
112
- initialValues.length
113
- );
114
- });
115
- });
116
-
117
- describe('removeContactAccessRight', () => {
118
- it('should remove a contact access right of a pre-existing', () => {
119
- const contextProps = { ...baseContextProps, initialValues };
120
-
121
- const { result } = renderHook(() => useAccessRightsForm(), {
122
- initialProps: contextProps,
123
- wrapper: contextWrapper
124
- });
125
-
126
- const { contactAccessRight } = result.current.contactAccessRights[0];
127
- act(() => result.current.removeContactAccessRight(contactAccessRight));
128
-
129
- expect(result.current.contactAccessRights).toHaveLength(
130
- initialValues.length
131
- );
132
-
133
- expect(
134
- result.current.contactAccessRights.find(
135
- ({ contactAccessRight: { contact }, state }) =>
136
- contact?.id === contactAccessRight.contact?.id &&
137
- state === 'removed'
138
- )
139
- ).toBeDefined();
140
- });
141
- it('should restore a contact access right if it was pre-existing', () => {
142
- const contextProps = { ...baseContextProps, initialValues };
143
-
144
- const { result } = renderHook(() => useAccessRightsForm(), {
145
- initialProps: contextProps,
146
- wrapper: contextWrapper
147
- });
148
-
149
- const { contactAccessRight } = result.current.contactAccessRights[0];
150
- act(() => result.current.removeContactAccessRight(contactAccessRight));
151
- act(() =>
152
- result.current.removeContactAccessRight(contactAccessRight, true)
153
- );
154
-
155
- expect(
156
- result.current.contactAccessRights.find(
157
- ({ contactAccessRight: { contact }, state }) =>
158
- contact?.id === contactAccessRight.contact?.id &&
159
- state === 'unchanged'
160
- )
161
- ).toBeDefined();
162
- });
163
- it('should completely remove a contact access right if it was newly added', () => {
164
- const contextProps = { ...baseContextProps };
165
-
166
- const { result } = renderHook(() => useAccessRightsForm(), {
167
- initialProps: contextProps,
168
- wrapper: contextWrapper
169
- });
170
-
171
- const contactAccessRight = contactAccessRightsMock(1)[0];
172
- act(() => result.current.addContactAccessRight(contactAccessRight));
173
- act(() => result.current.removeContactAccessRight(contactAccessRight));
174
-
175
- expect(result.current.contactAccessRights).toHaveLength(0);
176
- });
177
- it('should restore a contact access right to it previous state', () => {
178
- const contextProps = { ...baseContextProps, initialValues };
179
-
180
- const { result } = renderHook(() => useAccessRightsForm(), {
181
- initialProps: contextProps,
182
- wrapper: contextWrapper
183
- });
184
-
185
- const { contactAccessRight } = result.current.contactAccessRights[0];
186
- const updatedContactAccessRight = {
187
- ...contactAccessRight,
188
- role:
189
- contactAccessRight.role === rolesMock()[0].role
190
- ? rolesMock()[1].role
191
- : rolesMock()[0].role
192
- };
193
-
194
- act(() =>
195
- result.current.updateContactAccessRight(updatedContactAccessRight)
196
- );
197
- act(() =>
198
- result.current.removeContactAccessRight(updatedContactAccessRight)
199
- );
200
- act(() =>
201
- result.current.removeContactAccessRight(updatedContactAccessRight, true)
202
- );
203
-
204
- const updatedContactAccessRightState =
205
- result.current.contactAccessRights.find(
206
- ({ contactAccessRight: { contact } }) =>
207
- contact?.id === updatedContactAccessRight.contact?.id
208
- );
209
-
210
- expect(updatedContactAccessRightState).toBeDefined();
211
- expect(updatedContactAccessRightState?.state).toEqual('updated');
212
- });
213
- });
214
-
215
- describe('updateContactAccessRight', () => {
216
- it('should update a contact access right', () => {
217
- const contextProps = { ...baseContextProps, initialValues };
218
-
219
- const { result } = renderHook(() => useAccessRightsForm(), {
220
- initialProps: contextProps,
221
- wrapper: contextWrapper
222
- });
223
-
224
- const { contactAccessRight } = result.current.contactAccessRights[0];
225
- const updatedContactAccessRight = {
226
- ...contactAccessRight,
227
- role:
228
- contactAccessRight.role === rolesMock()[0].role
229
- ? rolesMock()[1].role
230
- : rolesMock()[0].role
231
- };
232
-
233
- act(() =>
234
- result.current.updateContactAccessRight(updatedContactAccessRight)
235
- );
236
-
237
- const updatedContactAccessRightState =
238
- result.current.contactAccessRights.find(
239
- ({ contactAccessRight: { contact } }) =>
240
- contact?.id === updatedContactAccessRight.contact?.id
241
- );
242
-
243
- expect(updatedContactAccessRightState).toBeDefined();
244
-
245
- expect(updatedContactAccessRightState?.state).toEqual('updated');
246
-
247
- expect(
248
- updatedContactAccessRightState?.contactAccessRight.role ===
249
- updatedContactAccessRight.role
250
- ).toBeTruthy();
251
- });
252
-
253
- it('should update a contact access right to its previous state', () => {
254
- const contextProps = {
255
- ...baseContextProps,
256
- initialValues
257
- };
258
-
259
- const { result } = renderHook(() => useAccessRightsForm(), {
260
- initialProps: contextProps,
261
- wrapper: contextWrapper
262
- });
263
-
264
- const { contactAccessRight } = result.current.contactAccessRights[0];
265
- const updatedContactAccessRight = {
266
- ...contactAccessRight,
267
- role:
268
- contactAccessRight.role === rolesMock()[0].role
269
- ? rolesMock()[1].role
270
- : rolesMock()[0].role
271
- };
272
-
273
- act(() =>
274
- result.current.updateContactAccessRight(updatedContactAccessRight)
275
- );
276
-
277
- updatedContactAccessRight.role =
278
- updatedContactAccessRight.role === rolesMock()[0].role
279
- ? rolesMock()[1].role
280
- : rolesMock()[0].role;
281
-
282
- act(() =>
283
- result.current.updateContactAccessRight(updatedContactAccessRight)
284
- );
285
-
286
- const updatedContactAccessRightState =
287
- result.current.contactAccessRights.find(
288
- ({ contactAccessRight: { contact } }) =>
289
- contact?.id === updatedContactAccessRight.contact?.id
290
- );
291
-
292
- expect(updatedContactAccessRightState).toBeDefined();
293
- expect(updatedContactAccessRightState?.state).toEqual('unchanged');
294
- });
295
-
296
- it('should update a contact access right to `unchanged` state if it is updated to its original value', () => {
297
- const contextProps = { ...baseContextProps, initialValues };
298
-
299
- const { result } = renderHook(() => useAccessRightsForm(), {
300
- initialProps: contextProps,
301
- wrapper: contextWrapper
302
- });
303
-
304
- const { contactAccessRight } = result.current.contactAccessRights[0];
305
- const updatedContactAccessRight = {
306
- ...contactAccessRight,
307
- role:
308
- contactAccessRight.role === rolesMock()[0].role
309
- ? rolesMock()[1].role
310
- : rolesMock()[0].role
311
- };
312
-
313
- act(() =>
314
- result.current.updateContactAccessRight(updatedContactAccessRight)
315
- );
316
- act(() =>
317
- result.current.removeContactAccessRight(updatedContactAccessRight)
318
- );
319
- act(() =>
320
- result.current.removeContactAccessRight(updatedContactAccessRight, true)
321
- );
322
-
323
- updatedContactAccessRight.role =
324
- updatedContactAccessRight.role === rolesMock()[0].role
325
- ? rolesMock()[1].role
326
- : rolesMock()[0].role;
327
-
328
- act(() =>
329
- result.current.updateContactAccessRight(updatedContactAccessRight)
330
- );
331
-
332
- const updatedContactAccessRightState =
333
- result.current.contactAccessRights.find(
334
- ({ contactAccessRight: { contact } }) =>
335
- contact?.id === updatedContactAccessRight.contact?.id
336
- );
337
-
338
- expect(updatedContactAccessRightState).toBeDefined();
339
- expect(updatedContactAccessRightState?.state).toEqual('unchanged');
340
- });
341
-
342
- it('should update a contact access right to `updated` state if it is updated subsequently', () => {
343
- const contextProps = { ...baseContextProps, initialValues };
344
-
345
- const { result } = renderHook(() => useAccessRightsForm(), {
346
- initialProps: contextProps,
347
- wrapper: contextWrapper
348
- });
349
-
350
- const { contactAccessRight } = result.current.contactAccessRights[0];
351
- const updatedContactAccessRight = {
352
- ...contactAccessRight,
353
- role:
354
- contactAccessRight.role === rolesMock()[0].role
355
- ? rolesMock()[1].role
356
- : rolesMock()[0].role
357
- };
358
-
359
- act(() =>
360
- result.current.updateContactAccessRight(updatedContactAccessRight)
361
- );
362
- act(() => result.current.updateContactAccessRight(contactAccessRight));
363
- act(() =>
364
- result.current.updateContactAccessRight(updatedContactAccessRight)
365
- );
366
-
367
- const updatedContactAccessRightState =
368
- result.current.contactAccessRights.find(
369
- ({ contactAccessRight: { contact } }) =>
370
- contact?.id === updatedContactAccessRight.contact?.id
371
- );
372
-
373
- expect(updatedContactAccessRightState).toBeDefined();
374
- expect(updatedContactAccessRightState?.state).toEqual('updated');
375
- });
376
-
377
- it('should keep a new contact access right in `added` state if it is updated', () => {
378
- const contextProps = { ...baseContextProps };
379
-
380
- const { result } = renderHook(() => useAccessRightsForm(), {
381
- initialProps: contextProps,
382
- wrapper: contextWrapper
383
- });
384
-
385
- const contactAccessRight = contactAccessRightsMock(1)[0];
386
- act(() => result.current.addContactAccessRight(contactAccessRight));
387
-
388
- const updatedContactAccessRight = {
389
- ...contactAccessRight,
390
- role:
391
- contactAccessRight.role === rolesMock()[0].role
392
- ? rolesMock()[1].role
393
- : rolesMock()[0].role
394
- };
395
-
396
- act(() =>
397
- result.current.updateContactAccessRight(updatedContactAccessRight)
398
- );
399
-
400
- const updatedContactAccessRightState =
401
- result.current.contactAccessRights.find(
402
- ({ contactAccessRight: { contact } }) =>
403
- contact?.id === updatedContactAccessRight.contact?.id
404
- );
405
-
406
- expect(updatedContactAccessRightState).toBeDefined();
407
- expect(updatedContactAccessRightState?.state).toEqual('added');
408
- });
409
- });
410
-
411
- describe('onSubmit', () => {
412
- it('should call the `onSubmit` callback with the correct payload', () => {
413
- const contextProps = { ...baseContextProps, initialValues };
414
- const onSubmit = jest.fn();
415
-
416
- const { result } = renderHook(() => useAccessRightsForm(), {
417
- initialProps: { ...contextProps, onSubmit },
418
- wrapper: contextWrapper
419
- });
420
-
421
- act(() => result.current.submit());
422
-
423
- expect(onSubmit).toHaveBeenCalledWith(result.current.contactAccessRights);
424
- });
425
- });
426
-
427
- describe('state', () => {
428
- it('should have `isDirty` flag set on changes', () => {
429
- const contextProps = { ...baseContextProps, initialValues };
430
-
431
- const { result } = renderHook(() => useAccessRightsForm(), {
432
- initialProps: contextProps,
433
- wrapper: contextWrapper
434
- });
435
-
436
- const { contactAccessRight } = result.current.contactAccessRights[0];
437
- const updatedContactAccessRight = {
438
- ...contactAccessRight,
439
- role:
440
- contactAccessRight.role === rolesMock()[0].role
441
- ? rolesMock()[1].role
442
- : rolesMock()[0].role
443
- };
444
-
445
- expect(result.current.isDirty).toBeFalsy();
446
-
447
- act(() =>
448
- result.current.updateContactAccessRight(updatedContactAccessRight)
449
- );
450
-
451
- expect(result.current.isDirty).toBeTruthy();
452
- });
453
-
454
- it('should have `isDirty` flag cleared on reverted changes', () => {
455
- const contextProps = { ...baseContextProps, initialValues };
456
-
457
- const { result } = renderHook(() => useAccessRightsForm(), {
458
- initialProps: contextProps,
459
- wrapper: contextWrapper
460
- });
461
-
462
- const { contactAccessRight } = result.current.contactAccessRights[0];
463
- act(() => result.current.removeContactAccessRight(contactAccessRight));
464
- act(() =>
465
- result.current.removeContactAccessRight(contactAccessRight, true)
466
- );
467
-
468
- expect(result.current.isDirty).toBeFalsy();
469
- });
470
-
471
- it('should have stats updated on changes', () => {
472
- const contextProps = { ...baseContextProps, initialValues };
473
-
474
- const { result } = renderHook(() => useAccessRightsForm(), {
475
- initialProps: contextProps,
476
- wrapper: contextWrapper
477
- });
478
-
479
- expect(result.current.stats).toEqual({
480
- added: 0,
481
- removed: 0,
482
- updated: 0
483
- });
484
-
485
- // update contact access right
486
- const { contactAccessRight: contactAccessRightToUpdate } =
487
- result.current.contactAccessRights[1];
488
- const updatedContactAccessRight = {
489
- ...contactAccessRightToUpdate,
490
- role:
491
- contactAccessRightToUpdate.role === rolesMock()[0].role
492
- ? rolesMock()[1].role
493
- : rolesMock()[0].role
494
- };
495
-
496
- act(() =>
497
- result.current.updateContactAccessRight(updatedContactAccessRight)
498
- );
499
-
500
- expect(result.current.stats).toEqual({
501
- added: 0,
502
- removed: 0,
503
- updated: 1
504
- });
505
-
506
- // remove contact access right
507
- const { contactAccessRight: contactAccessRightToRemove } =
508
- result.current.contactAccessRights[2];
509
-
510
- act(() =>
511
- result.current.removeContactAccessRight(contactAccessRightToRemove)
512
- );
513
-
514
- expect(result.current.stats).toEqual({
515
- added: 0,
516
- removed: 1,
517
- updated: 1
518
- });
519
-
520
- // add contact access right
521
- const contactAccessRight = contactAccessRightsMock(1)[0];
522
- act(() => result.current.addContactAccessRight(contactAccessRight));
523
-
524
- expect(result.current.stats).toEqual({
525
- added: 1,
526
- removed: 1,
527
- updated: 1
528
- });
529
- });
530
- });
531
- });