@@ -281,6 +281,94 @@ describe('File', function() {
281
281
} ) ;
282
282
} ) ;
283
283
284
+ describe ( 'move' , function ( ) {
285
+ it ( 'should throw if no destination is provided' , function ( ) {
286
+ assert . throws ( function ( ) {
287
+ file . move ( ) ;
288
+ } , / s h o u l d h a v e a n a m e / ) ;
289
+ } ) ;
290
+
291
+ describe ( 'copy to destination' , function ( ) {
292
+ function assertCopyFile ( file , expectedDestination , callback ) {
293
+ file . copy = function ( destination ) {
294
+ assert . equal ( destination , expectedDestination ) ;
295
+ callback ( ) ;
296
+ } ;
297
+ }
298
+
299
+ it ( 'should call copy with string' , function ( done ) {
300
+ var newFileName = 'new-file-name.png' ;
301
+ assertCopyFile ( file , newFileName , done ) ;
302
+ file . move ( newFileName ) ;
303
+ } ) ;
304
+
305
+ it ( 'should call copy with Bucket' , function ( done ) {
306
+ var newBucket = new Bucket ( { } , 'new-bucket' ) ;
307
+ assertCopyFile ( file , newBucket , done ) ;
308
+ file . move ( newBucket ) ;
309
+ } ) ;
310
+
311
+ it ( 'should call copy with File' , function ( done ) {
312
+ var newBucket = new Bucket ( { } , 'new-bucket' ) ;
313
+ var newFile = new File ( newBucket , 'new-file' ) ;
314
+ assertCopyFile ( file , newFile , done ) ;
315
+ file . move ( newFile ) ;
316
+ } ) ;
317
+
318
+ it ( 'should fail if copy fails' , function ( done ) {
319
+ var error = new Error ( 'Error.' ) ;
320
+ file . copy = function ( destination , callback ) {
321
+ callback ( error ) ;
322
+ } ;
323
+ file . move ( 'new-filename' , function ( err ) {
324
+ assert . equal ( err , error ) ;
325
+ done ( ) ;
326
+ } ) ;
327
+ } ) ;
328
+ } ) ;
329
+
330
+ describe ( 'delete original file' , function ( ) {
331
+ it ( 'should delete if copy is successful' , function ( done ) {
332
+ file . copy = function ( destination , callback ) {
333
+ callback ( null ) ;
334
+ } ;
335
+ file . delete = function ( ) {
336
+ assert . equal ( this , file ) ;
337
+ done ( ) ;
338
+ } ;
339
+ file . move ( 'new-filename' ) ;
340
+ } ) ;
341
+
342
+ it ( 'should not delete if copy fails' , function ( done ) {
343
+ var deleteCalled = false ;
344
+ file . copy = function ( destination , callback ) {
345
+ callback ( new Error ( 'Error.' ) ) ;
346
+ } ;
347
+ file . delete = function ( ) {
348
+ deleteCalled = true ;
349
+ } ;
350
+ file . move ( 'new-filename' , function ( ) {
351
+ assert . equal ( deleteCalled , false ) ;
352
+ done ( ) ;
353
+ } ) ;
354
+ } ) ;
355
+
356
+ it ( 'should fail if delete fails' , function ( done ) {
357
+ var error = new Error ( 'Error.' ) ;
358
+ file . copy = function ( destination , callback ) {
359
+ callback ( ) ;
360
+ } ;
361
+ file . delete = function ( callback ) {
362
+ callback ( error ) ;
363
+ } ;
364
+ file . move ( 'new-filename' , function ( err ) {
365
+ assert . equal ( err , error ) ;
366
+ done ( ) ;
367
+ } ) ;
368
+ } ) ;
369
+ } ) ;
370
+ } ) ;
371
+
284
372
describe ( 'createReadStream' , function ( ) {
285
373
it ( 'should create an authorized request' , function ( done ) {
286
374
var expectedPath = util . format ( 'https://{b}.storage.googleapis.com/{o}' , {
0 commit comments