@@ -666,4 +666,60 @@ describe('Cloud Code', () => {
666
666
done ( ) ;
667
667
} ) ;
668
668
} ) ;
669
+
670
+ it ( 'should fully delete objects when using `unset` with beforeSave (regression test for #1840)' , done => {
671
+ var TestObject = Parse . Object . extend ( 'TestObject' ) ;
672
+ var NoBeforeSaveObject = Parse . Object . extend ( 'NoBeforeSave' ) ;
673
+ var BeforeSaveObject = Parse . Object . extend ( 'BeforeSaveChanged' ) ;
674
+
675
+ Parse . Cloud . beforeSave ( 'BeforeSaveChanged' , ( req , res ) => {
676
+ var object = req . object ;
677
+ object . set ( 'before' , 'save' ) ;
678
+ res . success ( ) ;
679
+ } ) ;
680
+
681
+ Parse . Cloud . define ( 'removeme' , ( req , res ) => {
682
+ var testObject = new TestObject ( ) ;
683
+ testObject . save ( )
684
+ . then ( testObject => {
685
+ var object = new NoBeforeSaveObject ( { remove : testObject } ) ;
686
+ return object . save ( ) ;
687
+ } )
688
+ . then ( object => {
689
+ object . unset ( 'remove' ) ;
690
+ return object . save ( ) ;
691
+ } )
692
+ . then ( object => {
693
+ res . success ( object ) ;
694
+ } ) ;
695
+ } ) ;
696
+
697
+ Parse . Cloud . define ( 'removeme2' , ( req , res ) => {
698
+ var testObject = new TestObject ( ) ;
699
+ testObject . save ( )
700
+ . then ( testObject => {
701
+ var object = new BeforeSaveObject ( { remove : testObject } ) ;
702
+ return object . save ( ) ;
703
+ } )
704
+ . then ( object => {
705
+ object . unset ( 'remove' ) ;
706
+ return object . save ( ) ;
707
+ } )
708
+ . then ( object => {
709
+ res . success ( object ) ;
710
+ } ) ;
711
+ } ) ;
712
+
713
+ Parse . Cloud . run ( 'removeme' )
714
+ . then ( aNoBeforeSaveObj => {
715
+ expect ( aNoBeforeSaveObj . get ( 'remove' ) ) . toEqual ( undefined ) ;
716
+
717
+ return Parse . Cloud . run ( 'removeme2' ) ;
718
+ } )
719
+ . then ( aBeforeSaveObj => {
720
+ expect ( aBeforeSaveObj . get ( 'before' ) ) . toEqual ( 'save' ) ;
721
+ expect ( aBeforeSaveObj . get ( 'remove' ) ) . toEqual ( undefined ) ;
722
+ done ( ) ;
723
+ } ) ;
724
+ } ) ;
669
725
} ) ;
0 commit comments