@@ -676,23 +676,55 @@ describe('ParseObject', () => {
676676 objectField : {
677677 number : 5 ,
678678 letter : 'a' ,
679+ nested : {
680+ number : 0 ,
681+ letter : 'b' ,
682+ } ,
679683 } ,
680684 } ) ;
681685
682686 expect ( o . attributes ) . toEqual ( {
683- objectField : { number : 5 , letter : 'a' } ,
687+ objectField : { number : 5 , letter : 'a' , nested : { number : 0 , letter : 'b' } } ,
684688 } ) ;
685689 o . set ( 'objectField.number' , 20 ) ;
686690 o . set ( 'objectField.letter' , 'b' ) ;
691+ o . set ( 'objectField.nested.number' , 1 ) ;
692+ o . set ( 'objectField.nested.letter' , 'c' ) ;
687693
688694 expect ( o . attributes ) . toEqual ( {
689- objectField : { number : 20 , letter : 'b' } ,
695+ objectField : { number : 20 , letter : 'b' , nested : { number : 1 , letter : 'c' } } ,
690696 } ) ;
691697 expect ( o . op ( 'objectField.number' ) instanceof SetOp ) . toBe ( true ) ;
692- expect ( o . dirtyKeys ( ) ) . toEqual ( [ 'objectField.number' , 'objectField.letter' , 'objectField' ] ) ;
698+ expect ( o . dirtyKeys ( ) ) . toEqual ( [
699+ 'objectField.number' ,
700+ 'objectField.letter' ,
701+ 'objectField.nested.number' ,
702+ 'objectField.nested.letter' ,
703+ 'objectField' ,
704+ ] ) ;
705+ expect ( o . _getSaveJSON ( ) ) . toEqual ( {
706+ 'objectField.number' : 20 ,
707+ 'objectField.letter' : 'b' ,
708+ 'objectField.nested.number' : 1 ,
709+ 'objectField.nested.letter' : 'c' ,
710+ } ) ;
711+
712+ o . revert ( 'objectField.nested.number' ) ;
713+ o . revert ( 'objectField.nested.letter' ) ;
714+ expect ( o . _getSaveJSON ( ) ) . toEqual ( {
715+ 'objectField.number' : 20 ,
716+ 'objectField.letter' : 'b' ,
717+ } ) ;
718+ expect ( o . attributes ) . toEqual ( {
719+ objectField : { number : 20 , letter : 'b' , nested : { number : 0 , letter : 'b' } } ,
720+ } ) ;
721+
722+ // Also test setting new root fields using the dot notation
723+ o . set ( 'objectField2.number' , 0 ) ;
693724 expect ( o . _getSaveJSON ( ) ) . toEqual ( {
694725 'objectField.number' : 20 ,
695726 'objectField.letter' : 'b' ,
727+ 'objectField2.number' : 0 ,
696728 } ) ;
697729 } ) ;
698730
0 commit comments