@@ -419,6 +419,86 @@ public function testComposesObjects(
419419 $ this ->assertEquals ($ destinationObject , $ object ->name ());
420420 }
421421
422+ public function testComposeWithDeleteSourceObjects ()
423+ {
424+ $ acl = 'private ' ;
425+ $ destinationObject = 'combined-files.txt ' ;
426+ $ this ->connection ->composeObject ([
427+ 'destinationBucket ' => self ::BUCKET_NAME ,
428+ 'destinationObject ' => $ destinationObject ,
429+ 'destinationPredefinedAcl ' => $ acl ,
430+ 'destination ' => ['contentType ' => 'text/plain ' ],
431+ 'sourceObjects ' => [['name ' => 'file1.txt ' ], ['name ' => 'file2.txt ' ]],
432+ 'deleteSourceObjects ' => true ,
433+ ])
434+ ->willReturn ([
435+ 'name ' => $ destinationObject ,
436+ 'generation ' => 1
437+ ])
438+ ->shouldBeCalledTimes (1 );
439+
440+ $ bucket = $ this ->getBucket ();
441+
442+ $ object = $ bucket ->compose (['file1.txt ' , 'file2.txt ' ], $ destinationObject , [
443+ 'predefinedAcl ' => $ acl ,
444+ 'deleteSourceObjects ' => true
445+ ]);
446+
447+ $ this ->assertEquals ($ destinationObject , $ object ->name ());
448+ }
449+
450+ public function testComposeWithDeleteSourceObjectsFalse ()
451+ {
452+ $ acl = 'private ' ;
453+ $ destinationObject = 'combined-files.txt ' ;
454+ $ this ->connection ->composeObject ([
455+ 'destinationBucket ' => self ::BUCKET_NAME ,
456+ 'destinationObject ' => $ destinationObject ,
457+ 'destinationPredefinedAcl ' => $ acl ,
458+ 'destination ' => ['contentType ' => 'text/plain ' ],
459+ 'sourceObjects ' => [['name ' => 'file1.txt ' ], ['name ' => 'file2.txt ' ]],
460+ ])
461+ ->willReturn ([
462+ 'name ' => $ destinationObject ,
463+ 'generation ' => 1
464+ ])
465+ ->shouldBeCalledTimes (1 );
466+ $ bucket = $ this ->getBucket ();
467+
468+ $ object = $ bucket ->compose (['file1.txt ' , 'file2.txt ' ], $ destinationObject , [
469+ 'predefinedAcl ' => $ acl ,
470+ 'deleteSourceObjects ' => false
471+ ]);
472+
473+ $ this ->assertEquals ($ destinationObject , $ object ->name ());
474+ }
475+
476+ public function testComposeWithDeleteSourceObjectsNull ()
477+ {
478+ $ acl = 'private ' ;
479+ $ destinationObject = 'combined-files.txt ' ;
480+ $ this ->connection ->composeObject ([
481+ 'destinationBucket ' => self ::BUCKET_NAME ,
482+ 'destinationObject ' => $ destinationObject ,
483+ 'destinationPredefinedAcl ' => $ acl ,
484+ 'destination ' => ['contentType ' => 'text/plain ' ],
485+ 'sourceObjects ' => [['name ' => 'file1.txt ' ], ['name ' => 'file2.txt ' ]],
486+ ])
487+ ->willReturn ([
488+ 'name ' => $ destinationObject ,
489+ 'generation ' => 1
490+ ])
491+ ->shouldBeCalledTimes (1 );
492+ $ bucket = $ this ->getBucket ();
493+
494+ $ object = $ bucket ->compose (['file1.txt ' , 'file2.txt ' ], $ destinationObject , [
495+ 'predefinedAcl ' => $ acl ,
496+ 'deleteSourceObjects ' => null
497+ ]);
498+
499+ $ this ->assertEquals ($ destinationObject , $ object ->name ());
500+ }
501+
422502 public function composeProvider ()
423503 {
424504 $ object1 = $ this ->prophesize (StorageObject::class);
0 commit comments