@@ -420,4 +420,65 @@ describe('UniqueInstanceStateController', () => {
420
420
closure ( ) ;
421
421
}
422
422
} ) ;
423
+
424
+ it ( 'can duplicate the state of an object' , ( ) => {
425
+ let obj = new ParseObject ( ) ;
426
+ UniqueInstanceStateController . setServerData ( obj , { counter : 12 , name : 'original' } ) ;
427
+ let setCount = new ParseOps . SetOp ( 44 ) ;
428
+ let setValid = new ParseOps . SetOp ( true ) ;
429
+ UniqueInstanceStateController . setPendingOp ( obj , 'counter' , setCount ) ;
430
+ UniqueInstanceStateController . setPendingOp ( obj , 'valid' , setValid ) ;
431
+
432
+ let duplicate = new ParseObject ( ) ;
433
+ UniqueInstanceStateController . duplicateState ( obj , duplicate ) ;
434
+ expect ( UniqueInstanceStateController . getState ( duplicate ) ) . toEqual ( {
435
+ serverData : { counter : 12 , name : 'original' } ,
436
+ pendingOps : [ { counter : setCount , valid : setValid } ] ,
437
+ objectCache : { } ,
438
+ tasks : new TaskQueue ( ) ,
439
+ existed : false
440
+ } ) ;
441
+
442
+ UniqueInstanceStateController . setServerData ( duplicate , { name : 'duplicate' } ) ;
443
+ expect ( UniqueInstanceStateController . getState ( obj ) ) . toEqual ( {
444
+ serverData : { counter : 12 , name : 'original' } ,
445
+ pendingOps : [ { counter : setCount , valid : setValid } ] ,
446
+ objectCache : { } ,
447
+ tasks : new TaskQueue ( ) ,
448
+ existed : false
449
+ } ) ;
450
+ expect ( UniqueInstanceStateController . getState ( duplicate ) ) . toEqual ( {
451
+ serverData : { counter : 12 , name : 'duplicate' } ,
452
+ pendingOps : [ { counter : setCount , valid : setValid } ] ,
453
+ objectCache : { } ,
454
+ tasks : new TaskQueue ( ) ,
455
+ existed : false
456
+ } ) ;
457
+
458
+ UniqueInstanceStateController . commitServerChanges ( obj , { o : { a : 12 } } ) ;
459
+ expect ( UniqueInstanceStateController . getState ( obj ) ) . toEqual ( {
460
+ serverData : { counter : 12 , name : 'original' , o : { a : 12 } } ,
461
+ pendingOps : [ { counter : setCount , valid : setValid } ] ,
462
+ objectCache : { o : '{"a":12}' } ,
463
+ tasks : new TaskQueue ( ) ,
464
+ existed : false
465
+ } ) ;
466
+ expect ( UniqueInstanceStateController . getState ( duplicate ) ) . toEqual ( {
467
+ serverData : { counter : 12 , name : 'duplicate' } ,
468
+ pendingOps : [ { counter : setCount , valid : setValid } ] ,
469
+ objectCache : { } ,
470
+ tasks : new TaskQueue ( ) ,
471
+ existed : false
472
+ } ) ;
473
+
474
+ let otherDup = new ParseObject ( ) ;
475
+ UniqueInstanceStateController . duplicateState ( obj , otherDup ) ;
476
+ expect ( UniqueInstanceStateController . getState ( otherDup ) ) . toEqual ( {
477
+ serverData : { counter : 12 , name : 'original' , o : { a : 12 } } ,
478
+ pendingOps : [ { counter : setCount , valid : setValid } ] ,
479
+ objectCache : { o : '{"a":12}' } ,
480
+ tasks : new TaskQueue ( ) ,
481
+ existed : false
482
+ } ) ;
483
+ } ) ;
423
484
} ) ;
0 commit comments