@@ -276,6 +276,65 @@ describe('Uploads', () => {
276276 await expect ( filename ) . toContainText ( 'test-image.png' )
277277 } )
278278
279+ test ( 'should preserve collection when bulk selecting polymorphic uploads' , async ( ) => {
280+ await page . goto ( uploadsTwo . create )
281+ await page . locator ( '#field-prefix' ) . fill ( 'video' )
282+ await page . locator ( '#field-title' ) . fill ( 'Polymorphic upload two' )
283+ await page . setInputFiles ( 'input[type="file"]' , path . resolve ( dirname , './image.png' ) )
284+ await saveDocAndAssert ( page )
285+
286+ const uploadTwoID = page . url ( ) . split ( '/' ) . pop ( )
287+ const relationDoc = await payload . create ( {
288+ collection : relationSlug ,
289+ data : { } ,
290+ } )
291+
292+ await page . goto ( relationURL . edit ( relationDoc . id ) )
293+ await openDocDrawer ( { page, selector : '#field-polymorphicUploads .upload__listToggler' } )
294+
295+ const listDrawer = page . locator ( '[id^=list-drawer_1_]' )
296+ await expect ( listDrawer ) . toBeVisible ( )
297+
298+ await listDrawer . locator ( '.list-header__select-collection' ) . click ( )
299+ await page . getByText ( 'Uploads 2' , { exact : true } ) . click ( )
300+ await expect (
301+ listDrawer . locator ( '.cell-title' , { hasText : 'Polymorphic upload two' } ) ,
302+ ) . toBeVisible ( )
303+
304+ await listDrawer
305+ . locator ( 'tr' , { hasText : 'Polymorphic upload two' } )
306+ . locator ( '.select-row__checkbox' )
307+ . click ( )
308+ await listDrawer . getByRole ( 'button' , { name : 'Select 1' } ) . click ( )
309+
310+ await saveDocAndAssert ( page )
311+
312+ const updatedRelationDoc = (
313+ await payload . find ( {
314+ collection : relationSlug ,
315+ depth : 0 ,
316+ where : {
317+ id : {
318+ equals : relationDoc . id ,
319+ } ,
320+ } ,
321+ } )
322+ ) . docs [ 0 ] as any
323+
324+ expect ( updatedRelationDoc . polymorphicUploads ) . toEqual ( [
325+ {
326+ relationTo : 'uploads-2' ,
327+ value : uploadTwoID ,
328+ } ,
329+ ] )
330+ expect ( updatedRelationDoc . polymorphicUploads ) . not . toEqual ( [
331+ {
332+ relationTo : 'uploads-1' ,
333+ value : uploadTwoID ,
334+ } ,
335+ ] )
336+ } )
337+
279338 test ( 'should copy the file url field to the clipboard' , async ( ) => {
280339 const mediaDoc = (
281340 await payload . find ( {
0 commit comments