@@ -1845,6 +1845,58 @@ describe('miscellaneous', () => {
1845
1845
}
1846
1846
) ;
1847
1847
} ) ;
1848
+
1849
+ it ( 'test afterSave with deeply nested keys (#7384)' , async ( ) => {
1850
+ let triggerTime = 0 ;
1851
+ Parse . Cloud . afterSave ( 'GameScore' , function ( req ) {
1852
+ const object = req . object ;
1853
+ expect ( object instanceof Parse . Object ) . toBeTruthy ( ) ;
1854
+ triggerTime ++ ;
1855
+ if ( triggerTime == 1 ) {
1856
+ // Create
1857
+ expect ( object . get ( 'a' ) ) . toEqual ( { b : 0 , c : { d : 1 } } ) ;
1858
+ expect ( object . get ( 'e' ) ) . toEqual ( 2 ) ;
1859
+ } else if ( triggerTime == 2 ) {
1860
+ // Update, increment
1861
+ expect ( object . get ( 'a' ) ) . toEqual ( { b : 10 , c : { d : 12 } } ) ;
1862
+ expect ( object . get ( 'e' ) ) . toEqual ( 14 ) ;
1863
+ } else if ( triggerTime == 3 ) {
1864
+ // Update, set
1865
+ expect ( object . get ( 'a' ) ) . toEqual ( { b : 100 , c : { d : 200 } } ) ;
1866
+ expect ( object . get ( 'e' ) ) . toEqual ( 300 ) ;
1867
+ } else if ( triggerTime == 4 ) {
1868
+ // Update, unset on a.c.d
1869
+ expect ( object . get ( 'a' ) ) . toEqual ( { b : 100 , c : { } } ) ;
1870
+ expect ( object . get ( 'e' ) ) . toEqual ( 300 ) ;
1871
+ } else if ( triggerTime == 5 ) {
1872
+ // Update, unset on a.b
1873
+ expect ( object . get ( 'a' ) ) . toEqual ( { c : { } } ) ;
1874
+ expect ( object . get ( 'e' ) ) . toEqual ( 300 ) ;
1875
+ } else {
1876
+ throw new Error ( ) ;
1877
+ }
1878
+
1879
+ } ) ;
1880
+
1881
+ const obj = new Parse . Object ( 'GameScore' ) ;
1882
+ obj . set ( 'a' , { b : 0 , c : { d : 1 } } ) ;
1883
+ obj . set ( 'e' , 2 ) ;
1884
+ await obj . save ( ) ;
1885
+ obj . increment ( 'a.b' , 10 ) ;
1886
+ obj . increment ( 'a.c.d' , 11 ) ;
1887
+ obj . increment ( 'e' , 12 ) ;
1888
+ await obj . save ( ) ;
1889
+ obj . set ( 'a.b' , 100 ) ;
1890
+ obj . set ( 'a.c.d' , 200 ) ;
1891
+ obj . set ( 'e' , 300 ) ;
1892
+ await obj . save ( ) ;
1893
+ obj . unset ( 'a.c.d' ) ;
1894
+ await obj . save ( ) ;
1895
+ obj . unset ( 'a.b' ) ;
1896
+ await obj . save ( ) ;
1897
+ // Make sure the checking has been triggered
1898
+ expect ( triggerTime ) . toBe ( 5 ) ;
1899
+ } ) ;
1848
1900
} ) ;
1849
1901
1850
1902
describe_only_db ( 'mongo' ) ( 'legacy _acl' , ( ) => {
0 commit comments