@@ -205,6 +205,116 @@ describe('Versions', () => {
205
205
await expect ( page . locator ( '#field-title' ) ) . toHaveValue ( 'v1' )
206
206
} )
207
207
208
+ test ( 'should show currently published version status in versions view' , async ( ) => {
209
+ const publishedDoc = await payload . create ( {
210
+ collection : draftCollectionSlug ,
211
+ data : {
212
+ _status : 'published' ,
213
+ title : 'title' ,
214
+ description : 'description' ,
215
+ } ,
216
+ overrideAccess : true ,
217
+ } )
218
+
219
+ await page . goto ( `${ url . edit ( publishedDoc . id ) } /versions` )
220
+ await expect ( page . locator ( 'main.versions' ) ) . toContainText ( 'Current Published Version' )
221
+ } )
222
+
223
+ test ( 'should show unpublished version status in versions view' , async ( ) => {
224
+ const publishedDoc = await payload . create ( {
225
+ collection : draftCollectionSlug ,
226
+ data : {
227
+ _status : 'published' ,
228
+ title : 'title' ,
229
+ description : 'description' ,
230
+ } ,
231
+ overrideAccess : true ,
232
+ } )
233
+
234
+ // Unpublish the document
235
+ await payload . update ( {
236
+ collection : draftCollectionSlug ,
237
+ id : publishedDoc . id ,
238
+ data : {
239
+ _status : 'draft' ,
240
+ } ,
241
+ draft : false ,
242
+ } )
243
+
244
+ await page . goto ( `${ url . edit ( publishedDoc . id ) } /versions` )
245
+ await expect ( page . locator ( 'main.versions' ) ) . toContainText ( 'Previously Published' )
246
+ } )
247
+
248
+ test ( 'should show global versions view level action in globals versions view' , async ( ) => {
249
+ const global = new AdminUrlUtil ( serverURL , draftGlobalSlug )
250
+ await page . goto ( `${ global . global ( draftGlobalSlug ) } /versions` )
251
+ await expect ( page . locator ( '.app-header .global-versions-button' ) ) . toHaveCount ( 1 )
252
+ } )
253
+
254
+ test ( 'global — has versions tab' , async ( ) => {
255
+ const global = new AdminUrlUtil ( serverURL , draftGlobalSlug )
256
+ await page . goto ( global . global ( draftGlobalSlug ) )
257
+
258
+ const docURL = page . url ( )
259
+ const pathname = new URL ( docURL ) . pathname
260
+
261
+ const versionsTab = page . locator ( '.doc-tab' , {
262
+ hasText : 'Versions' ,
263
+ } )
264
+ await versionsTab . waitFor ( { state : 'visible' } )
265
+
266
+ expect ( versionsTab ) . toBeTruthy ( )
267
+ const href = versionsTab . locator ( 'a' ) . first ( )
268
+ await expect ( href ) . toHaveAttribute ( 'href' , `${ pathname } /versions` )
269
+ } )
270
+
271
+ test ( 'global — respects max number of versions' , async ( ) => {
272
+ await payload . updateGlobal ( {
273
+ slug : draftWithMaxGlobalSlug ,
274
+ data : {
275
+ title : 'initial title' ,
276
+ } ,
277
+ } )
278
+
279
+ const global = new AdminUrlUtil ( serverURL , draftWithMaxGlobalSlug )
280
+ await page . goto ( global . global ( draftWithMaxGlobalSlug ) )
281
+
282
+ const titleFieldInitial = page . locator ( '#field-title' )
283
+ await titleFieldInitial . fill ( 'updated title' )
284
+ await saveDocAndAssert ( page , '#action-save-draft' )
285
+ await expect ( titleFieldInitial ) . toHaveValue ( 'updated title' )
286
+
287
+ const versionsTab = page . locator ( '.doc-tab' , {
288
+ hasText : '1' ,
289
+ } )
290
+
291
+ await versionsTab . waitFor ( { state : 'visible' } )
292
+
293
+ expect ( versionsTab ) . toBeTruthy ( )
294
+
295
+ const titleFieldUpdated = page . locator ( '#field-title' )
296
+ await titleFieldUpdated . fill ( 'latest title' )
297
+ await saveDocAndAssert ( page , '#action-save-draft' )
298
+ await expect ( titleFieldUpdated ) . toHaveValue ( 'latest title' )
299
+
300
+ const versionsTabUpdated = page . locator ( '.doc-tab' , {
301
+ hasText : '1' ,
302
+ } )
303
+
304
+ await versionsTabUpdated . waitFor ( { state : 'visible' } )
305
+
306
+ expect ( versionsTabUpdated ) . toBeTruthy ( )
307
+ } )
308
+
309
+ test ( 'global — has versions route' , async ( ) => {
310
+ const global = new AdminUrlUtil ( serverURL , autoSaveGlobalSlug )
311
+ const versionsURL = `${ global . global ( autoSaveGlobalSlug ) } /versions`
312
+ await page . goto ( versionsURL )
313
+ await expect ( ( ) => {
314
+ expect ( page . url ( ) ) . toMatch ( / \/ v e r s i o n s / )
315
+ } ) . toPass ( { timeout : 10000 , intervals : [ 100 ] } )
316
+ } )
317
+
208
318
test ( 'collection - should autosave' , async ( ) => {
209
319
await page . goto ( autosaveURL . create )
210
320
await page . locator ( '#field-title' ) . fill ( 'autosave title' )
0 commit comments