@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.
- package/dist/cjs/FieldConnector.test.js +14 -13
- package/dist/cjs/hooks/useLocalePublishStatus.spec.js +11 -10
- package/dist/cjs/hooks/useReleaseStatus.spec.js +46 -45
- package/dist/cjs/utils/entityHelpers.test.js +83 -82
- package/dist/esm/FieldConnector.test.js +5 -4
- package/dist/esm/hooks/useLocalePublishStatus.spec.js +1 -0
- package/dist/esm/hooks/useReleaseStatus.spec.js +1 -0
- package/dist/esm/utils/entityHelpers.test.js +1 -0
- package/package.json +5 -5
|
@@ -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 =
|
|
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:
|
|
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:
|
|
91
|
+
getIsDisabled: _vitest.vi.fn().mockReturnValue(true)
|
|
91
92
|
};
|
|
92
93
|
}, 'initial value');
|
|
93
94
|
const props = {
|
|
94
95
|
isInitiallyDisabled: false,
|
|
95
|
-
children:
|
|
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 =
|
|
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:
|
|
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:
|
|
41
|
+
getIsDisabled: vi.fn().mockReturnValue(true)
|
|
41
42
|
};
|
|
42
43
|
}, 'initial value');
|
|
43
44
|
const props = {
|
|
44
45
|
isInitiallyDisabled: false,
|
|
45
|
-
children:
|
|
46
|
+
children: vi.fn().mockImplementation(()=>null),
|
|
46
47
|
field,
|
|
47
48
|
debounce: 0
|
|
48
49
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contentful/field-editor-shared",
|
|
3
|
-
"version": "4.4.
|
|
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": "
|
|
41
|
-
"test: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.
|
|
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": "
|
|
76
|
+
"gitHead": "5fb6c32d2590e72e56a53cb180a155f84d6505d9"
|
|
77
77
|
}
|