@payloadcms/next 3.19.0 → 3.20.0-canary.0e01b65

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 (135) hide show
  1. package/dist/prod/styles.css +1 -1
  2. package/dist/views/Account/index.d.ts.map +1 -1
  3. package/dist/views/Account/index.js +2 -1
  4. package/dist/views/Account/index.js.map +1 -1
  5. package/dist/views/CreateFirstUser/index.client.d.ts.map +1 -1
  6. package/dist/views/CreateFirstUser/index.client.js +4 -2
  7. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  8. package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
  9. package/dist/views/CreateFirstUser/index.js +2 -1
  10. package/dist/views/CreateFirstUser/index.js.map +1 -1
  11. package/dist/views/Document/getDocumentPermissions.js +2 -2
  12. package/dist/views/Document/getDocumentPermissions.js.map +1 -1
  13. package/dist/views/Document/index.d.ts.map +1 -1
  14. package/dist/views/Document/index.js +2 -1
  15. package/dist/views/Document/index.js.map +1 -1
  16. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
  17. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +2 -0
  18. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  19. package/dist/views/LivePreview/index.client.d.ts.map +1 -1
  20. package/dist/views/LivePreview/index.client.js +5 -2
  21. package/dist/views/LivePreview/index.client.js.map +1 -1
  22. package/dist/views/Version/Default/SelectedLocalesContext.d.ts +8 -0
  23. package/dist/views/Version/Default/SelectedLocalesContext.d.ts.map +1 -0
  24. package/dist/views/Version/Default/SelectedLocalesContext.js +10 -0
  25. package/dist/views/Version/Default/SelectedLocalesContext.js.map +1 -0
  26. package/dist/views/Version/Default/index.d.ts.map +1 -1
  27. package/dist/views/Version/Default/index.js +89 -159
  28. package/dist/views/Version/Default/index.js.map +1 -1
  29. package/dist/views/Version/Default/types.d.ts +4 -4
  30. package/dist/views/Version/Default/types.d.ts.map +1 -1
  31. package/dist/views/Version/Default/types.js.map +1 -1
  32. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.d.ts +27 -0
  33. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.d.ts.map +1 -0
  34. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js +76 -0
  35. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -0
  36. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.scss +46 -0
  37. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.d.ts +6 -0
  38. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.d.ts.map +1 -0
  39. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js +36 -0
  40. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js.map +1 -0
  41. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts +30 -0
  42. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -0
  43. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +300 -0
  44. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -0
  45. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.d.ts +4 -0
  46. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.d.ts.map +1 -0
  47. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +64 -0
  48. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -0
  49. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.d.ts +5 -0
  50. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.d.ts.map +1 -0
  51. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +69 -0
  52. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -0
  53. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.scss +14 -0
  54. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts +3 -4
  55. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts.map +1 -1
  56. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +100 -63
  57. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  58. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.scss +3 -12
  59. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts +2 -4
  60. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts.map +1 -1
  61. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +18 -17
  62. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  63. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.d.ts +4 -0
  64. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.d.ts.map +1 -0
  65. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js +17 -0
  66. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js.map +1 -0
  67. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts +2 -4
  68. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
  69. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +56 -28
  70. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  71. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts +3 -4
  72. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts.map +1 -1
  73. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +146 -42
  74. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  75. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.scss +20 -0
  76. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts +2 -4
  77. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts.map +1 -1
  78. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +71 -37
  79. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  80. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts +2 -22
  81. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts.map +1 -1
  82. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +13 -9
  83. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  84. package/dist/views/Version/RenderFieldsToDiff/index.d.ts +2 -5
  85. package/dist/views/Version/RenderFieldsToDiff/index.d.ts.map +1 -1
  86. package/dist/views/Version/RenderFieldsToDiff/index.js +8 -113
  87. package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
  88. package/dist/views/Version/RenderFieldsToDiff/types.d.ts +2 -20
  89. package/dist/views/Version/RenderFieldsToDiff/types.d.ts.map +1 -1
  90. package/dist/views/Version/RenderFieldsToDiff/types.js.map +1 -1
  91. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts +21 -0
  92. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts.map +1 -0
  93. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +194 -0
  94. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -0
  95. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js +860 -0
  96. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js.map +1 -0
  97. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.d.ts +2 -0
  98. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.d.ts.map +1 -0
  99. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.js +4 -0
  100. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.js.map +1 -0
  101. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js +46 -0
  102. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js.map +1 -0
  103. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldPathsModified.d.ts +27 -0
  104. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldPathsModified.d.ts.map +1 -0
  105. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldPathsModified.js +30 -0
  106. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldPathsModified.js.map +1 -0
  107. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts +18 -0
  108. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts.map +1 -0
  109. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js +44 -0
  110. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js.map +1 -0
  111. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js +122 -0
  112. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js.map +1 -0
  113. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  114. package/dist/views/Version/Restore/index.js +2 -2
  115. package/dist/views/Version/Restore/index.js.map +1 -1
  116. package/dist/views/Version/SelectComparison/index.d.ts.map +1 -1
  117. package/dist/views/Version/SelectComparison/index.js +7 -3
  118. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  119. package/dist/views/Version/index.d.ts.map +1 -1
  120. package/dist/views/Version/index.js +117 -15
  121. package/dist/views/Version/index.js.map +1 -1
  122. package/dist/views/Versions/getLatestVersion.d.ts +4 -1
  123. package/dist/views/Versions/getLatestVersion.d.ts.map +1 -1
  124. package/dist/views/Versions/getLatestVersion.js +6 -0
  125. package/dist/views/Versions/getLatestVersion.js.map +1 -1
  126. package/package.json +8 -8
  127. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.d.ts +0 -6
  128. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.d.ts.map +0 -1
  129. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js +0 -43
  130. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js.map +0 -1
  131. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.scss +0 -14
  132. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts +0 -22
  133. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts.map +0 -1
  134. package/dist/views/Version/RenderFieldsToDiff/fields/types.js +0 -2
  135. package/dist/views/Version/RenderFieldsToDiff/fields/types.js.map +0 -1
