@contentful/field-editor-shared 2.11.2 → 2.12.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/LocalePublishingEntityStatusBadge/LocalePublishingPopover.js +2 -1
- package/dist/cjs/ReleaseEntityStatusBadge/ReleaseEntityStatusPopover.js +2 -1
- package/dist/cjs/hooks/useActiveReleaseLocalesStatuses.js +13 -10
- package/dist/cjs/hooks/useActiveReleaseLocalesStatuses.spec.js +236 -245
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/utils/{getEntryReleaseStatus.js → getEntityReleaseStatus.js} +4 -4
- package/dist/cjs/utils/{getPreviousReleaseEntryVersion.js → getPreviousReleaseEntity.js} +5 -5
- package/dist/esm/LocalePublishingEntityStatusBadge/LocalePublishingPopover.js +3 -2
- package/dist/esm/ReleaseEntityStatusBadge/ReleaseEntityStatusPopover.js +3 -2
- package/dist/esm/hooks/useActiveReleaseLocalesStatuses.js +13 -10
- package/dist/esm/hooks/useActiveReleaseLocalesStatuses.spec.js +236 -245
- package/dist/esm/index.js +1 -1
- package/dist/esm/utils/{getEntryReleaseStatus.js → getEntityReleaseStatus.js} +2 -2
- package/dist/esm/utils/{getPreviousReleaseEntryVersion.js → getPreviousReleaseEntity.js} +3 -3
- package/dist/types/LocalePublishingEntityStatusBadge/LocalePublishingPopover.d.ts +1 -1
- package/dist/types/hooks/useActiveReleaseLocalesStatuses.d.ts +5 -4
- package/dist/types/index.d.ts +1 -1
- package/dist/types/types.d.ts +2 -2
- package/dist/types/utils/{getEntryReleaseStatus.d.ts → getEntityReleaseStatus.d.ts} +2 -2
- package/dist/types/utils/{getPreviousReleaseEntryVersion.d.ts → getPreviousReleaseEntity.d.ts} +3 -2
- package/package.json +2 -2
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { renderHook } from '@testing-library/react';
|
|
2
|
-
import {
|
|
2
|
+
import { getPreviousReleaseEntity } from '../utils/getPreviousReleaseEntity';
|
|
3
3
|
import { useActiveReleaseLocalesStatuses } from './useActiveReleaseLocalesStatuses';
|
|
4
|
-
const buildEntry = (status)=>({
|
|
4
|
+
const buildEntry = (status, id = 'entry-1')=>({
|
|
5
5
|
sys: {
|
|
6
|
+
id,
|
|
7
|
+
type: 'Entry',
|
|
6
8
|
fieldStatus: {
|
|
7
9
|
'*': {
|
|
8
10
|
'en-US': status
|
|
@@ -10,17 +12,28 @@ const buildEntry = (status)=>({
|
|
|
10
12
|
}
|
|
11
13
|
}
|
|
12
14
|
});
|
|
13
|
-
const
|
|
15
|
+
const buildAsset = (status, id = 'asset-1')=>({
|
|
16
|
+
sys: {
|
|
17
|
+
id,
|
|
18
|
+
type: 'Asset',
|
|
19
|
+
fieldStatus: {
|
|
20
|
+
'*': {
|
|
21
|
+
'en-US': status
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
const createEntryBasedReleaseEntity = ({ entityId = 'entry-1', action = 'publish', entityType = 'Entry' })=>({
|
|
14
27
|
entity: {
|
|
15
28
|
sys: {
|
|
16
29
|
type: 'Link',
|
|
17
|
-
linkType:
|
|
18
|
-
id:
|
|
30
|
+
linkType: entityType,
|
|
31
|
+
id: entityId
|
|
19
32
|
}
|
|
20
33
|
},
|
|
21
34
|
action
|
|
22
35
|
});
|
|
23
|
-
const createEntryBasedRelease = ({
|
|
36
|
+
const createEntryBasedRelease = ({ entityId, action, entityType = 'Entry' } = {})=>({
|
|
24
37
|
title: 'Release 1',
|
|
25
38
|
sys: {
|
|
26
39
|
id: 'release-1',
|
|
@@ -30,18 +43,19 @@ const createEntryBasedRelease = ({ entryId, action } = {})=>({
|
|
|
30
43
|
entities: {
|
|
31
44
|
items: [
|
|
32
45
|
createEntryBasedReleaseEntity({
|
|
33
|
-
|
|
34
|
-
action
|
|
46
|
+
entityId,
|
|
47
|
+
action,
|
|
48
|
+
entityType
|
|
35
49
|
})
|
|
36
50
|
]
|
|
37
51
|
}
|
|
38
52
|
});
|
|
39
|
-
const createLocaleBasedReleaseEntity = ({
|
|
53
|
+
const createLocaleBasedReleaseEntity = ({ entityId = 'entry-1', verb = 'add', entityType = 'Entry' })=>({
|
|
40
54
|
entity: {
|
|
41
55
|
sys: {
|
|
42
56
|
type: 'Link',
|
|
43
|
-
linkType:
|
|
44
|
-
id:
|
|
57
|
+
linkType: entityType,
|
|
58
|
+
id: entityId
|
|
45
59
|
}
|
|
46
60
|
},
|
|
47
61
|
[verb]: {
|
|
@@ -52,7 +66,7 @@ const createLocaleBasedReleaseEntity = ({ entryId = 'entry-1', verb = 'add' })=>
|
|
|
52
66
|
}
|
|
53
67
|
}
|
|
54
68
|
});
|
|
55
|
-
const createLocaleBasedRelease = ({
|
|
69
|
+
const createLocaleBasedRelease = ({ entityId, verb, entityType = 'Entry' } = {})=>({
|
|
56
70
|
title: 'Release 1',
|
|
57
71
|
sys: {
|
|
58
72
|
id: 'release-1',
|
|
@@ -62,263 +76,240 @@ const createLocaleBasedRelease = ({ entryId, verb } = {})=>({
|
|
|
62
76
|
entities: {
|
|
63
77
|
items: [
|
|
64
78
|
createLocaleBasedReleaseEntity({
|
|
65
|
-
|
|
66
|
-
verb
|
|
79
|
+
entityId,
|
|
80
|
+
verb,
|
|
81
|
+
entityType
|
|
67
82
|
})
|
|
68
83
|
]
|
|
69
84
|
}
|
|
70
85
|
});
|
|
71
|
-
jest.mock('../utils/
|
|
72
|
-
|
|
86
|
+
jest.mock('../utils/getPreviousReleaseEntity', ()=>({
|
|
87
|
+
getPreviousReleaseEntity: jest.fn()
|
|
73
88
|
}));
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
code: 'en-US'
|
|
79
|
-
}
|
|
80
|
-
],
|
|
81
|
-
isActiveReleaseLoading: false,
|
|
82
|
-
releaseVersionMap: new Map(),
|
|
83
|
-
releases: {
|
|
84
|
-
items: []
|
|
85
|
-
}
|
|
86
|
-
};
|
|
89
|
+
const ENTITY_TYPES = [
|
|
90
|
+
'Entry',
|
|
91
|
+
'Asset'
|
|
92
|
+
];
|
|
87
93
|
describe('useActiveReleaseLocalesStatuses', ()=>{
|
|
88
94
|
beforeEach(()=>{
|
|
89
95
|
jest.clearAllMocks();
|
|
90
96
|
});
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
previousEntryVersion: {
|
|
99
|
-
sys: {
|
|
100
|
-
fieldStatus: {
|
|
101
|
-
'*': {
|
|
102
|
-
'en-US': 'draft'
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
|
|
109
|
-
...baseParams,
|
|
110
|
-
activeRelease: createEntryBasedRelease(),
|
|
111
|
-
currentEntryDraft: buildEntry('draft')
|
|
112
|
-
}));
|
|
113
|
-
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
114
|
-
variant: 'positive',
|
|
115
|
-
status: 'willPublish',
|
|
116
|
-
label: 'Will publish',
|
|
117
|
-
locale: {
|
|
97
|
+
ENTITY_TYPES.forEach((entityType)=>{
|
|
98
|
+
const entityId = entityType === 'Entry' ? 'entry-1' : 'asset-1';
|
|
99
|
+
const baseParams = {
|
|
100
|
+
entityId,
|
|
101
|
+
entityType,
|
|
102
|
+
locales: [
|
|
103
|
+
{
|
|
118
104
|
code: 'en-US'
|
|
119
105
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
106
|
+
],
|
|
107
|
+
isActiveReleaseLoading: false,
|
|
108
|
+
releaseVersionMap: new Map(),
|
|
109
|
+
releases: {
|
|
110
|
+
items: []
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
describe(`${entityType} with entry based publishing`, ()=>{
|
|
114
|
+
it('returns Will publish status when active release has publish action', ()=>{
|
|
115
|
+
getPreviousReleaseEntity.mockReturnValue({
|
|
116
|
+
previousReleaseEntity: createEntryBasedReleaseEntity({
|
|
117
|
+
entityId,
|
|
118
|
+
action: 'unpublish',
|
|
119
|
+
entityType
|
|
120
|
+
})
|
|
121
|
+
});
|
|
122
|
+
const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
|
|
123
|
+
...baseParams,
|
|
124
|
+
activeRelease: createEntryBasedRelease({
|
|
125
|
+
entityId,
|
|
126
|
+
entityType
|
|
127
|
+
}),
|
|
128
|
+
currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
|
|
129
|
+
}));
|
|
130
|
+
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
131
|
+
variant: 'positive',
|
|
132
|
+
status: 'willPublish',
|
|
133
|
+
label: 'Will publish',
|
|
134
|
+
locale: {
|
|
135
|
+
code: 'en-US'
|
|
135
136
|
}
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
|
|
139
|
-
...baseParams,
|
|
140
|
-
activeRelease: createEntryBasedRelease({
|
|
141
|
-
action: 'unpublish'
|
|
142
|
-
}),
|
|
143
|
-
currentEntryDraft: buildEntry('published')
|
|
144
|
-
}));
|
|
145
|
-
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
146
|
-
variant: 'warning',
|
|
147
|
-
status: 'becomesDraft',
|
|
148
|
-
label: 'Becomes draft',
|
|
149
|
-
locale: {
|
|
150
|
-
code: 'en-US'
|
|
151
|
-
}
|
|
137
|
+
});
|
|
152
138
|
});
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
139
|
+
it('returns Becomes draft status when previous version has published locales and active version has unpublish action', ()=>{
|
|
140
|
+
getPreviousReleaseEntity.mockReturnValue({
|
|
141
|
+
previousReleaseEntity: createEntryBasedReleaseEntity({
|
|
142
|
+
entityId,
|
|
143
|
+
action: 'publish',
|
|
144
|
+
entityType
|
|
145
|
+
})
|
|
146
|
+
});
|
|
147
|
+
const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
|
|
148
|
+
...baseParams,
|
|
149
|
+
activeRelease: createEntryBasedRelease({
|
|
150
|
+
action: 'unpublish',
|
|
151
|
+
entityId,
|
|
152
|
+
entityType
|
|
153
|
+
}),
|
|
154
|
+
currentEntityDraft: entityType === 'Entry' ? buildEntry('published') : buildAsset('published')
|
|
155
|
+
}));
|
|
156
|
+
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
157
|
+
variant: 'warning',
|
|
158
|
+
status: 'becomesDraft',
|
|
159
|
+
label: 'Becomes draft',
|
|
160
|
+
locale: {
|
|
161
|
+
code: 'en-US'
|
|
166
162
|
}
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
|
|
170
|
-
...baseParams,
|
|
171
|
-
activeRelease: createEntryBasedRelease({
|
|
172
|
-
action: 'unpublish'
|
|
173
|
-
}),
|
|
174
|
-
currentEntryDraft: buildEntry('draft')
|
|
175
|
-
}));
|
|
176
|
-
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
177
|
-
variant: 'secondary',
|
|
178
|
-
status: 'remainsDraft',
|
|
179
|
-
label: 'Remains draft',
|
|
180
|
-
locale: {
|
|
181
|
-
code: 'en-US'
|
|
182
|
-
}
|
|
163
|
+
});
|
|
183
164
|
});
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
});
|
|
208
|
-
describe('with locale based publishing', ()=>{
|
|
209
|
-
it('returns Will publish status when active release has publish action', ()=>{
|
|
210
|
-
getPreviousReleaseEntryVersion.mockReturnValue({
|
|
211
|
-
previousReleaseEntity: createLocaleBasedReleaseEntity({
|
|
212
|
-
entryId: 'entry-1',
|
|
213
|
-
verb: 'remove'
|
|
214
|
-
}),
|
|
215
|
-
previousEntryVersion: {
|
|
216
|
-
sys: {
|
|
217
|
-
fieldStatus: {
|
|
218
|
-
'*': {
|
|
219
|
-
'en-US': 'draft'
|
|
220
|
-
}
|
|
221
|
-
}
|
|
165
|
+
it('returns Remains draft status when previous version has draft locales and active version has unpublish action', ()=>{
|
|
166
|
+
getPreviousReleaseEntity.mockReturnValue({
|
|
167
|
+
previousReleaseEntity: createEntryBasedReleaseEntity({
|
|
168
|
+
action: 'unpublish',
|
|
169
|
+
entityType,
|
|
170
|
+
entityId
|
|
171
|
+
})
|
|
172
|
+
});
|
|
173
|
+
const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
|
|
174
|
+
...baseParams,
|
|
175
|
+
activeRelease: createEntryBasedRelease({
|
|
176
|
+
action: 'unpublish',
|
|
177
|
+
entityId,
|
|
178
|
+
entityType
|
|
179
|
+
}),
|
|
180
|
+
currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
|
|
181
|
+
}));
|
|
182
|
+
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
183
|
+
variant: 'secondary',
|
|
184
|
+
status: 'remainsDraft',
|
|
185
|
+
label: 'Remains draft',
|
|
186
|
+
locale: {
|
|
187
|
+
code: 'en-US'
|
|
222
188
|
}
|
|
223
|
-
}
|
|
224
|
-
});
|
|
225
|
-
const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
|
|
226
|
-
...baseParams,
|
|
227
|
-
activeRelease: createLocaleBasedRelease(),
|
|
228
|
-
currentEntryDraft: buildEntry('draft')
|
|
229
|
-
}));
|
|
230
|
-
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
231
|
-
variant: 'positive',
|
|
232
|
-
status: 'willPublish',
|
|
233
|
-
label: 'Will publish',
|
|
234
|
-
locale: {
|
|
235
|
-
code: 'en-US'
|
|
236
|
-
}
|
|
189
|
+
});
|
|
237
190
|
});
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
191
|
+
it('returns Not in release status when entity is not in the release', ()=>{
|
|
192
|
+
getPreviousReleaseEntity.mockReturnValue({
|
|
193
|
+
previousReleaseEntity: undefined
|
|
194
|
+
});
|
|
195
|
+
const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
|
|
196
|
+
...baseParams,
|
|
197
|
+
activeRelease: createEntryBasedRelease({
|
|
198
|
+
entityId: entityType === 'Entry' ? 'entry-2' : 'asset-2',
|
|
199
|
+
action: 'publish',
|
|
200
|
+
entityType
|
|
201
|
+
}),
|
|
202
|
+
currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
|
|
203
|
+
}));
|
|
204
|
+
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
205
|
+
variant: 'secondary',
|
|
206
|
+
status: 'notInRelease',
|
|
207
|
+
label: 'Not in release',
|
|
208
|
+
locale: {
|
|
209
|
+
code: 'en-US'
|
|
252
210
|
}
|
|
253
|
-
}
|
|
254
|
-
});
|
|
255
|
-
const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
|
|
256
|
-
...baseParams,
|
|
257
|
-
activeRelease: createLocaleBasedRelease({
|
|
258
|
-
verb: 'remove'
|
|
259
|
-
}),
|
|
260
|
-
currentEntryDraft: buildEntry('published')
|
|
261
|
-
}));
|
|
262
|
-
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
263
|
-
variant: 'warning',
|
|
264
|
-
status: 'becomesDraft',
|
|
265
|
-
label: 'Becomes draft',
|
|
266
|
-
locale: {
|
|
267
|
-
code: 'en-US'
|
|
268
|
-
}
|
|
211
|
+
});
|
|
269
212
|
});
|
|
270
213
|
});
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
214
|
+
describe(`${entityType} with locale based publishing`, ()=>{
|
|
215
|
+
it('returns Will publish status when active release has publish action', ()=>{
|
|
216
|
+
getPreviousReleaseEntity.mockReturnValue({
|
|
217
|
+
previousReleaseEntity: createLocaleBasedReleaseEntity({
|
|
218
|
+
entityId,
|
|
219
|
+
verb: 'remove',
|
|
220
|
+
entityType
|
|
221
|
+
})
|
|
222
|
+
});
|
|
223
|
+
const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
|
|
224
|
+
...baseParams,
|
|
225
|
+
activeRelease: createLocaleBasedRelease({
|
|
226
|
+
entityId,
|
|
227
|
+
entityType
|
|
228
|
+
}),
|
|
229
|
+
currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
|
|
230
|
+
}));
|
|
231
|
+
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
232
|
+
variant: 'positive',
|
|
233
|
+
status: 'willPublish',
|
|
234
|
+
label: 'Will publish',
|
|
235
|
+
locale: {
|
|
236
|
+
code: 'en-US'
|
|
283
237
|
}
|
|
284
|
-
}
|
|
238
|
+
});
|
|
285
239
|
});
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
240
|
+
it('returns Becomes draft status when previous version has published locales and active version has unpublish action', ()=>{
|
|
241
|
+
getPreviousReleaseEntity.mockReturnValue({
|
|
242
|
+
previousReleaseEntity: createLocaleBasedReleaseEntity({
|
|
243
|
+
entityId: 'entry-1',
|
|
244
|
+
verb: 'add',
|
|
245
|
+
entityType
|
|
246
|
+
})
|
|
247
|
+
});
|
|
248
|
+
const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
|
|
249
|
+
...baseParams,
|
|
250
|
+
activeRelease: createLocaleBasedRelease({
|
|
251
|
+
verb: 'remove',
|
|
252
|
+
entityId,
|
|
253
|
+
entityType
|
|
254
|
+
}),
|
|
255
|
+
currentEntityDraft: entityType === 'Entry' ? buildEntry('published') : buildAsset('published')
|
|
256
|
+
}));
|
|
257
|
+
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
258
|
+
variant: 'warning',
|
|
259
|
+
status: 'becomesDraft',
|
|
260
|
+
label: 'Becomes draft',
|
|
261
|
+
locale: {
|
|
262
|
+
code: 'en-US'
|
|
263
|
+
}
|
|
264
|
+
});
|
|
300
265
|
});
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
266
|
+
it('returns Remains draft status when previous version has draft locales and active version has unpublish action', ()=>{
|
|
267
|
+
getPreviousReleaseEntity.mockReturnValue({
|
|
268
|
+
previousReleaseEntity: createLocaleBasedReleaseEntity({
|
|
269
|
+
verb: 'remove',
|
|
270
|
+
entityId,
|
|
271
|
+
entityType
|
|
272
|
+
})
|
|
273
|
+
});
|
|
274
|
+
const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
|
|
275
|
+
...baseParams,
|
|
276
|
+
activeRelease: createLocaleBasedRelease({
|
|
277
|
+
verb: 'remove',
|
|
278
|
+
entityId,
|
|
279
|
+
entityType
|
|
280
|
+
}),
|
|
281
|
+
currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
|
|
282
|
+
}));
|
|
283
|
+
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
284
|
+
variant: 'secondary',
|
|
285
|
+
status: 'remainsDraft',
|
|
286
|
+
label: 'Remains draft',
|
|
287
|
+
locale: {
|
|
288
|
+
code: 'en-US'
|
|
289
|
+
}
|
|
290
|
+
});
|
|
306
291
|
});
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
292
|
+
it('returns Not in release status when entry is not in the release', ()=>{
|
|
293
|
+
getPreviousReleaseEntity.mockReturnValue({
|
|
294
|
+
previousReleaseEntity: undefined
|
|
295
|
+
});
|
|
296
|
+
const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
|
|
297
|
+
...baseParams,
|
|
298
|
+
activeRelease: createLocaleBasedRelease({
|
|
299
|
+
entityId: entityType === 'Entry' ? 'entry-2' : 'asset-2',
|
|
300
|
+
entityType,
|
|
301
|
+
verb: 'add'
|
|
302
|
+
}),
|
|
303
|
+
currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
|
|
304
|
+
}));
|
|
305
|
+
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
306
|
+
variant: 'secondary',
|
|
307
|
+
status: 'notInRelease',
|
|
308
|
+
label: 'Not in release',
|
|
309
|
+
locale: {
|
|
310
|
+
code: 'en-US'
|
|
311
|
+
}
|
|
312
|
+
});
|
|
322
313
|
});
|
|
323
314
|
});
|
|
324
315
|
});
|
package/dist/esm/index.js
CHANGED
|
@@ -18,5 +18,5 @@ export * from './hooks/useLocalePublishStatus';
|
|
|
18
18
|
export * from './LocalePublishingEntityStatusBadge';
|
|
19
19
|
export * from './ReleaseEntityStatusBadge';
|
|
20
20
|
export * from './utils/determineReleaseAction';
|
|
21
|
-
export * from './utils/
|
|
21
|
+
export * from './utils/getEntityReleaseStatus';
|
|
22
22
|
export * from './utils/parseReleaseParameters';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { determineReleaseAction } from './determineReleaseAction';
|
|
2
|
-
export function
|
|
3
|
-
const { releaseAction, entityItem, addLocales, removeLocales } = determineReleaseAction(
|
|
2
|
+
export function getEntityReleaseStatus(entityId, locales, release) {
|
|
3
|
+
const { releaseAction, entityItem, addLocales, removeLocales } = determineReleaseAction(entityId, release);
|
|
4
4
|
if (releaseAction === 'not-in-release' || !entityItem) {
|
|
5
5
|
return {
|
|
6
6
|
releaseAction
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { compareAsc } from 'date-fns';
|
|
2
|
-
export function
|
|
2
|
+
export function getPreviousReleaseEntity({ entityId, entityType, releaseVersionMap, activeRelease, releases }) {
|
|
3
3
|
const orderedScheduledReleases = releases?.items.filter((r)=>r.startDate).sort((a, b)=>compareAsc(new Date(a.startDate), new Date(b.startDate)));
|
|
4
4
|
const indexOfActive = orderedScheduledReleases?.findIndex((r)=>r.sys.id === activeRelease?.sys.id);
|
|
5
5
|
let previousRelease;
|
|
@@ -7,10 +7,10 @@ export function getPreviousReleaseEntryVersion({ entryId, releaseVersionMap, act
|
|
|
7
7
|
if (indexOfActive && indexOfActive > 0) {
|
|
8
8
|
for(let i = indexOfActive - 1; i >= 0; i--){
|
|
9
9
|
const release = orderedScheduledReleases[i];
|
|
10
|
-
const action = releaseVersionMap.get(
|
|
10
|
+
const action = releaseVersionMap.get(entityId)?.get(release.sys.id);
|
|
11
11
|
if (action !== 'not-in-release') {
|
|
12
12
|
previousRelease = release;
|
|
13
|
-
previousReleaseEntity = release.entities.items.find((e)=>e.entity.sys.id ===
|
|
13
|
+
previousReleaseEntity = release.entities.items.find((e)=>e.entity.sys.id === entityId && e.entity.sys.linkType === entityType);
|
|
14
14
|
break;
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -8,5 +8,5 @@ type LocalePublishingPopoverProps = {
|
|
|
8
8
|
activeLocales?: Pick<LocaleProps, 'code'>[];
|
|
9
9
|
localesStatusMap?: LocalePublishStatusMap;
|
|
10
10
|
};
|
|
11
|
-
export declare function LocalePublishingPopover({ entity, jobs, isScheduled, localesStatusMap, activeLocales }: LocalePublishingPopoverProps): React.JSX.Element;
|
|
11
|
+
export declare function LocalePublishingPopover({ entity, jobs, isScheduled, localesStatusMap, activeLocales, }: LocalePublishingPopoverProps): React.JSX.Element;
|
|
12
12
|
export {};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { ReleaseAction, ReleaseLocalesStatusMap } from '@contentful/field-editor-shared';
|
|
2
|
-
import type { CollectionProp, EntryProps, LocaleProps } from 'contentful-management/types';
|
|
2
|
+
import type { AssetProps, CollectionProp, EntryProps, LocaleProps } from 'contentful-management/types';
|
|
3
3
|
import type { ReleaseV2Props } from '../types';
|
|
4
|
-
export declare const useActiveReleaseLocalesStatuses: ({
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
export declare const useActiveReleaseLocalesStatuses: ({ currentEntityDraft, entityId, entityType, releaseVersionMap, locales, activeRelease, releases, }: {
|
|
5
|
+
currentEntityDraft: EntryProps | AssetProps;
|
|
6
|
+
entityId: string;
|
|
7
|
+
entityType: 'Entry' | 'Asset';
|
|
7
8
|
releaseVersionMap: Map<string, Map<string, ReleaseAction>>;
|
|
8
9
|
locales: LocaleProps[];
|
|
9
10
|
activeRelease: ReleaseV2Props | undefined;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -20,5 +20,5 @@ export * from './hooks/useLocalePublishStatus';
|
|
|
20
20
|
export * from './LocalePublishingEntityStatusBadge';
|
|
21
21
|
export * from './ReleaseEntityStatusBadge';
|
|
22
22
|
export * from './utils/determineReleaseAction';
|
|
23
|
-
export * from './utils/
|
|
23
|
+
export * from './utils/getEntityReleaseStatus';
|
|
24
24
|
export * from './utils/parseReleaseParameters';
|
package/dist/types/types.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export type ReleaseV2Entity = {
|
|
|
16
16
|
entity: {
|
|
17
17
|
sys: {
|
|
18
18
|
type: 'Link';
|
|
19
|
-
linkType: 'Entry';
|
|
19
|
+
linkType: 'Entry' | 'Asset';
|
|
20
20
|
id: string;
|
|
21
21
|
};
|
|
22
22
|
};
|
|
@@ -26,7 +26,7 @@ export type ReleaseV2EntityWithLocales = {
|
|
|
26
26
|
entity: {
|
|
27
27
|
sys: {
|
|
28
28
|
type: 'Link';
|
|
29
|
-
linkType: 'Entry';
|
|
29
|
+
linkType: 'Entry' | 'Asset';
|
|
30
30
|
id: string;
|
|
31
31
|
};
|
|
32
32
|
};
|