@@ -1845,6 +1845,58 @@ describe('miscellaneous', () => {
18451845 }
18461846 ) ;
18471847 } ) ;
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+ } ) ;
18481900} ) ;
18491901
18501902describe_only_db ( 'mongo' ) ( 'legacy _acl' , ( ) => {
0 commit comments