@@ -0,0 +1,860 @@
1
+ import { countChangedFields, countChangedFieldsInRows } from './countChangedFields.js';
2
+ describe('countChangedFields', () => {
3
+ // locales can be undefined when not configured in payload.config.js
4
+ const locales = undefined;
5
+ it('should return 0 when no fields have changed', () => {
6
+ const fields = [{
7
+ name: 'a',
8
+ type: 'text'
9
+ }, {
10
+ name: 'b',
11
+ type: 'number'
12
+ }];
13
+ const comparison = {
14
+ a: 'original',
15
+ b: 123
16
+ };
17
+ const version = {
18
+ a: 'original',
19
+ b: 123
20
+ };
21
+ const result = countChangedFields({
22
+ comparison,
23
+ fields,
24
+ version,
25
+ locales
26
+ });
27
+ expect(result).toBe(0);
28
+ });
29
+ it('should count simple changed fields', () => {
30
+ const fields = [{
31
+ name: 'a',
32
+ type: 'text'
33
+ }, {
34
+ name: 'b',
35
+ type: 'number'
36
+ }];
37
+ const comparison = {
38
+ a: 'original',
39
+ b: 123
40
+ };
41
+ const version = {
42
+ a: 'changed',
43
+ b: 123
44
+ };
45
+ const result = countChangedFields({
46
+ comparison,
47
+ fields,
48
+ version,
49
+ locales
50
+ });
51
+ expect(result).toBe(1);
52
+ });
53
+ it('should count previously undefined fields', () => {
54
+ const fields = [{
55
+ name: 'a',
56
+ type: 'text'
57
+ }, {
58
+ name: 'b',
59
+ type: 'number'
60
+ }];
61
+ const comparison = {};
62
+ const version = {
63
+ a: 'new',
64
+ b: 123
65
+ };
66
+ const result = countChangedFields({
67
+ comparison,
68
+ fields,
69
+ version,
70
+ locales
71
+ });
72
+ expect(result).toBe(2);
73
+ });
74
+ it('should not count the id field because it is not displayed in the version view', () => {
75
+ const fields = [{
76
+ name: 'id',
77
+ type: 'text'
78
+ }, {
79
+ name: 'a',
80
+ type: 'text'
81
+ }];
82
+ const comparison = {
83
+ id: 'original',
84
+ a: 'original'
85
+ };
86
+ const version = {
87
+ id: 'changed',
88
+ a: 'original'
89
+ };
90
+ const result = countChangedFields({
91
+ comparison,
92
+ fields,
93
+ version,
94
+ locales
95
+ });
96
+ expect(result).toBe(0);
97
+ });
98
+ it('should count changed fields inside collapsible fields', () => {
99
+ const fields = [{
100
+ type: 'collapsible',
101
+ label: 'A collapsible field',
102
+ fields: [{
103
+ name: 'a',
104
+ type: 'text'
105
+ }, {
106
+ name: 'b',
107
+ type: 'text'
108
+ }, {
109
+ name: 'c',
110
+ type: 'text'
111
+ }]
112
+ }];
113
+ const comparison = {
114
+ a: 'original',
115
+ b: 'original',
116
+ c: 'original'
117
+ };
118
+ const version = {
119
+ a: 'changed',
120
+ b: 'changed',
121
+ c: 'original'
122
+ };
123
+ const result = countChangedFields({
124
+ comparison,
125
+ fields,
126
+ version,
127
+ locales
128
+ });
129
+ expect(result).toBe(2);
130
+ });
131
+ it('should count changed fields inside row fields', () => {
132
+ const fields = [{
133
+ type: 'row',
134
+ fields: [{
135
+ name: 'a',
136
+ type: 'text'
137
+ }, {
138
+ name: 'b',
139
+ type: 'text'
140
+ }, {
141
+ name: 'c',
142
+ type: 'text'
143
+ }]
144
+ }];
145
+ const comparison = {
146
+ a: 'original',
147
+ b: 'original',
148
+ c: 'original'
149
+ };
150
+ const version = {
151
+ a: 'changed',
152
+ b: 'changed',
153
+ c: 'original'
154
+ };
155
+ const result = countChangedFields({
156
+ comparison,
157
+ fields,
158
+ version,
159
+ locales
160
+ });
161
+ expect(result).toBe(2);
162
+ });
163
+ it('should count changed fields inside group fields', () => {
164
+ const fields = [{
165
+ type: 'group',
166
+ name: 'group',
167
+ fields: [{
168
+ name: 'a',
169
+ type: 'text'
170
+ }, {
171
+ name: 'b',
172
+ type: 'text'
173
+ }, {
174
+ name: 'c',
175
+ type: 'text'
176
+ }]
177
+ }];
178
+ const comparison = {
179
+ group: {
180
+ a: 'original',
181
+ b: 'original',
182
+ c: 'original'
183
+ }
184
+ };
185
+ const version = {
186
+ group: {
187
+ a: 'changed',
188
+ b: 'changed',
189
+ c: 'original'
190
+ }
191
+ };
192
+ const result = countChangedFields({
193
+ comparison,
194
+ fields,
195
+ version,
196
+ locales
197
+ });
198
+ expect(result).toBe(2);
199
+ });
200
+ it('should count changed fields inside unnamed tabs ', () => {
201
+ const fields = [{
202
+ type: 'tabs',
203
+ tabs: [{
204
+ label: 'Unnamed tab',
205
+ fields: [{
206
+ name: 'a',
207
+ type: 'text'
208
+ }, {
209
+ name: 'b',
210
+ type: 'text'
211
+ }, {
212
+ name: 'c',
213
+ type: 'text'
214
+ }]
215
+ }]
216
+ }];
217
+ const comparison = {
218
+ a: 'original',
219
+ b: 'original',
220
+ c: 'original'
221
+ };
222
+ const version = {
223
+ a: 'changed',
224
+ b: 'changed',
225
+ c: 'original'
226
+ };
227
+ const result = countChangedFields({
228
+ comparison,
229
+ fields,
230
+ version,
231
+ locales
232
+ });
233
+ expect(result).toBe(2);
234
+ });
235
+ it('should count changed fields inside named tabs ', () => {
236
+ const fields = [{
237
+ type: 'tabs',
238
+ tabs: [{
239
+ name: 'namedTab',
240
+ fields: [{
241
+ name: 'a',
242
+ type: 'text'
243
+ }, {
244
+ name: 'b',
245
+ type: 'text'
246
+ }, {
247
+ name: 'c',
248
+ type: 'text'
249
+ }]
250
+ }]
251
+ }];
252
+ const comparison = {
253
+ namedTab: {
254
+ a: 'original',
255
+ b: 'original',
256
+ c: 'original'
257
+ }
258
+ };
259
+ const version = {
260
+ namedTab: {
261
+ a: 'changed',
262
+ b: 'changed',
263
+ c: 'original'
264
+ }
265
+ };
266
+ const result = countChangedFields({
267
+ comparison,
268
+ fields,
269
+ version,
270
+ locales
271
+ });
272
+ expect(result).toBe(2);
273
+ });
274
+ it('should ignore UI fields', () => {
275
+ const fields = [{
276
+ name: 'a',
277
+ type: 'text'
278
+ }, {
279
+ name: 'b',
280
+ type: 'ui',
281
+ admin: {}
282
+ }];
283
+ const comparison = {
284
+ a: 'original',
285
+ b: 'original'
286
+ };
287
+ const version = {
288
+ a: 'original',
289
+ b: 'changed'
290
+ };
291
+ const result = countChangedFields({
292
+ comparison,
293
+ fields,
294
+ version,
295
+ locales
296
+ });
297
+ expect(result).toBe(0);
298
+ });
299
+ it('should count changed fields inside array fields', () => {
300
+ const fields = [{
301
+ name: 'arrayField',
302
+ type: 'array',
303
+ fields: [{
304
+ name: 'a',
305
+ type: 'text'
306
+ }, {
307
+ name: 'b',
308
+ type: 'text'
309
+ }, {
310
+ name: 'c',
311
+ type: 'text'
312
+ }]
313
+ }];
314
+ const comparison = {
315
+ arrayField: [{
316
+ a: 'original',
317
+ b: 'original',
318
+ c: 'original'
319
+ }, {
320
+ a: 'original',
321
+ b: 'original'
322
+ }]
323
+ };
324
+ const version = {
325
+ arrayField: [{
326
+ a: 'changed',
327
+ b: 'changed',
328
+ c: 'original'
329
+ }, {
330
+ a: 'changed',
331
+ b: 'changed',
332
+ c: 'changed'
333
+ }]
334
+ };
335
+ const result = countChangedFields({
336
+ comparison,
337
+ fields,
338
+ version,
339
+ locales
340
+ });
341
+ expect(result).toBe(5);
342
+ });
343
+ it('should count changed fields inside arrays nested inside of collapsibles', () => {
344
+ const fields = [{
345
+ type: 'collapsible',
346
+ label: 'A collapsible field',
347
+ fields: [{
348
+ name: 'arrayField',
349
+ type: 'array',
350
+ fields: [{
351
+ name: 'a',
352
+ type: 'text'
353
+ }, {
354
+ name: 'b',
355
+ type: 'text'
356
+ }, {
357
+ name: 'c',
358
+ type: 'text'
359
+ }]
360
+ }]
361
+ }];
362
+ const comparison = {
363
+ arrayField: [{
364
+ a: 'original',
365
+ b: 'original',
366
+ c: 'original'
367
+ }]
368
+ };
369
+ const version = {
370
+ arrayField: [{
371
+ a: 'changed',
372
+ b: 'changed',
373
+ c: 'original'
374
+ }]
375
+ };
376
+ const result = countChangedFields({
377
+ comparison,
378
+ fields,
379
+ version,
380
+ locales
381
+ });
382
+ expect(result).toBe(2);
383
+ });
384
+ it('should count changed fields inside blocks fields', () => {
385
+ const fields = [{
386
+ name: 'blocks',
387
+ type: 'blocks',
388
+ blocks: [{
389
+ slug: 'blockA',
390
+ fields: [{
391
+ name: 'a',
392
+ type: 'text'
393
+ }, {
394
+ name: 'b',
395
+ type: 'text'
396
+ }, {
397
+ name: 'c',
398
+ type: 'text'
399
+ }]
400
+ }]
401
+ }];
402
+ const comparison = {
403
+ blocks: [{
404
+ blockType: 'blockA',
405
+ a: 'original',
406
+ b: 'original',
407
+ c: 'original'
408
+ }, {
409
+ blockType: 'blockA',
410
+ a: 'original',
411
+ b: 'original'
412
+ }]
413
+ };
414
+ const version = {
415
+ blocks: [{
416
+ blockType: 'blockA',
417
+ a: 'changed',
418
+ b: 'changed',
419
+ c: 'original'
420
+ }, {
421
+ blockType: 'blockA',
422
+ a: 'changed',
423
+ b: 'changed',
424
+ c: 'changed'
425
+ }]
426
+ };
427
+ const result = countChangedFields({
428
+ comparison,
429
+ fields,
430
+ version,
431
+ locales
432
+ });
433
+ expect(result).toBe(5);
434
+ });
435
+ it('should count changed fields between blocks with different slugs', () => {
436
+ const fields = [{
437
+ name: 'blocks',
438
+ type: 'blocks',
439
+ blocks: [{
440
+ slug: 'blockA',
441
+ fields: [{
442
+ name: 'a',
443
+ type: 'text'
444
+ }, {
445
+ name: 'b',
446
+ type: 'text'
447
+ }, {
448
+ name: 'c',
449
+ type: 'text'
450
+ }]
451
+ }, {
452
+ slug: 'blockB',
453
+ fields: [{
454
+ name: 'b',
455
+ type: 'text'
456
+ }, {
457
+ name: 'c',
458
+ type: 'text'
459
+ }, {
460
+ name: 'd',
461
+ type: 'text'
462
+ }]
463
+ }]
464
+ }];
465
+ const comparison = {
466
+ blocks: [{
467
+ blockType: 'blockA',
468
+ a: 'removed',
469
+ b: 'original',
470
+ c: 'original'
471
+ }]
472
+ };
473
+ const version = {
474
+ blocks: [{
475
+ blockType: 'blockB',
476
+ b: 'original',
477
+ c: 'changed',
478
+ d: 'new'
479
+ }]
480
+ };
481
+ const result = countChangedFields({
482
+ comparison,
483
+ fields,
484
+ version,
485
+ locales
486
+ });
487
+ expect(result).toBe(3);
488
+ });
489
+ describe('localized fields', () => {
490
+ const locales = ['en', 'de'];
491
+ it('should count simple localized fields', () => {
492
+ const fields = [{
493
+ name: 'a',
494
+ type: 'text',
495
+ localized: true
496
+ }, {
497
+ name: 'b',
498
+ type: 'text',
499
+ localized: true
500
+ }];
501
+ const comparison = {
502
+ a: {
503
+ en: 'original',
504
+ de: 'original'
505
+ },
506
+ b: {
507
+ en: 'original',
508
+ de: 'original'
509
+ }
510
+ };
511
+ const version = {
512
+ a: {
513
+ en: 'changed',
514
+ de: 'original'
515
+ },
516
+ b: {
517
+ en: 'original',
518
+ de: 'original'
519
+ }
520
+ };
521
+ const result = countChangedFields({
522
+ comparison,
523
+ fields,
524
+ version,
525
+ locales
526
+ });
527
+ expect(result).toBe(1);
528
+ });
529
+ it('should count multiple locales of the same localized field', () => {
530
+ const locales = ['en', 'de'];
531
+ const fields = [{
532
+ name: 'a',
533
+ type: 'text',
534
+ localized: true
535
+ }, {
536
+ name: 'b',
537
+ type: 'text',
538
+ localized: true
539
+ }];
540
+ const comparison = {
541
+ a: {
542
+ en: 'original',
543
+ de: 'original'
544
+ },
545
+ b: {
546
+ en: 'original',
547
+ de: 'original'
548
+ }
549
+ };
550
+ const version = {
551
+ a: {
552
+ en: 'changed',
553
+ de: 'changed'
554
+ },
555
+ b: {
556
+ en: 'original',
557
+ de: 'original'
558
+ }
559
+ };
560
+ const result = countChangedFields({
561
+ comparison,
562
+ fields,
563
+ version,
564
+ locales
565
+ });
566
+ expect(result).toBe(2);
567
+ });
568
+ it('should count changed fields inside localized groups fields', () => {
569
+ const fields = [{
570
+ type: 'group',
571
+ name: 'group',
572
+ localized: true,
573
+ fields: [{
574
+ name: 'a',
575
+ type: 'text'
576
+ }, {
577
+ name: 'b',
578
+ type: 'text'
579
+ }, {
580
+ name: 'c',
581
+ type: 'text'
582
+ }]
583
+ }];
584
+ const comparison = {
585
+ group: {
586
+ en: {
587
+ a: 'original',
588
+ b: 'original',
589
+ c: 'original'
590
+ },
591
+ de: {
592
+ a: 'original',
593
+ b: 'original',
594
+ c: 'original'
595
+ }
596
+ }
597
+ };
598
+ const version = {
599
+ group: {
600
+ en: {
601
+ a: 'changed',
602
+ b: 'changed',
603
+ c: 'original'
604
+ },
605
+ de: {
606
+ a: 'original',
607
+ b: 'changed',
608
+ c: 'original'
609
+ }
610
+ }
611
+ };
612
+ const result = countChangedFields({
613
+ comparison,
614
+ fields,
615
+ version,
616
+ locales
617
+ });
618
+ expect(result).toBe(3);
619
+ });
620
+ it('should count changed fields inside localized tabs', () => {
621
+ const fields = [{
622
+ type: 'tabs',
623
+ tabs: [{
624
+ name: 'tab',
625
+ localized: true,
626
+ fields: [{
627
+ name: 'a',
628
+ type: 'text'
629
+ }, {
630
+ name: 'b',
631
+ type: 'text'
632
+ }, {
633
+ name: 'c',
634
+ type: 'text'
635
+ }]
636
+ }]
637
+ }];
638
+ const comparison = {
639
+ tab: {
640
+ en: {
641
+ a: 'original',
642
+ b: 'original',
643
+ c: 'original'
644
+ },
645
+ de: {
646
+ a: 'original',
647
+ b: 'original',
648
+ c: 'original'
649
+ }
650
+ }
651
+ };
652
+ const version = {
653
+ tab: {
654
+ en: {
655
+ a: 'changed',
656
+ b: 'changed',
657
+ c: 'original'
658
+ },
659
+ de: {
660
+ a: 'original',
661
+ b: 'changed',
662
+ c: 'original'
663
+ }
664
+ }
665
+ };
666
+ const result = countChangedFields({
667
+ comparison,
668
+ fields,
669
+ version,
670
+ locales
671
+ });
672
+ expect(result).toBe(3);
673
+ });
674
+ it('should count changed fields inside localized array fields', () => {
675
+ const fields = [{
676
+ name: 'arrayField',
677
+ type: 'array',
678
+ localized: true,
679
+ fields: [{
680
+ name: 'a',
681
+ type: 'text'
682
+ }, {
683
+ name: 'b',
684
+ type: 'text'
685
+ }, {
686
+ name: 'c',
687
+ type: 'text'
688
+ }]
689
+ }];
690
+ const comparison = {
691
+ arrayField: {
692
+ en: [{
693
+ a: 'original',
694
+ b: 'original',
695
+ c: 'original'
696
+ }],
697
+ de: [{
698
+ a: 'original',
699
+ b: 'original',
700
+ c: 'original'
701
+ }]
702
+ }
703
+ };
704
+ const version = {
705
+ arrayField: {
706
+ en: [{
707
+ a: 'changed',
708
+ b: 'changed',
709
+ c: 'original'
710
+ }],
711
+ de: [{
712
+ a: 'original',
713
+ b: 'changed',
714
+ c: 'original'
715
+ }]
716
+ }
717
+ };
718
+ const result = countChangedFields({
719
+ comparison,
720
+ fields,
721
+ version,
722
+ locales
723
+ });
724
+ expect(result).toBe(3);
725
+ });
726
+ it('should count changed fields inside localized blocks fields', () => {
727
+ const fields = [{
728
+ name: 'blocks',
729
+ type: 'blocks',
730
+ localized: true,
731
+ blocks: [{
732
+ slug: 'blockA',
733
+ fields: [{
734
+ name: 'a',
735
+ type: 'text'
736
+ }, {
737
+ name: 'b',
738
+ type: 'text'
739
+ }, {
740
+ name: 'c',
741
+ type: 'text'
742
+ }]
743
+ }]
744
+ }];
745
+ const comparison = {
746
+ blocks: {
747
+ en: [{
748
+ blockType: 'blockA',
749
+ a: 'original',
750
+ b: 'original',
751
+ c: 'original'
752
+ }],
753
+ de: [{
754
+ blockType: 'blockA',
755
+ a: 'original',
756
+ b: 'original',
757
+ c: 'original'
758
+ }]
759
+ }
760
+ };
761
+ const version = {
762
+ blocks: {
763
+ en: [{
764
+ blockType: 'blockA',
765
+ a: 'changed',
766
+ b: 'changed',
767
+ c: 'original'
768
+ }],
769
+ de: [{
770
+ blockType: 'blockA',
771
+ a: 'original',
772
+ b: 'changed',
773
+ c: 'original'
774
+ }]
775
+ }
776
+ };
777
+ const result = countChangedFields({
778
+ comparison,
779
+ fields,
780
+ version,
781
+ locales
782
+ });
783
+ expect(result).toBe(3);
784
+ });
785
+ });
786
+ });
787
+ describe('countChangedFieldsInRows', () => {
788
+ it('should count fields in array rows', () => {
789
+ const field = {
790
+ name: 'myArray',
791
+ type: 'array',
792
+ fields: [{
793
+ name: 'a',
794
+ type: 'text'
795
+ }, {
796
+ name: 'b',
797
+ type: 'text'
798
+ }, {
799
+ name: 'c',
800
+ type: 'text'
801
+ }]
802
+ };
803
+ const comparisonRows = [{
804
+ a: 'original',
805
+ b: 'original',
806
+ c: 'original'
807
+ }];
808
+ const versionRows = [{
809
+ a: 'changed',
810
+ b: 'changed',
811
+ c: 'original'
812
+ }];
813
+ const result = countChangedFieldsInRows({
814
+ comparisonRows,
815
+ field,
816
+ locales: undefined,
817
+ versionRows
818
+ });
819
+ expect(result).toBe(2);
820
+ });
821
+ it('should count fields in blocks', () => {
822
+ const field = {
823
+ name: 'myBlocks',
824
+ type: 'blocks',
825
+ blocks: [{
826
+ slug: 'blockA',
827
+ fields: [{
828
+ name: 'a',
829
+ type: 'text'
830
+ }, {
831
+ name: 'b',
832
+ type: 'text'
833
+ }, {
834
+ name: 'c',
835
+ type: 'text'
836
+ }]
837
+ }]
838
+ };
839
+ const comparisonRows = [{
840
+ blockType: 'blockA',
841
+ a: 'original',
842
+ b: 'original',
843
+ c: 'original'
844
+ }];
845
+ const versionRows = [{
846
+ blockType: 'blockA',
847
+ a: 'changed',
848
+ b: 'changed',
849
+ c: 'original'
850
+ }];
851
+ const result = countChangedFieldsInRows({
852
+ comparisonRows,
853
+ field,
854
+ locales: undefined,
855
+ versionRows
856
+ });
857
+ expect(result).toBe(2);
858
+ });
859
+ });
860
+ //# sourceMappingURL=countChangedFields.spec.js.map