@@ -601,4 +601,78 @@ describe('Parse Role testing', () => {
601601 } ) ;
602602 } ) ;
603603 } ) ;
604+
605+ it ( 'should trigger afterSave hook when using Parse.Role' , async ( ) => {
606+ const afterSavePromise = new Promise ( resolve => {
607+ Parse . Cloud . afterSave ( Parse . Role , req => {
608+ expect ( req . object ) . toBeDefined ( ) ;
609+ expect ( req . object . get ( 'name' ) ) . toBe ( 'AnotherTestRole' ) ;
610+ resolve ( ) ;
611+ } ) ;
612+ } ) ;
613+
614+ const acl = new Parse . ACL ( ) ;
615+ acl . setPublicReadAccess ( true ) ;
616+ const role = new Parse . Role ( 'AnotherTestRole' , acl ) ;
617+
618+ const savedRole = await role . save ( { } , { useMasterKey : true } ) ;
619+ expect ( savedRole . id ) . toBeDefined ( ) ;
620+
621+ await afterSavePromise ;
622+ } ) ;
623+
624+ it ( 'should trigger beforeSave hook and allow modifying role in beforeSave' , async ( ) => {
625+ Parse . Cloud . beforeSave ( Parse . Role , req => {
626+ // Add a custom field in beforeSave
627+ req . object . set ( 'customField' , 'addedInBeforeSave' ) ;
628+ } ) ;
629+
630+ const acl = new Parse . ACL ( ) ;
631+ acl . setPublicReadAccess ( true ) ;
632+ const role = new Parse . Role ( 'ModifiedRole' , acl ) ;
633+
634+ const savedRole = await role . save ( { } , { useMasterKey : true } ) ;
635+ expect ( savedRole . id ) . toBeDefined ( ) ;
636+ expect ( savedRole . get ( 'customField' ) ) . toBe ( 'addedInBeforeSave' ) ;
637+ } ) ;
638+
639+ it ( 'should trigger beforeSave hook using Parse.Role' , async ( ) => {
640+ let beforeSaveCalled = false ;
641+
642+ Parse . Cloud . beforeSave ( Parse . Role , req => {
643+ beforeSaveCalled = true ;
644+ expect ( req . object ) . toBeDefined ( ) ;
645+ expect ( req . object . get ( 'name' ) ) . toBe ( 'BeforeSaveWithClassRef' ) ;
646+ } ) ;
647+
648+ const acl = new Parse . ACL ( ) ;
649+ acl . setPublicReadAccess ( true ) ;
650+ const role = new Parse . Role ( 'BeforeSaveWithClassRef' , acl ) ;
651+
652+ const savedRole = await role . save ( { } , { useMasterKey : true } ) ;
653+ expect ( savedRole . id ) . toBeDefined ( ) ;
654+ expect ( beforeSaveCalled ) . toBe ( true ) ;
655+ } ) ;
656+
657+ it ( 'should allow modifying role name in beforeSave hook' , async ( ) => {
658+ Parse . Cloud . beforeSave ( Parse . Role , req => {
659+ // Modify the role name in beforeSave
660+ if ( req . object . get ( 'name' ) === 'OriginalName' ) {
661+ req . object . set ( 'name' , 'ModifiedName' ) ;
662+ }
663+ } ) ;
664+
665+ const acl = new Parse . ACL ( ) ;
666+ acl . setPublicReadAccess ( true ) ;
667+ const role = new Parse . Role ( 'OriginalName' , acl ) ;
668+
669+ const savedRole = await role . save ( { } , { useMasterKey : true } ) ;
670+ expect ( savedRole . id ) . toBeDefined ( ) ;
671+ expect ( savedRole . get ( 'name' ) ) . toBe ( 'ModifiedName' ) ;
672+
673+ // Verify the name was actually saved to the database
674+ const query = new Parse . Query ( Parse . Role ) ;
675+ const fetchedRole = await query . get ( savedRole . id , { useMasterKey : true } ) ;
676+ expect ( fetchedRole . get ( 'name' ) ) . toBe ( 'ModifiedName' ) ;
677+ } ) ;
604678} ) ;
0 commit comments