@@ -659,6 +659,89 @@ describe('Media field', () => {
659659 } )
660660 } )
661661 } )
662+
663+ it ( 'should resolve a legacy value created by a Reference field' , done => {
664+ client
665+ . post ( '/media/upload' )
666+ . set ( 'content-type' , 'application/json' )
667+ . set ( 'Authorization' , `Bearer ${ bearerToken } ` )
668+ . attach ( 'avatar' , 'test/acceptance/temp-workspace/media/1f525.png' )
669+ . end ( ( err , res ) => {
670+ let mediaObject = res . body . results [ 0 ]
671+ let payload = {
672+ title : 'Media support in DADI API' ,
673+ legacyImage : mediaObject . _id
674+ }
675+
676+ client
677+ . post ( '/vtest/testdb/test-schema' )
678+ . set ( 'content-type' , 'application/json' )
679+ . set ( 'Authorization' , `Bearer ${ bearerToken } ` )
680+ . send ( payload )
681+ . end ( ( err , res ) => {
682+ let { results} = res . body
683+
684+ results . should . be . instanceOf ( Array )
685+ results . length . should . eql ( 1 )
686+ results [ 0 ] . title . should . eql ( payload . title )
687+ results [ 0 ] . legacyImage . _id . should . eql ( mediaObject . _id )
688+ results [ 0 ] . legacyImage . fileName . should . eql ( '1f525.png' )
689+ results [ 0 ] . _composed . legacyImage . should . eql ( mediaObject . _id )
690+
691+ client
692+ . get ( `/vtest/testdb/test-schema/${ results [ 0 ] . _id } ?compose=true` )
693+ . set ( 'content-type' , 'application/json' )
694+ . set ( 'Authorization' , `Bearer ${ bearerToken } ` )
695+ . end ( ( err , res ) => {
696+ let { results} = res . body
697+
698+ results . should . be . instanceOf ( Array )
699+ results . length . should . eql ( 1 )
700+ results [ 0 ] . title . should . eql ( payload . title )
701+ results [ 0 ] . legacyImage . _id . should . eql ( mediaObject . _id )
702+ results [ 0 ] . legacyImage . fileName . should . eql ( '1f525.png' )
703+ results [ 0 ] . _composed . legacyImage . should . eql ( mediaObject . _id )
704+
705+ let collectionSchemaPath = path . join (
706+ __dirname ,
707+ '/../temp-workspace/collections/vtest/testdb/collection.test-schema.json'
708+ )
709+ let collectionSchema = require ( collectionSchemaPath )
710+
711+ // Convert the field to use the Media type.
712+ collectionSchema . fields . legacyImage . type = 'Media'
713+ delete collectionSchema . fields . legacyImage . settings
714+
715+ help . writeTempFile (
716+ collectionSchemaPath ,
717+ JSON . stringify ( collectionSchema , null , 2 ) ,
718+ restoreCollection => {
719+ setTimeout ( ( ) => {
720+ client
721+ . get ( `/vtest/testdb/test-schema/${ results [ 0 ] . _id } ?cache=false` )
722+ . set ( 'content-type' , 'application/json' )
723+ . set ( 'Authorization' , `Bearer ${ bearerToken } ` )
724+ . end ( ( err , res ) => {
725+ let { results} = res . body
726+
727+ results . should . be . instanceOf ( Array )
728+ results . length . should . eql ( 1 )
729+ results [ 0 ] . title . should . eql ( payload . title )
730+ results [ 0 ] . legacyImage . _id . should . eql ( mediaObject . _id )
731+ results [ 0 ] . legacyImage . fileName . should . eql ( '1f525.png' )
732+ results [ 0 ] . _composed . legacyImage . should . eql ( mediaObject . _id )
733+
734+ restoreCollection ( )
735+
736+ done ( err )
737+ } )
738+ } , 1000 )
739+ }
740+ )
741+ } )
742+ } )
743+ } )
744+ } )
662745 } )
663746
664747 describe ( 'PUT' , ( ) => {
0 commit comments