@@ -3405,7 +3405,7 @@ describe('saveFile hooks', () => {
34053405 it ( 'beforeSaveFile should return file that is already saved and not save anything to files adapter' , async ( ) => {
34063406 await reconfigureServer ( { filesAdapter : mockAdapter } ) ;
34073407 const createFileSpy = spyOn ( mockAdapter , 'createFile' ) . and . callThrough ( ) ;
3408- Parse . Cloud . beforeSaveFile ( ( ) => {
3408+ Parse . Cloud . beforeSave ( Parse . File , ( ) => {
34093409 const newFile = new Parse . File ( 'some-file.txt' ) ;
34103410 newFile . _url = 'http://www.somewhere.com/parse/files/some-app-id/some-file.txt' ;
34113411 return newFile ;
@@ -3420,7 +3420,7 @@ describe('saveFile hooks', () => {
34203420
34213421 it ( 'beforeSaveFile should throw error' , async ( ) => {
34223422 await reconfigureServer ( { filesAdapter : mockAdapter } ) ;
3423- Parse . Cloud . beforeSaveFile ( ( ) => {
3423+ Parse . Cloud . beforeSave ( Parse . File , ( ) => {
34243424 throw new Parse . Error ( 400 , 'some-error-message' ) ;
34253425 } ) ;
34263426 const file = new Parse . File ( 'popeye.txt' , [ 1 , 2 , 3 ] , 'text/plain' ) ;
@@ -3434,8 +3434,8 @@ describe('saveFile hooks', () => {
34343434 it ( 'beforeSaveFile should change values of uploaded file by editing fileObject directly' , async ( ) => {
34353435 await reconfigureServer ( { filesAdapter : mockAdapter } ) ;
34363436 const createFileSpy = spyOn ( mockAdapter , 'createFile' ) . and . callThrough ( ) ;
3437- Parse . Cloud . beforeSaveFile ( async req => {
3438- expect ( req . triggerName ) . toEqual ( 'beforeSaveFile ' ) ;
3437+ Parse . Cloud . beforeSave ( Parse . File , async req => {
3438+ expect ( req . triggerName ) . toEqual ( 'beforeSave ' ) ;
34393439 expect ( req . master ) . toBe ( true ) ;
34403440 req . file . addMetadata ( 'foo' , 'bar' ) ;
34413441 req . file . addTag ( 'tagA' , 'some-tag' ) ;
@@ -3463,8 +3463,8 @@ describe('saveFile hooks', () => {
34633463 it ( 'beforeSaveFile should change values by returning new fileObject' , async ( ) => {
34643464 await reconfigureServer ( { filesAdapter : mockAdapter } ) ;
34653465 const createFileSpy = spyOn ( mockAdapter , 'createFile' ) . and . callThrough ( ) ;
3466- Parse . Cloud . beforeSaveFile ( async req => {
3467- expect ( req . triggerName ) . toEqual ( 'beforeSaveFile ' ) ;
3466+ Parse . Cloud . beforeSave ( Parse . File , async req => {
3467+ expect ( req . triggerName ) . toEqual ( 'beforeSave ' ) ;
34683468 expect ( req . fileSize ) . toBe ( 3 ) ;
34693469 const newFile = new Parse . File ( 'donald_duck.pdf' , [ 4 , 5 , 6 ] , 'application/pdf' ) ;
34703470 newFile . setMetadata ( { foo : 'bar' } ) ;
@@ -3497,8 +3497,8 @@ describe('saveFile hooks', () => {
34973497 it ( 'beforeSaveFile should contain metadata and tags saved from client' , async ( ) => {
34983498 await reconfigureServer ( { filesAdapter : mockAdapter } ) ;
34993499 const createFileSpy = spyOn ( mockAdapter , 'createFile' ) . and . callThrough ( ) ;
3500- Parse . Cloud . beforeSaveFile ( async req => {
3501- expect ( req . triggerName ) . toEqual ( 'beforeSaveFile ' ) ;
3500+ Parse . Cloud . beforeSave ( Parse . File , async req => {
3501+ expect ( req . triggerName ) . toEqual ( 'beforeSave ' ) ;
35023502 expect ( req . fileSize ) . toBe ( 3 ) ;
35033503 expect ( req . file ) . toBeInstanceOf ( Parse . File ) ;
35043504 expect ( req . file . name ( ) ) . toBe ( 'popeye.txt' ) ;
@@ -3526,7 +3526,7 @@ describe('saveFile hooks', () => {
35263526 await reconfigureServer ( { filesAdapter : mockAdapter } ) ;
35273527 const config = Config . get ( 'test' ) ;
35283528 config . filesController . options . preserveFileName = true ;
3529- Parse . Cloud . beforeSaveFile ( async ( { file } ) => {
3529+ Parse . Cloud . beforeSave ( Parse . File , async ( { file } ) => {
35303530 expect ( file . name ( ) ) . toBe ( 'popeye.txt' ) ;
35313531 const fileData = await file . getData ( ) ;
35323532 const newFile = new Parse . File ( '2020-04-01.txt' , { base64 : fileData } ) ;
@@ -3540,13 +3540,13 @@ describe('saveFile hooks', () => {
35403540 it ( 'afterSaveFile should set fileSize to null if beforeSave returns an already saved file' , async ( ) => {
35413541 await reconfigureServer ( { filesAdapter : mockAdapter } ) ;
35423542 const createFileSpy = spyOn ( mockAdapter , 'createFile' ) . and . callThrough ( ) ;
3543- Parse . Cloud . beforeSaveFile ( req => {
3543+ Parse . Cloud . beforeSave ( Parse . File , req => {
35443544 expect ( req . fileSize ) . toBe ( 3 ) ;
35453545 const newFile = new Parse . File ( 'some-file.txt' ) ;
35463546 newFile . _url = 'http://www.somewhere.com/parse/files/some-app-id/some-file.txt' ;
35473547 return newFile ;
35483548 } ) ;
3549- Parse . Cloud . afterSaveFile ( req => {
3549+ Parse . Cloud . afterSave ( Parse . File , req => {
35503550 expect ( req . fileSize ) . toBe ( null ) ;
35513551 } ) ;
35523552 const file = new Parse . File ( 'popeye.txt' , [ 1 , 2 , 3 ] , 'text/plain' ) ;
@@ -3559,7 +3559,7 @@ describe('saveFile hooks', () => {
35593559
35603560 it ( 'afterSaveFile should throw error' , async ( ) => {
35613561 await reconfigureServer ( { filesAdapter : mockAdapter } ) ;
3562- Parse . Cloud . afterSaveFile ( async ( ) => {
3562+ Parse . Cloud . afterSave ( Parse . File , async ( ) => {
35633563 throw new Parse . Error ( 400 , 'some-error-message' ) ;
35643564 } ) ;
35653565 const filename = 'donald_duck.pdf' ;
@@ -3573,11 +3573,11 @@ describe('saveFile hooks', () => {
35733573
35743574 it ( 'afterSaveFile should call with fileObject' , async done => {
35753575 await reconfigureServer ( { filesAdapter : mockAdapter } ) ;
3576- Parse . Cloud . beforeSaveFile ( async req => {
3576+ Parse . Cloud . beforeSave ( Parse . File , async req => {
35773577 req . file . setTags ( { tagA : 'some-tag' } ) ;
35783578 req . file . setMetadata ( { foo : 'bar' } ) ;
35793579 } ) ;
3580- Parse . Cloud . afterSaveFile ( async req => {
3580+ Parse . Cloud . afterSave ( Parse . File , async req => {
35813581 expect ( req . master ) . toBe ( true ) ;
35823582 expect ( req . file . _tags ) . toEqual ( { tagA : 'some-tag' } ) ;
35833583 expect ( req . file . _metadata ) . toEqual ( { foo : 'bar' } ) ;
@@ -3589,13 +3589,13 @@ describe('saveFile hooks', () => {
35893589
35903590 it ( 'afterSaveFile should change fileSize when file data changes' , async done => {
35913591 await reconfigureServer ( { filesAdapter : mockAdapter } ) ;
3592- Parse . Cloud . beforeSaveFile ( async req => {
3592+ Parse . Cloud . beforeSave ( Parse . File , async req => {
35933593 expect ( req . fileSize ) . toBe ( 3 ) ;
35943594 expect ( req . master ) . toBe ( true ) ;
35953595 const newFile = new Parse . File ( 'donald_duck.pdf' , [ 4 , 5 , 6 , 7 , 8 , 9 ] , 'application/pdf' ) ;
35963596 return newFile ;
35973597 } ) ;
3598- Parse . Cloud . afterSaveFile ( async req => {
3598+ Parse . Cloud . afterSave ( Parse . File , async req => {
35993599 expect ( req . fileSize ) . toBe ( 6 ) ;
36003600 expect ( req . master ) . toBe ( true ) ;
36013601 done ( ) ;
@@ -3606,7 +3606,7 @@ describe('saveFile hooks', () => {
36063606
36073607 it ( 'beforeDeleteFile should call with fileObject' , async ( ) => {
36083608 await reconfigureServer ( { filesAdapter : mockAdapter } ) ;
3609- Parse . Cloud . beforeDeleteFile ( req => {
3609+ Parse . Cloud . beforeDelete ( Parse . File , req => {
36103610 expect ( req . file ) . toBeInstanceOf ( Parse . File ) ;
36113611 expect ( req . file . _name ) . toEqual ( 'popeye.txt' ) ;
36123612 expect ( req . file . _url ) . toEqual ( 'http://www.somewhere.com/popeye.txt' ) ;
@@ -3618,7 +3618,7 @@ describe('saveFile hooks', () => {
36183618
36193619 it ( 'beforeDeleteFile should throw error' , async done => {
36203620 await reconfigureServer ( { filesAdapter : mockAdapter } ) ;
3621- Parse . Cloud . beforeDeleteFile ( ( ) => {
3621+ Parse . Cloud . beforeDelete ( Parse . File , ( ) => {
36223622 throw new Error ( 'some error message' ) ;
36233623 } ) ;
36243624 const file = new Parse . File ( 'popeye.txt' ) ;
@@ -3632,12 +3632,12 @@ describe('saveFile hooks', () => {
36323632
36333633 it ( 'afterDeleteFile should call with fileObject' , async done => {
36343634 await reconfigureServer ( { filesAdapter : mockAdapter } ) ;
3635- Parse . Cloud . beforeDeleteFile ( req => {
3635+ Parse . Cloud . beforeDelete ( Parse . File , req => {
36363636 expect ( req . file ) . toBeInstanceOf ( Parse . File ) ;
36373637 expect ( req . file . _name ) . toEqual ( 'popeye.txt' ) ;
36383638 expect ( req . file . _url ) . toEqual ( 'http://www.somewhere.com/popeye.txt' ) ;
36393639 } ) ;
3640- Parse . Cloud . afterDeleteFile ( req => {
3640+ Parse . Cloud . afterDelete ( Parse . File , req => {
36413641 expect ( req . file ) . toBeInstanceOf ( Parse . File ) ;
36423642 expect ( req . file . _name ) . toEqual ( 'popeye.txt' ) ;
36433643 expect ( req . file . _url ) . toEqual ( 'http://www.somewhere.com/popeye.txt' ) ;
@@ -3649,7 +3649,7 @@ describe('saveFile hooks', () => {
36493649
36503650 it ( 'beforeSaveFile should not change file if nothing is returned' , async ( ) => {
36513651 await reconfigureServer ( { filesAdapter : mockAdapter } ) ;
3652- Parse . Cloud . beforeSaveFile ( ( ) => {
3652+ Parse . Cloud . beforeSave ( Parse . File , ( ) => {
36533653 return ;
36543654 } ) ;
36553655 const file = new Parse . File ( 'popeye.txt' , [ 1 , 2 , 3 ] , 'text/plain' ) ;
@@ -3658,7 +3658,7 @@ describe('saveFile hooks', () => {
36583658 } ) ;
36593659
36603660 it ( 'throw custom error from beforeSaveFile' , async done => {
3661- Parse . Cloud . beforeSaveFile ( ( ) => {
3661+ Parse . Cloud . beforeSave ( Parse . File , ( ) => {
36623662 throw new Parse . Error ( Parse . Error . SCRIPT_FAILED , 'It should fail' ) ;
36633663 } ) ;
36643664 try {
@@ -3672,7 +3672,7 @@ describe('saveFile hooks', () => {
36723672 } ) ;
36733673
36743674 it ( 'throw empty error from beforeSaveFile' , async done => {
3675- Parse . Cloud . beforeSaveFile ( ( ) => {
3675+ Parse . Cloud . beforeSave ( Parse . File , ( ) => {
36763676 throw null ;
36773677 } ) ;
36783678 try {
@@ -3684,6 +3684,55 @@ describe('saveFile hooks', () => {
36843684 done ( ) ;
36853685 }
36863686 } ) ;
3687+
3688+ it ( 'legacy hooks' , async ( ) => {
3689+ await reconfigureServer ( { filesAdapter : mockAdapter } ) ;
3690+ const logger = require ( '../lib/logger' ) . logger ;
3691+ const logSpy = spyOn ( logger , 'warn' ) . and . callFake ( ( ) => { } ) ;
3692+ const triggers = {
3693+ beforeSaveFile ( req ) {
3694+ req . file . setTags ( { tagA : 'some-tag' } ) ;
3695+ req . file . setMetadata ( { foo : 'bar' } ) ;
3696+ expect ( req . triggerName ) . toEqual ( 'beforeSave' ) ;
3697+ expect ( req . master ) . toBe ( true ) ;
3698+ } ,
3699+ afterSaveFile ( req ) {
3700+ expect ( req . master ) . toBe ( true ) ;
3701+ expect ( req . file . _tags ) . toEqual ( { tagA : 'some-tag' } ) ;
3702+ expect ( req . file . _metadata ) . toEqual ( { foo : 'bar' } ) ;
3703+ } ,
3704+ beforeDeleteFile ( req ) {
3705+ expect ( req . file ) . toBeInstanceOf ( Parse . File ) ;
3706+ expect ( req . file . _name ) . toEqual ( 'popeye.txt' ) ;
3707+ expect ( req . file . _url ) . toEqual ( 'http://www.somewhere.com/popeye.txt' ) ;
3708+ expect ( req . fileSize ) . toBe ( null ) ;
3709+ } ,
3710+ afterDeleteFile ( req ) {
3711+ expect ( req . file ) . toBeInstanceOf ( Parse . File ) ;
3712+ expect ( req . file . _name ) . toEqual ( 'popeye.txt' ) ;
3713+ expect ( req . file . _url ) . toEqual ( 'http://www.somewhere.com/popeye.txt' ) ;
3714+ } ,
3715+ } ;
3716+
3717+ for ( const key in triggers ) {
3718+ spyOn ( triggers , key ) . and . callThrough ( ) ;
3719+ Parse . Cloud [ key ] ( triggers [ key ] ) ;
3720+ }
3721+
3722+ const file = new Parse . File ( 'popeye.txt' , [ 1 , 2 , 3 ] , 'text/plain' ) ;
3723+ await file . save ( { useMasterKey : true } ) ;
3724+ await new Parse . File ( 'popeye.txt' , [ 1 , 2 , 3 ] , 'text/plain' ) . destroy ( { useMasterKey : true } ) ;
3725+ await new Promise ( resolve => setTimeout ( resolve , 100 ) ) ;
3726+ for ( const key in triggers ) {
3727+ expect ( triggers [ key ] ) . toHaveBeenCalled ( ) ;
3728+ expect ( logSpy ) . toHaveBeenCalledWith (
3729+ `DeprecationWarning: Parse.Cloud.${ key } is deprecated and will be removed in a future version. Use Parse.Cloud.${ key . replace (
3730+ 'File' ,
3731+ ''
3732+ ) } (Parse.File, (request) => {})`
3733+ ) ;
3734+ }
3735+ } ) ;
36873736} ) ;
36883737
36893738describe ( 'sendEmail' , ( ) => {
0 commit comments