@contentful/field-editor-shared 4.4.0 → 4.4.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.
@@ -6,6 +6,7 @@ const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
6
6
  const _fieldeditortestutils = require("@contentful/field-editor-test-utils");
7
7
  const _react1 = require("@testing-library/react");
8
8
  const _noop = /*#__PURE__*/ _interop_require_default(require("lodash/noop"));
9
+ const _vitest = require("vitest");
9
10
  const _FieldConnector = require("./FieldConnector");
10
11
  function _interop_require_default(obj) {
11
12
  return obj && obj.__esModule ? obj : {
@@ -56,8 +57,8 @@ function _interop_require_wildcard(obj, nodeInterop) {
56
57
  function getChild(children) {
57
58
  return children.mock.calls[children.mock.calls.length - 1][0];
58
59
  }
59
- it('does not rerender with outdated value after calling setValue', async ()=>{
60
- const onSchemaErrorsChanged = jest.fn();
60
+ (0, _vitest.it)('does not rerender with outdated value after calling setValue', async ()=>{
61
+ const onSchemaErrorsChanged = _vitest.vi.fn();
61
62
  const [field] = (0, _fieldeditortestutils.createFakeFieldAPI)((field)=>{
62
63
  return {
63
64
  ...field,
@@ -67,41 +68,41 @@ it('does not rerender with outdated value after calling setValue', async ()=>{
67
68
  }, 'initial value');
68
69
  const props = {
69
70
  isInitiallyDisabled: false,
70
- children: jest.fn().mockImplementation(()=>null),
71
+ children: _vitest.vi.fn().mockImplementation(()=>null),
71
72
  field,
72
73
  debounce: 0
73
74
  };
74
75
  (0, _react1.render)(/*#__PURE__*/ _react.createElement(_FieldConnector.FieldConnector, props));
75
76
  let child = getChild(props.children);
76
- expect(child.value).toBe('initial value');
77
+ (0, _vitest.expect)(child.value).toBe('initial value');
77
78
  const initialRenderCount = props.children.mock.calls.length;
78
79
  await (0, _react1.act)(async ()=>{
79
80
  child.setValue('new value');
80
81
  });
81
82
  onSchemaErrorsChanged.mock.calls.forEach(([cb])=>cb([]));
82
83
  child = getChild(props.children);
83
- expect(child.value).toBe('new value');
84
- expect(props.children.mock.calls.length).toBeGreaterThan(initialRenderCount);
84
+ (0, _vitest.expect)(child.value).toBe('new value');
85
+ (0, _vitest.expect)(props.children.mock.calls.length).toBeGreaterThan(initialRenderCount);
85
86
  });
86
- it('takes initial disable state from sdk.field', ()=>{
87
+ (0, _vitest.it)('takes initial disable state from sdk.field', ()=>{
87
88
  const [field] = (0, _fieldeditortestutils.createFakeFieldAPI)((field)=>{
88
89
  return {
89
90
  ...field,
90
- getIsDisabled: jest.fn().mockReturnValue(true)
91
+ getIsDisabled: _vitest.vi.fn().mockReturnValue(true)
91
92
  };
92
93
  }, 'initial value');
93
94
  const props = {
94
95
  isInitiallyDisabled: false,
95
- children: jest.fn().mockImplementation(()=>null),
96
+ children: _vitest.vi.fn().mockImplementation(()=>null),
96
97
  field,
97
98
  debounce: 0
98
99
  };
99
100
  (0, _react1.render)(/*#__PURE__*/ _react.createElement(_FieldConnector.FieldConnector, props));
100
101
  const child = getChild(props.children);
101
- expect(child.value).toBe('initial value');
102
- expect(field.getIsDisabled).toHaveBeenCalled();
103
- expect(props.children).toHaveBeenCalledTimes(1);
104
- expect(props.children).toHaveBeenCalledWith(expect.objectContaining({
102
+ (0, _vitest.expect)(child.value).toBe('initial value');
103
+ (0, _vitest.expect)(field.getIsDisabled).toHaveBeenCalled();
104
+ (0, _vitest.expect)(props.children).toHaveBeenCalledTimes(1);
105
+ (0, _vitest.expect)(props.children).toHaveBeenCalledWith(_vitest.expect.objectContaining({
105
106
  disabled: true
106
107
  }));
107
108
  });
@@ -3,8 +3,9 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
  const _reacthooks = require("@testing-library/react-hooks");
6
+ const _vitest = require("vitest");
6
7
  const _useLocalePublishStatus = require("./useLocalePublishStatus");
7
- describe('useLocalePublishStatus', ()=>{
8
+ (0, _vitest.describe)('useLocalePublishStatus', ()=>{
8
9
  const enUS = {
9
10
  code: 'en-US',
10
11
  default: true,
@@ -44,8 +45,8 @@ describe('useLocalePublishStatus', ()=>{
44
45
  [esES.code]: 'ltr'
45
46
  }
46
47
  };
47
- describe('status from entity', ()=>{
48
- it('returns the status from an entry', ()=>{
48
+ (0, _vitest.describe)('status from entity', ()=>{
49
+ (0, _vitest.it)('returns the status from an entry', ()=>{
49
50
  const entity = {
50
51
  metadata: {
51
52
  tags: []
@@ -106,7 +107,7 @@ describe('useLocalePublishStatus', ()=>{
106
107
  }
107
108
  };
108
109
  const { result } = (0, _reacthooks.renderHook)(()=>(0, _useLocalePublishStatus.useLocalePublishStatus)(entity, localesAPI));
109
- expect(result.current).toEqual(new Map([
110
+ (0, _vitest.expect)(result.current).toEqual(new Map([
110
111
  [
111
112
  'en-US',
112
113
  {
@@ -130,7 +131,7 @@ describe('useLocalePublishStatus', ()=>{
130
131
  ]
131
132
  ]));
132
133
  });
133
- it('returns the status from an asset', ()=>{
134
+ (0, _vitest.it)('returns the status from an asset', ()=>{
134
135
  const entity = {
135
136
  sys: {
136
137
  id: '2',
@@ -197,7 +198,7 @@ describe('useLocalePublishStatus', ()=>{
197
198
  }
198
199
  };
199
200
  const { result } = (0, _reacthooks.renderHook)(()=>(0, _useLocalePublishStatus.useLocalePublishStatus)(entity, localesAPI));
200
- expect(result.current).toEqual(new Map([
201
+ (0, _vitest.expect)(result.current).toEqual(new Map([
201
202
  [
202
203
  'en-US',
203
204
  {
@@ -221,7 +222,7 @@ describe('useLocalePublishStatus', ()=>{
221
222
  ]
222
223
  ]));
223
224
  });
224
- it('falls back to the entity status for entries if no fieldStatus is present', ()=>{
225
+ (0, _vitest.it)('falls back to the entity status for entries if no fieldStatus is present', ()=>{
225
226
  const entity = {
226
227
  metadata: {
227
228
  tags: []
@@ -274,7 +275,7 @@ describe('useLocalePublishStatus', ()=>{
274
275
  fields: {}
275
276
  };
276
277
  const { result } = (0, _reacthooks.renderHook)(()=>(0, _useLocalePublishStatus.useLocalePublishStatus)(entity, localesAPI));
277
- expect(result.current).toEqual(new Map([
278
+ (0, _vitest.expect)(result.current).toEqual(new Map([
278
279
  [
279
280
  'en-US',
280
281
  {
@@ -298,9 +299,9 @@ describe('useLocalePublishStatus', ()=>{
298
299
  ]
299
300
  ]));
300
301
  });
301
- it('returns undefined as publishStatus if there is no entity provided', ()=>{
302
+ (0, _vitest.it)('returns undefined as publishStatus if there is no entity provided', ()=>{
302
303
  const { result } = (0, _reacthooks.renderHook)(()=>(0, _useLocalePublishStatus.useLocalePublishStatus)(undefined, localesAPI));
303
- expect(result.current).toBeUndefined();
304
+ (0, _vitest.expect)(result.current).toBeUndefined();
304
305
  });
305
306
  });
306
307
  });
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
  const _react = require("@testing-library/react");
6
+ const _vitest = require("vitest");
6
7
  const _useReleaseStatus = require("./useReleaseStatus");
7
8
  const createEntityBuilder = (entityType, defaultId)=>{
8
9
  let currentId = defaultId;
@@ -98,10 +99,10 @@ const createDefaultLocales = ()=>[
98
99
  }
99
100
  ];
100
101
  const expectLocaleStatus = (result, localeCode, expected)=>{
101
- expect(result.releaseStatusMap.get(localeCode)).toEqual(expected);
102
+ (0, _vitest.expect)(result.releaseStatusMap.get(localeCode)).toEqual(expected);
102
103
  };
103
104
  const expectEntityStatus = (result, expectedStatus)=>{
104
- expect(result.releaseEntityStatus).toBe(expectedStatus);
105
+ (0, _vitest.expect)(result.releaseEntityStatus).toBe(expectedStatus);
105
106
  };
106
107
  const ENTITY_TYPES = [
107
108
  'Entry',
@@ -133,10 +134,10 @@ const BUILDER_BY_TYPE = {
133
134
  Fragment: fragmentBuilder,
134
135
  Experience: experienceBuilder
135
136
  };
136
- describe('useReleaseStatus', ()=>{
137
+ (0, _vitest.describe)('useReleaseStatus', ()=>{
137
138
  const locales = createDefaultLocales();
138
- describe('Guard clauses and invalid inputs', ()=>{
139
- it('returns empty map when entity is undefined', ()=>{
139
+ (0, _vitest.describe)('Guard clauses and invalid inputs', ()=>{
140
+ (0, _vitest.it)('returns empty map when entity is undefined', ()=>{
140
141
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
141
142
  locales,
142
143
  release: createEntryBasedRelease({
@@ -145,17 +146,17 @@ describe('useReleaseStatus', ()=>{
145
146
  }),
146
147
  entity: undefined
147
148
  }));
148
- expect(result.current.releaseStatusMap.size).toBe(0);
149
+ (0, _vitest.expect)(result.current.releaseStatusMap.size).toBe(0);
149
150
  });
150
- it('returns empty map when release is undefined', ()=>{
151
+ (0, _vitest.it)('returns empty map when release is undefined', ()=>{
151
152
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
152
153
  locales,
153
154
  entity: entryBuilder().withStatus('published'),
154
155
  release: undefined
155
156
  }));
156
- expect(result.current.releaseStatusMap.size).toBe(0);
157
+ (0, _vitest.expect)(result.current.releaseStatusMap.size).toBe(0);
157
158
  });
158
- it('returns empty map when release has no schemaVersion', ()=>{
159
+ (0, _vitest.it)('returns empty map when release has no schemaVersion', ()=>{
159
160
  const invalidRelease = {
160
161
  title: 'Release 1',
161
162
  sys: {
@@ -171,9 +172,9 @@ describe('useReleaseStatus', ()=>{
171
172
  entity: entryBuilder().withStatus('published'),
172
173
  release: invalidRelease
173
174
  }));
174
- expect(result.current.releaseStatusMap.size).toBe(0);
175
+ (0, _vitest.expect)(result.current.releaseStatusMap.size).toBe(0);
175
176
  });
176
- it('returns empty map when release schema is not v2', ()=>{
177
+ (0, _vitest.it)('returns empty map when release schema is not v2', ()=>{
177
178
  const oldSchemaRelease = {
178
179
  title: 'Release 1',
179
180
  sys: {
@@ -190,11 +191,11 @@ describe('useReleaseStatus', ()=>{
190
191
  entity: entryBuilder().withStatus('published'),
191
192
  release: oldSchemaRelease
192
193
  }));
193
- expect(result.current.releaseStatusMap.size).toBe(0);
194
+ (0, _vitest.expect)(result.current.releaseStatusMap.size).toBe(0);
194
195
  });
195
196
  });
196
- describe('Edge case: Missing previousEntityOnTimeline', ()=>{
197
- it('defaults to "Remains draft" when unpublishing without previous state (entry-based)', ()=>{
197
+ (0, _vitest.describe)('Edge case: Missing previousEntityOnTimeline', ()=>{
198
+ (0, _vitest.it)('defaults to "Remains draft" when unpublishing without previous state (entry-based)', ()=>{
198
199
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
199
200
  locales,
200
201
  previousEntityOnTimeline: undefined,
@@ -214,7 +215,7 @@ describe('useReleaseStatus', ()=>{
214
215
  }
215
216
  });
216
217
  });
217
- it('defaults to "Remains draft" when removing locale without previous state (locale-based)', ()=>{
218
+ (0, _vitest.it)('defaults to "Remains draft" when removing locale without previous state (locale-based)', ()=>{
218
219
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
219
220
  locales,
220
221
  previousEntityOnTimeline: undefined,
@@ -235,7 +236,7 @@ describe('useReleaseStatus', ()=>{
235
236
  });
236
237
  });
237
238
  });
238
- describe('Changed status handling', ()=>{
239
+ (0, _vitest.describe)('Changed status handling', ()=>{
239
240
  const buildChangedEntry = ()=>({
240
241
  sys: {
241
242
  id: 'entry-1',
@@ -249,7 +250,7 @@ describe('useReleaseStatus', ()=>{
249
250
  publishedVersion: 2
250
251
  }
251
252
  });
252
- it('treats "changed" as published-like when unpublishing (entry-based)', ()=>{
253
+ (0, _vitest.it)('treats "changed" as published-like when unpublishing (entry-based)', ()=>{
253
254
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
254
255
  locales,
255
256
  previousEntityOnTimeline: buildChangedEntry(),
@@ -269,7 +270,7 @@ describe('useReleaseStatus', ()=>{
269
270
  }
270
271
  });
271
272
  });
272
- it('treats "changed" as published-like when removing locale (locale-based)', ()=>{
273
+ (0, _vitest.it)('treats "changed" as published-like when removing locale (locale-based)', ()=>{
273
274
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
274
275
  locales,
275
276
  previousEntityOnTimeline: buildChangedEntry(),
@@ -289,7 +290,7 @@ describe('useReleaseStatus', ()=>{
289
290
  }
290
291
  });
291
292
  });
292
- it('shows "Published" for changed reference not in release', ()=>{
293
+ (0, _vitest.it)('shows "Published" for changed reference not in release', ()=>{
293
294
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
294
295
  locales,
295
296
  release: createEntryBasedRelease({
@@ -310,7 +311,7 @@ describe('useReleaseStatus', ()=>{
310
311
  });
311
312
  });
312
313
  });
313
- describe('Multi-locale scenarios', ()=>{
314
+ (0, _vitest.describe)('Multi-locale scenarios', ()=>{
314
315
  const multiLocales = [
315
316
  {
316
317
  code: 'en-US'
@@ -333,7 +334,7 @@ describe('useReleaseStatus', ()=>{
333
334
  publishedVersion: enStatus === 'published' || deStatus === 'published' ? 2 : undefined
334
335
  }
335
336
  });
336
- it('creates status for each locale', ()=>{
337
+ (0, _vitest.it)('creates status for each locale', ()=>{
337
338
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
338
339
  locales: multiLocales,
339
340
  release: createEntryBasedRelease({
@@ -343,11 +344,11 @@ describe('useReleaseStatus', ()=>{
343
344
  }),
344
345
  entity: buildMultiLocaleEntry('draft', 'draft')
345
346
  }));
346
- expect(result.current.releaseStatusMap.size).toBe(2);
347
- expect(result.current.releaseStatusMap.has('en-US')).toBe(true);
348
- expect(result.current.releaseStatusMap.has('de-DE')).toBe(true);
347
+ (0, _vitest.expect)(result.current.releaseStatusMap.size).toBe(2);
348
+ (0, _vitest.expect)(result.current.releaseStatusMap.has('en-US')).toBe(true);
349
+ (0, _vitest.expect)(result.current.releaseStatusMap.has('de-DE')).toBe(true);
349
350
  });
350
- it('aggregates to "published" when any locale is published', ()=>{
351
+ (0, _vitest.it)('aggregates to "published" when any locale is published', ()=>{
351
352
  const publishedEntity = buildMultiLocaleEntry('published', 'draft');
352
353
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
353
354
  locales: multiLocales,
@@ -361,7 +362,7 @@ describe('useReleaseStatus', ()=>{
361
362
  }));
362
363
  expectEntityStatus(result.current, 'published');
363
364
  });
364
- it('aggregates to "willPublish" when any locale will publish', ()=>{
365
+ (0, _vitest.it)('aggregates to "willPublish" when any locale will publish', ()=>{
365
366
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
366
367
  locales: multiLocales,
367
368
  release: createEntryBasedRelease({
@@ -373,7 +374,7 @@ describe('useReleaseStatus', ()=>{
373
374
  }));
374
375
  expectEntityStatus(result.current, 'willPublish');
375
376
  });
376
- it('handles locale not in add/remove arrays', ()=>{
377
+ (0, _vitest.it)('handles locale not in add/remove arrays', ()=>{
377
378
  const releaseWithDifferentLocale = {
378
379
  title: 'Release 1',
379
380
  sys: {
@@ -417,7 +418,7 @@ describe('useReleaseStatus', ()=>{
417
418
  });
418
419
  });
419
420
  });
420
- describe('Flat array payload shape', ()=>{
421
+ (0, _vitest.describe)('Flat array payload shape', ()=>{
421
422
  const buildFlatShapeRelease = (verb, localeCodes)=>({
422
423
  title: 'Release 1',
423
424
  sys: {
@@ -440,7 +441,7 @@ describe('useReleaseStatus', ()=>{
440
441
  ]
441
442
  }
442
443
  });
443
- it('treats flat-array add as willPublish', ()=>{
444
+ (0, _vitest.it)('treats flat-array add as willPublish', ()=>{
444
445
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
445
446
  locales,
446
447
  release: buildFlatShapeRelease('add', [
@@ -457,7 +458,7 @@ describe('useReleaseStatus', ()=>{
457
458
  }
458
459
  });
459
460
  });
460
- it('treats flat-array remove as becomesDraft', ()=>{
461
+ (0, _vitest.it)('treats flat-array remove as becomesDraft', ()=>{
461
462
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
462
463
  locales,
463
464
  previousEntityOnTimeline: entryBuilder().withStatus('published'),
@@ -475,7 +476,7 @@ describe('useReleaseStatus', ()=>{
475
476
  }
476
477
  });
477
478
  });
478
- it('treats empty flat-array remove as remainsDraft', ()=>{
479
+ (0, _vitest.it)('treats empty flat-array remove as remainsDraft', ()=>{
479
480
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
480
481
  locales,
481
482
  release: buildFlatShapeRelease('remove', []),
@@ -510,8 +511,8 @@ describe('useReleaseStatus', ()=>{
510
511
  };
511
512
  const publishAction = publishingModel === 'entry-based' ? 'publish' : 'add';
512
513
  const unpublishAction = publishingModel === 'entry-based' ? 'unpublish' : 'remove';
513
- describe(`${entityType}`, ()=>{
514
- it(`[${publishAction}] shows "Will publish" when entity transitions draft → published`, ()=>{
514
+ (0, _vitest.describe)(`${entityType}`, ()=>{
515
+ (0, _vitest.it)(`[${publishAction}] shows "Will publish" when entity transitions draft → published`, ()=>{
515
516
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
516
517
  locales,
517
518
  previousEntityOnTimeline: buildEntity('draft'),
@@ -532,7 +533,7 @@ describe('useReleaseStatus', ()=>{
532
533
  }
533
534
  });
534
535
  });
535
- it(`[${unpublishAction}] shows "Becomes draft" when entity transitions published → draft`, ()=>{
536
+ (0, _vitest.it)(`[${unpublishAction}] shows "Becomes draft" when entity transitions published → draft`, ()=>{
536
537
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
537
538
  locales,
538
539
  previousEntityOnTimeline: buildEntity('published'),
@@ -553,7 +554,7 @@ describe('useReleaseStatus', ()=>{
553
554
  }
554
555
  });
555
556
  });
556
- it(`[${unpublishAction}] shows "Remains draft" when entity stays draft → draft`, ()=>{
557
+ (0, _vitest.it)(`[${unpublishAction}] shows "Remains draft" when entity stays draft → draft`, ()=>{
557
558
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
558
559
  locales,
559
560
  previousEntityOnTimeline: buildEntity('draft'),
@@ -575,7 +576,7 @@ describe('useReleaseStatus', ()=>{
575
576
  });
576
577
  });
577
578
  if (isReference) {
578
- it('[not in release] shows "Published" when entity is published (returns actual state)', ()=>{
579
+ (0, _vitest.it)('[not in release] shows "Published" when entity is published (returns actual state)', ()=>{
579
580
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
580
581
  locales,
581
582
  release: createRelease({
@@ -596,7 +597,7 @@ describe('useReleaseStatus', ()=>{
596
597
  });
597
598
  expectEntityStatus(result.current, 'published');
598
599
  });
599
- it('[not in release] shows "Not in release" when entity is draft (returns actual state)', ()=>{
600
+ (0, _vitest.it)('[not in release] shows "Not in release" when entity is draft (returns actual state)', ()=>{
600
601
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
601
602
  locales,
602
603
  release: createRelease({
@@ -617,7 +618,7 @@ describe('useReleaseStatus', ()=>{
617
618
  });
618
619
  });
619
620
  } else {
620
- it('[not in release] returns "notInRelease" even when published (ignores actual state)', ()=>{
621
+ (0, _vitest.it)('[not in release] returns "notInRelease" even when published (ignores actual state)', ()=>{
621
622
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
622
623
  locales,
623
624
  release: createRelease({
@@ -638,7 +639,7 @@ describe('useReleaseStatus', ()=>{
638
639
  });
639
640
  expectEntityStatus(result.current, 'notInRelease');
640
641
  });
641
- it('[not in release] returns "notInRelease" when draft (consistent regardless of state)', ()=>{
642
+ (0, _vitest.it)('[not in release] returns "notInRelease" when draft (consistent regardless of state)', ()=>{
642
643
  const { result } = (0, _react.renderHook)(()=>(0, _useReleaseStatus.useReleaseStatus)({
643
644
  locales,
644
645
  release: createRelease({
@@ -662,28 +663,28 @@ describe('useReleaseStatus', ()=>{
662
663
  });
663
664
  });
664
665
  };
665
- describe('When entity is a reference (isReference: true)', ()=>{
666
- describe('Entry-based publishing', ()=>{
666
+ (0, _vitest.describe)('When entity is a reference (isReference: true)', ()=>{
667
+ (0, _vitest.describe)('Entry-based publishing', ()=>{
667
668
  testPublishingScenarios({
668
669
  isReference: true,
669
670
  publishingModel: 'entry-based'
670
671
  });
671
672
  });
672
- describe('Locale-based publishing', ()=>{
673
+ (0, _vitest.describe)('Locale-based publishing', ()=>{
673
674
  testPublishingScenarios({
674
675
  isReference: true,
675
676
  publishingModel: 'locale-based'
676
677
  });
677
678
  });
678
679
  });
679
- describe('When entity is NOT a reference (isReference: false)', ()=>{
680
- describe('Entry-based publishing', ()=>{
680
+ (0, _vitest.describe)('When entity is NOT a reference (isReference: false)', ()=>{
681
+ (0, _vitest.describe)('Entry-based publishing', ()=>{
681
682
  testPublishingScenarios({
682
683
  isReference: false,
683
684
  publishingModel: 'entry-based'
684
685
  });
685
686
  });
686
- describe('Locale-based publishing', ()=>{
687
+ (0, _vitest.describe)('Locale-based publishing', ()=>{
687
688
  testPublishingScenarios({
688
689
  isReference: false,
689
690
  publishingModel: 'locale-based'
@@ -2,38 +2,39 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ const _vitest = require("vitest");
5
6
  const _entityHelpers = require("./entityHelpers");
6
- describe('getEntityStatus', ()=>{
7
+ (0, _vitest.describe)('getEntityStatus', ()=>{
7
8
  function createEntity(props) {
8
9
  return props;
9
10
  }
10
- describe.each([
11
+ _vitest.describe.each([
11
12
  'Entry',
12
13
  'Asset'
13
14
  ])('for entity type %s', (type)=>{
14
- describe('archived', ()=>{
15
- test('returns archived if there is an archivedVersion', ()=>{
15
+ (0, _vitest.describe)('archived', ()=>{
16
+ (0, _vitest.test)('returns archived if there is an archivedVersion', ()=>{
16
17
  const result = (0, _entityHelpers.getEntityStatus)(createEntity({
17
18
  archivedVersion: 1,
18
19
  type,
19
20
  version: 1
20
21
  }));
21
- expect(result).toEqual('archived');
22
+ (0, _vitest.expect)(result).toEqual('archived');
22
23
  });
23
24
  });
24
- describe('deleted', ()=>{
25
- test('returns deleted if there is an deletedVersion', ()=>{
25
+ (0, _vitest.describe)('deleted', ()=>{
26
+ (0, _vitest.test)('returns deleted if there is an deletedVersion', ()=>{
26
27
  const result = (0, _entityHelpers.getEntityStatus)(createEntity({
27
28
  deletedVersion: 1,
28
29
  type,
29
30
  version: 1
30
31
  }));
31
- expect(result).toEqual('deleted');
32
+ (0, _vitest.expect)(result).toEqual('deleted');
32
33
  });
33
34
  });
34
- describe('publish status', ()=>{
35
- describe('by field status', ()=>{
36
- test('returns changed if at least one fieldStatus is changed', ()=>{
35
+ (0, _vitest.describe)('publish status', ()=>{
36
+ (0, _vitest.describe)('by field status', ()=>{
37
+ (0, _vitest.test)('returns changed if at least one fieldStatus is changed', ()=>{
37
38
  const result = (0, _entityHelpers.getEntityStatus)(createEntity({
38
39
  fieldStatus: {
39
40
  '*': {
@@ -49,9 +50,9 @@ describe('getEntityStatus', ()=>{
49
50
  'de-DE',
50
51
  'fr-FR'
51
52
  ]);
52
- expect(result).toEqual('changed');
53
+ (0, _vitest.expect)(result).toEqual('changed');
53
54
  });
54
- test('returns published if at least one fieldStatus is published (and none changed)', ()=>{
55
+ (0, _vitest.test)('returns published if at least one fieldStatus is published (and none changed)', ()=>{
55
56
  const result = (0, _entityHelpers.getEntityStatus)(createEntity({
56
57
  fieldStatus: {
57
58
  '*': {
@@ -67,9 +68,9 @@ describe('getEntityStatus', ()=>{
67
68
  'de-DE',
68
69
  'fr-FR'
69
70
  ]);
70
- expect(result).toEqual('published');
71
+ (0, _vitest.expect)(result).toEqual('published');
71
72
  });
72
- test('returns published if that is the most advanced state for the selected locales', ()=>{
73
+ (0, _vitest.test)('returns published if that is the most advanced state for the selected locales', ()=>{
73
74
  const result = (0, _entityHelpers.getEntityStatus)(createEntity({
74
75
  fieldStatus: {
75
76
  '*': {
@@ -84,9 +85,9 @@ describe('getEntityStatus', ()=>{
84
85
  'de-DE',
85
86
  'fr-FR'
86
87
  ]);
87
- expect(result).toEqual('published');
88
+ (0, _vitest.expect)(result).toEqual('published');
88
89
  });
89
- test('returns draft if at least one fieldStatus is draft (and none is changed or published)', ()=>{
90
+ (0, _vitest.test)('returns draft if at least one fieldStatus is draft (and none is changed or published)', ()=>{
90
91
  const result = (0, _entityHelpers.getEntityStatus)(createEntity({
91
92
  fieldStatus: {
92
93
  '*': {
@@ -102,9 +103,9 @@ describe('getEntityStatus', ()=>{
102
103
  'de-DE',
103
104
  'fr-FR'
104
105
  ]);
105
- expect(result).toEqual('draft');
106
+ (0, _vitest.expect)(result).toEqual('draft');
106
107
  });
107
- test('returns draft if that is the most advanced state for the selected locales', ()=>{
108
+ (0, _vitest.test)('returns draft if that is the most advanced state for the selected locales', ()=>{
108
109
  const result = (0, _entityHelpers.getEntityStatus)(createEntity({
109
110
  fieldStatus: {
110
111
  '*': {
@@ -118,170 +119,170 @@ describe('getEntityStatus', ()=>{
118
119
  }), [
119
120
  'fr-FR'
120
121
  ]);
121
- expect(result).toEqual('draft');
122
+ (0, _vitest.expect)(result).toEqual('draft');
122
123
  });
123
124
  });
124
- describe('by version comparsion', ()=>{
125
- test('returns changed if the version is greater than the publishedVersion + 1', ()=>{
125
+ (0, _vitest.describe)('by version comparsion', ()=>{
126
+ (0, _vitest.test)('returns changed if the version is greater than the publishedVersion + 1', ()=>{
126
127
  const result = (0, _entityHelpers.getEntityStatus)(createEntity({
127
128
  publishedVersion: 1,
128
129
  type,
129
130
  version: 3
130
131
  }));
131
- expect(result).toEqual('changed');
132
+ (0, _vitest.expect)(result).toEqual('changed');
132
133
  });
133
- test('returns published if there is a publishedVersion', ()=>{
134
+ (0, _vitest.test)('returns published if there is a publishedVersion', ()=>{
134
135
  const result = (0, _entityHelpers.getEntityStatus)(createEntity({
135
136
  publishedVersion: 1,
136
137
  type,
137
138
  version: 2
138
139
  }));
139
- expect(result).toEqual('published');
140
+ (0, _vitest.expect)(result).toEqual('published');
140
141
  });
141
- test('returns draft if there is no publishedVersion', ()=>{
142
+ (0, _vitest.test)('returns draft if there is no publishedVersion', ()=>{
142
143
  const result = (0, _entityHelpers.getEntityStatus)(createEntity({
143
144
  type,
144
145
  version: 2
145
146
  }));
146
- expect(result).toEqual('draft');
147
+ (0, _vitest.expect)(result).toEqual('draft');
147
148
  });
148
149
  });
149
150
  });
150
151
  });
151
152
  });
152
- describe('getResolvedImageUrl', ()=>{
153
- describe('URL parsing and domain replacement', ()=>{
154
- test('replaces downloads.* with images.*', ()=>{
153
+ (0, _vitest.describe)('getResolvedImageUrl', ()=>{
154
+ (0, _vitest.describe)('URL parsing and domain replacement', ()=>{
155
+ (0, _vitest.test)('replaces downloads.* with images.*', ()=>{
155
156
  const result = (0, _entityHelpers.getResolvedImageUrl)('https://downloads.example.com/space/asset.jpg');
156
- expect(result).toBe('https://images.example.com/space/asset.jpg');
157
+ (0, _vitest.expect)(result).toBe('https://images.example.com/space/asset.jpg');
157
158
  });
158
- test('handles protocol-relative URLs', ()=>{
159
+ (0, _vitest.test)('handles protocol-relative URLs', ()=>{
159
160
  const result = (0, _entityHelpers.getResolvedImageUrl)('//downloads.example.com/space/asset.jpg');
160
- expect(result).toBe('//images.example.com/space/asset.jpg');
161
+ (0, _vitest.expect)(result).toBe('//images.example.com/space/asset.jpg');
161
162
  });
162
- test('does not modify URLs that do not start with downloads.', ()=>{
163
+ (0, _vitest.test)('does not modify URLs that do not start with downloads.', ()=>{
163
164
  const result = (0, _entityHelpers.getResolvedImageUrl)('https://example.com/image.jpg');
164
- expect(result).toBe('https://example.com/image.jpg');
165
+ (0, _vitest.expect)(result).toBe('https://example.com/image.jpg');
165
166
  });
166
- test('does not modify images.* URLs', ()=>{
167
+ (0, _vitest.test)('does not modify images.* URLs', ()=>{
167
168
  const result = (0, _entityHelpers.getResolvedImageUrl)('https://images.example.com/space/asset.jpg');
168
- expect(result).toBe('https://images.example.com/space/asset.jpg');
169
+ (0, _vitest.expect)(result).toBe('https://images.example.com/space/asset.jpg');
169
170
  });
170
171
  });
171
- describe('query parameters', ()=>{
172
- test('adds width parameter', ()=>{
172
+ (0, _vitest.describe)('query parameters', ()=>{
173
+ (0, _vitest.test)('adds width parameter', ()=>{
173
174
  const result = (0, _entityHelpers.getResolvedImageUrl)('https://downloads.example.com/space/asset.jpg', {
174
175
  w: 100
175
176
  });
176
- expect(result).toBe('https://images.example.com/space/asset.jpg?w=100');
177
+ (0, _vitest.expect)(result).toBe('https://images.example.com/space/asset.jpg?w=100');
177
178
  });
178
- test('adds height parameter', ()=>{
179
+ (0, _vitest.test)('adds height parameter', ()=>{
179
180
  const result = (0, _entityHelpers.getResolvedImageUrl)('https://downloads.example.com/space/asset.jpg', {
180
181
  h: 200
181
182
  });
182
- expect(result).toBe('https://images.example.com/space/asset.jpg?h=200');
183
+ (0, _vitest.expect)(result).toBe('https://images.example.com/space/asset.jpg?h=200');
183
184
  });
184
- test('adds fit parameter', ()=>{
185
+ (0, _vitest.test)('adds fit parameter', ()=>{
185
186
  const result = (0, _entityHelpers.getResolvedImageUrl)('https://downloads.example.com/space/asset.jpg', {
186
187
  fit: 'thumb'
187
188
  });
188
- expect(result).toBe('https://images.example.com/space/asset.jpg?fit=thumb');
189
+ (0, _vitest.expect)(result).toBe('https://images.example.com/space/asset.jpg?fit=thumb');
189
190
  });
190
- test('adds multiple parameters', ()=>{
191
+ (0, _vitest.test)('adds multiple parameters', ()=>{
191
192
  const result = (0, _entityHelpers.getResolvedImageUrl)('https://downloads.example.com/space/asset.jpg', {
192
193
  w: 100,
193
194
  h: 200,
194
195
  fit: 'thumb'
195
196
  });
196
- expect(result).toContain('w=100');
197
- expect(result).toContain('h=200');
198
- expect(result).toContain('fit=thumb');
199
- expect(result).toContain('images.example.com');
197
+ (0, _vitest.expect)(result).toContain('w=100');
198
+ (0, _vitest.expect)(result).toContain('h=200');
199
+ (0, _vitest.expect)(result).toContain('fit=thumb');
200
+ (0, _vitest.expect)(result).toContain('images.example.com');
200
201
  });
201
- test('skips undefined parameters', ()=>{
202
+ (0, _vitest.test)('skips undefined parameters', ()=>{
202
203
  const result = (0, _entityHelpers.getResolvedImageUrl)('https://downloads.example.com/space/asset.jpg', {
203
204
  w: 100,
204
205
  h: undefined,
205
206
  fit: 'thumb'
206
207
  });
207
- expect(result).toBe('https://images.example.com/space/asset.jpg?w=100&fit=thumb');
208
+ (0, _vitest.expect)(result).toBe('https://images.example.com/space/asset.jpg?w=100&fit=thumb');
208
209
  });
209
- test('returns URL without query string when no params provided', ()=>{
210
+ (0, _vitest.test)('returns URL without query string when no params provided', ()=>{
210
211
  const result = (0, _entityHelpers.getResolvedImageUrl)('https://downloads.example.com/space/asset.jpg');
211
- expect(result).toBe('https://images.example.com/space/asset.jpg');
212
+ (0, _vitest.expect)(result).toBe('https://images.example.com/space/asset.jpg');
212
213
  });
213
- test('returns URL without query string when all params are undefined', ()=>{
214
+ (0, _vitest.test)('returns URL without query string when all params are undefined', ()=>{
214
215
  const result = (0, _entityHelpers.getResolvedImageUrl)('https://downloads.example.com/space/asset.jpg', {
215
216
  w: undefined,
216
217
  h: undefined,
217
218
  fit: undefined
218
219
  });
219
- expect(result).toBe('https://images.example.com/space/asset.jpg');
220
+ (0, _vitest.expect)(result).toBe('https://images.example.com/space/asset.jpg');
220
221
  });
221
222
  });
222
- describe('relative URL fallback', ()=>{
223
- test('returns relative URL unchanged when no params provided', ()=>{
223
+ (0, _vitest.describe)('relative URL fallback', ()=>{
224
+ (0, _vitest.test)('returns relative URL unchanged when no params provided', ()=>{
224
225
  const result = (0, _entityHelpers.getResolvedImageUrl)('/assets/image.jpg');
225
- expect(result).toBe('/assets/image.jpg');
226
+ (0, _vitest.expect)(result).toBe('/assets/image.jpg');
226
227
  });
227
- test('appends query params to relative URLs', ()=>{
228
+ (0, _vitest.test)('appends query params to relative URLs', ()=>{
228
229
  const result = (0, _entityHelpers.getResolvedImageUrl)('/assets/image.jpg', {
229
230
  w: 100,
230
231
  h: 200
231
232
  });
232
- expect(result).toBe('/assets/image.jpg?w=100&h=200');
233
+ (0, _vitest.expect)(result).toBe('/assets/image.jpg?w=100&h=200');
233
234
  });
234
- test('handles relative URLs with undefined params', ()=>{
235
+ (0, _vitest.test)('handles relative URLs with undefined params', ()=>{
235
236
  const result = (0, _entityHelpers.getResolvedImageUrl)('/assets/image.jpg', {
236
237
  w: 100,
237
238
  h: undefined
238
239
  });
239
- expect(result).toBe('/assets/image.jpg?w=100');
240
+ (0, _vitest.expect)(result).toBe('/assets/image.jpg?w=100');
240
241
  });
241
- test('returns relative URL unchanged when all params are undefined', ()=>{
242
+ (0, _vitest.test)('returns relative URL unchanged when all params are undefined', ()=>{
242
243
  const result = (0, _entityHelpers.getResolvedImageUrl)('/assets/image.jpg', {
243
244
  w: undefined,
244
245
  h: undefined
245
246
  });
246
- expect(result).toBe('/assets/image.jpg');
247
+ (0, _vitest.expect)(result).toBe('/assets/image.jpg');
247
248
  });
248
249
  });
249
- describe('edge cases', ()=>{
250
- test('preserves existing query parameters', ()=>{
250
+ (0, _vitest.describe)('edge cases', ()=>{
251
+ (0, _vitest.test)('preserves existing query parameters', ()=>{
251
252
  const result = (0, _entityHelpers.getResolvedImageUrl)('https://downloads.example.com/space/asset.jpg?foo=bar', {
252
253
  w: 100
253
254
  });
254
- expect(result).toContain('foo=bar');
255
- expect(result).toContain('w=100');
255
+ (0, _vitest.expect)(result).toContain('foo=bar');
256
+ (0, _vitest.expect)(result).toContain('w=100');
256
257
  });
257
- test('handles URLs with fragments', ()=>{
258
+ (0, _vitest.test)('handles URLs with fragments', ()=>{
258
259
  const result = (0, _entityHelpers.getResolvedImageUrl)('https://downloads.example.com/space/asset.jpg#section', {
259
260
  w: 100
260
261
  });
261
- expect(result).toContain('images.example.com');
262
- expect(result).toContain('w=100');
263
- expect(result).toContain('#section');
262
+ (0, _vitest.expect)(result).toContain('images.example.com');
263
+ (0, _vitest.expect)(result).toContain('w=100');
264
+ (0, _vitest.expect)(result).toContain('#section');
264
265
  });
265
266
  });
266
- describe('pattern-based domain replacement', ()=>{
267
- test('replaces any downloads.* domain with images.*', ()=>{
267
+ (0, _vitest.describe)('pattern-based domain replacement', ()=>{
268
+ (0, _vitest.test)('replaces any downloads.* domain with images.*', ()=>{
268
269
  const result = (0, _entityHelpers.getResolvedImageUrl)('https://downloads.example.com/space/asset.jpg');
269
- expect(result).toBe('https://images.example.com/space/asset.jpg');
270
+ (0, _vitest.expect)(result).toBe('https://images.example.com/space/asset.jpg');
270
271
  });
271
- test('handles protocol-relative downloads URLs', ()=>{
272
+ (0, _vitest.test)('handles protocol-relative downloads URLs', ()=>{
272
273
  const result = (0, _entityHelpers.getResolvedImageUrl)('//downloads.example.com/space/asset.jpg');
273
- expect(result).toBe('//images.example.com/space/asset.jpg');
274
+ (0, _vitest.expect)(result).toBe('//images.example.com/space/asset.jpg');
274
275
  });
275
- test('adds query params to any downloads.* domain', ()=>{
276
+ (0, _vitest.test)('adds query params to any downloads.* domain', ()=>{
276
277
  const result = (0, _entityHelpers.getResolvedImageUrl)('https://downloads.another-example.com/space/asset.jpg', {
277
278
  w: 150,
278
279
  h: 150,
279
280
  fit: 'thumb'
280
281
  });
281
- expect(result).toContain('images.another-example.com');
282
- expect(result).toContain('w=150');
283
- expect(result).toContain('h=150');
284
- expect(result).toContain('fit=thumb');
282
+ (0, _vitest.expect)(result).toContain('images.another-example.com');
283
+ (0, _vitest.expect)(result).toContain('w=150');
284
+ (0, _vitest.expect)(result).toContain('h=150');
285
+ (0, _vitest.expect)(result).toContain('fit=thumb');
285
286
  });
286
287
  });
287
288
  });
@@ -2,12 +2,13 @@ import * as React from 'react';
2
2
  import { createFakeFieldAPI } from '@contentful/field-editor-test-utils';
3
3
  import { act, render } from '@testing-library/react';
4
4
  import noop from 'lodash/noop';
5
+ import { expect, it, vi } from 'vitest';
5
6
  import { FieldConnector } from './FieldConnector';
6
7
  function getChild(children) {
7
8
  return children.mock.calls[children.mock.calls.length - 1][0];
8
9
  }
9
10
  it('does not rerender with outdated value after calling setValue', async ()=>{
10
- const onSchemaErrorsChanged = jest.fn();
11
+ const onSchemaErrorsChanged = vi.fn();
11
12
  const [field] = createFakeFieldAPI((field)=>{
12
13
  return {
13
14
  ...field,
@@ -17,7 +18,7 @@ it('does not rerender with outdated value after calling setValue', async ()=>{
17
18
  }, 'initial value');
18
19
  const props = {
19
20
  isInitiallyDisabled: false,
20
- children: jest.fn().mockImplementation(()=>null),
21
+ children: vi.fn().mockImplementation(()=>null),
21
22
  field,
22
23
  debounce: 0
23
24
  };
@@ -37,12 +38,12 @@ it('takes initial disable state from sdk.field', ()=>{
37
38
  const [field] = createFakeFieldAPI((field)=>{
38
39
  return {
39
40
  ...field,
40
- getIsDisabled: jest.fn().mockReturnValue(true)
41
+ getIsDisabled: vi.fn().mockReturnValue(true)
41
42
  };
42
43
  }, 'initial value');
43
44
  const props = {
44
45
  isInitiallyDisabled: false,
45
- children: jest.fn().mockImplementation(()=>null),
46
+ children: vi.fn().mockImplementation(()=>null),
46
47
  field,
47
48
  debounce: 0
48
49
  };
@@ -1,4 +1,5 @@
1
1
  import { renderHook } from '@testing-library/react-hooks';
2
+ import { describe, expect, it } from 'vitest';
2
3
  import { useLocalePublishStatus } from './useLocalePublishStatus';
3
4
  describe('useLocalePublishStatus', ()=>{
4
5
  const enUS = {
@@ -1,4 +1,5 @@
1
1
  import { renderHook } from '@testing-library/react';
2
+ import { describe, expect, it } from 'vitest';
2
3
  import { useReleaseStatus } from './useReleaseStatus';
3
4
  const createEntityBuilder = (entityType, defaultId)=>{
4
5
  let currentId = defaultId;
@@ -1,3 +1,4 @@
1
+ import { describe, expect, test } from 'vitest';
1
2
  import { getEntityStatus, getResolvedImageUrl } from './entityHelpers';
2
3
  describe('getEntityStatus', ()=>{
3
4
  function createEntity(props) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/field-editor-shared",
3
- "version": "4.4.0",
3
+ "version": "4.4.1",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "types": "dist/types/index.d.ts",
@@ -37,13 +37,13 @@
37
37
  "build:types": "tsc --outDir dist/types --emitDeclarationOnly",
38
38
  "build:cjs": "swc src --config-file ../../.swcrc -d dist/cjs -C module.type=commonjs",
39
39
  "build:esm": "swc src --config-file ../../.swcrc -d dist/esm",
40
- "test": "jest --watch",
41
- "test:ci": "jest --ci",
40
+ "test": "vitest",
41
+ "test:ci": "vitest run",
42
42
  "tsc": "tsc -p ./ --noEmit"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@contentful/app-sdk": "^4.42.0",
46
- "@contentful/field-editor-test-utils": "^3.1.0",
46
+ "@contentful/field-editor-test-utils": "^3.1.1",
47
47
  "@lingui/core": "5.3.0",
48
48
  "@tanstack/react-query": "^4.3.9",
49
49
  "@testing-library/react": "16.3.0"
@@ -73,5 +73,5 @@
73
73
  "publishConfig": {
74
74
  "registry": "https://npm.pkg.github.com/"
75
75
  },
76
- "gitHead": "b3a1d791df55536d6de78bb138b97224d6c0c70e"
76
+ "gitHead": "5fb6c32d2590e72e56a53cb180a155f84d6505d9"
77
77
  }