@@ -16,7 +16,13 @@ const PIN_PREFIX = LocalDatastoreUtils.PIN_PREFIX;
1616function LDS_KEY ( object ) {
1717 return Parse . LocalDatastore . getKeyForObject ( object ) ;
1818}
19-
19+ function LDS_FULL_JSON ( object ) {
20+ const json = object . _toFullJSON ( ) ;
21+ if ( object . _localId ) {
22+ json . _localId = object . _localId ;
23+ }
24+ return json ;
25+ }
2026function runTest ( controller ) {
2127 describe ( `Parse Object Pinning (${ controller . name } )` , ( ) => {
2228 beforeEach ( async ( ) => {
@@ -75,7 +81,7 @@ function runTest(controller) {
7581 let localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
7682 assert . equal ( Object . keys ( localDatastore ) . length , 2 ) ;
7783 assert . deepEqual ( localDatastore [ DEFAULT_PIN ] , [ LDS_KEY ( object ) ] ) ;
78- assert . deepEqual ( localDatastore [ LDS_KEY ( object ) ] , [ object . _toFullJSON ( ) ] ) ;
84+ assert . deepEqual ( localDatastore [ LDS_KEY ( object ) ] , [ LDS_FULL_JSON ( object ) ] ) ;
7985 await object . save ( ) ;
8086 // Check if localDatastore updated localId to objectId
8187 localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
@@ -84,6 +90,55 @@ function runTest(controller) {
8490 assert . deepEqual ( localDatastore [ LDS_KEY ( object ) ] , [ object . _toFullJSON ( ) ] ) ;
8591 } ) ;
8692
93+ it ( `${ controller . name } can store data to pin (unsaved)` , async ( ) => {
94+ const object = new TestObject ( ) ;
95+ object . set ( 'foo' , 'bar' ) ;
96+ await object . pin ( ) ;
97+
98+ const query = new Parse . Query ( TestObject ) ;
99+ query . fromLocalDatastore ( ) ;
100+ let results = await query . find ( ) ;
101+ assert . equal ( results . length , 1 ) ;
102+
103+ let pinnedObject = results [ 0 ] ;
104+ assert . equal ( pinnedObject . get ( 'foo' ) , 'bar' ) ;
105+ pinnedObject . set ( 'foo' , 'baz' ) ;
106+ await pinnedObject . pin ( ) ;
107+
108+ results = await query . find ( ) ;
109+ assert . equal ( results . length , 1 ) ;
110+ pinnedObject = results [ 0 ] ;
111+ assert . equal ( pinnedObject . get ( 'foo' ) , 'baz' ) ;
112+ } ) ;
113+
114+ it ( `${ controller . name } can query unsaved pin and save` , async ( ) => {
115+ const object = new TestObject ( ) ;
116+ object . set ( 'foo' , 'bar' ) ;
117+ await object . pin ( ) ;
118+
119+ const query = new Parse . Query ( TestObject ) ;
120+ query . fromLocalDatastore ( ) ;
121+ let results = await query . find ( ) ;
122+
123+ assert . equal ( results . length , 1 ) ;
124+
125+ let pinnedObject = results [ 0 ] ;
126+ assert . equal ( pinnedObject . get ( 'foo' ) , 'bar' ) ;
127+
128+ pinnedObject . set ( 'foo' , 'baz' ) ;
129+ await pinnedObject . save ( ) ;
130+
131+ assert ( pinnedObject . id ) ;
132+ assert . equal ( pinnedObject . _localId , undefined ) ;
133+
134+ results = await query . find ( ) ;
135+ pinnedObject = results [ 0 ] ;
136+
137+ assert . equal ( pinnedObject . get ( 'foo' ) , 'baz' ) ;
138+ assert ( pinnedObject . id ) ;
139+ assert . equal ( pinnedObject . _localId , undefined ) ;
140+ } ) ;
141+
87142 it ( `${ controller . name } cannot pin unsaved pointer` , async ( ) => {
88143 try {
89144 const object = new TestObject ( ) ;
@@ -174,9 +229,9 @@ function runTest(controller) {
174229 let localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
175230 assert . equal ( Object . keys ( localDatastore ) . length , 4 ) ;
176231 assert . deepEqual ( localDatastore [ DEFAULT_PIN ] , [ LDS_KEY ( obj1 ) , LDS_KEY ( obj2 ) , LDS_KEY ( obj3 ) ] ) ;
177- assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ obj1 . _toFullJSON ( ) ] ) ;
178- assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ obj2 . _toFullJSON ( ) ] ) ;
179- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
232+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ LDS_FULL_JSON ( obj1 ) ] ) ;
233+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ LDS_FULL_JSON ( obj2 ) ] ) ;
234+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
180235
181236 await Parse . Object . saveAll ( objects ) ;
182237
@@ -216,9 +271,9 @@ function runTest(controller) {
216271 let localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
217272 assert . equal ( Object . keys ( localDatastore ) . length , 4 ) ;
218273 assert . deepEqual ( localDatastore [ PIN_PREFIX + 'test_pin' ] , [ LDS_KEY ( obj1 ) , LDS_KEY ( obj2 ) , LDS_KEY ( obj3 ) ] ) ;
219- assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ obj1 . _toFullJSON ( ) ] ) ;
220- assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ obj2 . _toFullJSON ( ) ] ) ;
221- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
274+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ LDS_FULL_JSON ( obj1 ) ] ) ;
275+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ LDS_FULL_JSON ( obj2 ) ] ) ;
276+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
222277
223278 await Parse . Object . saveAll ( objects ) ;
224279
@@ -315,17 +370,17 @@ function runTest(controller) {
315370 let localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
316371 assert . equal ( Object . keys ( localDatastore ) . length , 4 ) ;
317372 assert . deepEqual ( localDatastore [ DEFAULT_PIN ] , [ LDS_KEY ( obj1 ) , LDS_KEY ( obj2 ) , LDS_KEY ( obj3 ) ] ) ;
318- assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ obj1 . _toFullJSON ( ) ] ) ;
319- assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ obj2 . _toFullJSON ( ) ] ) ;
320- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
373+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ LDS_FULL_JSON ( obj1 ) ] ) ;
374+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ LDS_FULL_JSON ( obj2 ) ] ) ;
375+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
321376
322377 await obj2 . unPin ( ) ;
323378
324379 localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
325380 assert . equal ( Object . keys ( localDatastore ) . length , 3 ) ;
326381 assert . deepEqual ( localDatastore [ DEFAULT_PIN ] , [ LDS_KEY ( obj1 ) , LDS_KEY ( obj3 ) ] ) ;
327- assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ obj1 . _toFullJSON ( ) ] ) ;
328- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
382+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ LDS_FULL_JSON ( obj1 ) ] ) ;
383+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
329384
330385 await Parse . Object . saveAll ( objects ) ;
331386
@@ -347,9 +402,9 @@ function runTest(controller) {
347402 let localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
348403 assert . equal ( Object . keys ( localDatastore ) . length , 4 ) ;
349404 assert . deepEqual ( localDatastore [ DEFAULT_PIN ] , [ LDS_KEY ( obj1 ) , LDS_KEY ( obj2 ) , LDS_KEY ( obj3 ) ] ) ;
350- assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ obj1 . _toFullJSON ( ) ] ) ;
351- assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ obj2 . _toFullJSON ( ) ] ) ;
352- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
405+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ LDS_FULL_JSON ( obj1 ) ] ) ;
406+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ LDS_FULL_JSON ( obj2 ) ] ) ;
407+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
353408
354409 await Parse . Object . saveAll ( objects ) ;
355410
@@ -358,8 +413,8 @@ function runTest(controller) {
358413 localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
359414 assert . equal ( Object . keys ( localDatastore ) . length , 3 ) ;
360415 assert . deepEqual ( localDatastore [ DEFAULT_PIN ] , [ LDS_KEY ( obj1 ) , LDS_KEY ( obj3 ) ] ) ;
361- assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ obj1 . _toFullJSON ( ) ] ) ;
362- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
416+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ LDS_FULL_JSON ( obj1 ) ] ) ;
417+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
363418 } ) ;
364419
365420 it ( `${ controller . name } can unPin / unPinAll without pin (unsaved)` , async ( ) => {
@@ -407,16 +462,16 @@ function runTest(controller) {
407462 let localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
408463 assert ( Object . keys ( localDatastore ) . length === 4 ) ;
409464 assert . deepEqual ( localDatastore [ DEFAULT_PIN ] , [ LDS_KEY ( obj1 ) , LDS_KEY ( obj2 ) , LDS_KEY ( obj3 ) ] ) ;
410- assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ obj1 . _toFullJSON ( ) ] ) ;
411- assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ obj2 . _toFullJSON ( ) ] ) ;
412- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
465+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ LDS_FULL_JSON ( obj1 ) ] ) ;
466+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ LDS_FULL_JSON ( obj2 ) ] ) ;
467+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
413468
414469 await Parse . Object . unPinAll ( [ obj1 , obj2 ] ) ;
415470
416471 localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
417472 assert . equal ( Object . keys ( localDatastore ) . length , 2 ) ;
418473 assert . deepEqual ( localDatastore [ DEFAULT_PIN ] , [ LDS_KEY ( obj3 ) ] ) ;
419- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
474+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
420475
421476 await Parse . Object . saveAll ( objects ) ;
422477
@@ -437,9 +492,9 @@ function runTest(controller) {
437492 let localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
438493 assert . equal ( Object . keys ( localDatastore ) . length , 4 ) ;
439494 assert . deepEqual ( localDatastore [ DEFAULT_PIN ] , [ LDS_KEY ( obj1 ) , LDS_KEY ( obj2 ) , LDS_KEY ( obj3 ) ] ) ;
440- assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ obj1 . _toFullJSON ( ) ] ) ;
441- assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ obj2 . _toFullJSON ( ) ] ) ;
442- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
495+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ LDS_FULL_JSON ( obj1 ) ] ) ;
496+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ LDS_FULL_JSON ( obj2 ) ] ) ;
497+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
443498
444499 await Parse . Object . saveAll ( objects ) ;
445500
@@ -461,17 +516,17 @@ function runTest(controller) {
461516 let localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
462517 assert ( Object . keys ( localDatastore ) . length === 4 ) ;
463518 assert . deepEqual ( localDatastore [ DEFAULT_PIN ] , [ LDS_KEY ( obj1 ) , LDS_KEY ( obj2 ) , LDS_KEY ( obj3 ) ] ) ;
464- assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ obj1 . _toFullJSON ( ) ] ) ;
465- assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ obj2 . _toFullJSON ( ) ] ) ;
466- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
519+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ LDS_FULL_JSON ( obj1 ) ] ) ;
520+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ LDS_FULL_JSON ( obj2 ) ] ) ;
521+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
467522
468523 await Parse . Object . unPinAllObjects ( ) ;
469524
470525 localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
471526 assert . equal ( Object . keys ( localDatastore ) . length , 3 ) ;
472- assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ obj1 . _toFullJSON ( ) ] ) ;
473- assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ obj2 . _toFullJSON ( ) ] ) ;
474- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
527+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ LDS_FULL_JSON ( obj1 ) ] ) ;
528+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ LDS_FULL_JSON ( obj2 ) ] ) ;
529+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
475530
476531 await Parse . Object . saveAll ( objects ) ;
477532
@@ -493,9 +548,9 @@ function runTest(controller) {
493548 let localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
494549 assert . equal ( Object . keys ( localDatastore ) . length , 4 ) ;
495550 assert . deepEqual ( localDatastore [ DEFAULT_PIN ] , [ LDS_KEY ( obj1 ) , LDS_KEY ( obj2 ) , LDS_KEY ( obj3 ) ] ) ;
496- assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ obj1 . _toFullJSON ( ) ] ) ;
497- assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ obj2 . _toFullJSON ( ) ] ) ;
498- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
551+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ LDS_FULL_JSON ( obj1 ) ] ) ;
552+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ LDS_FULL_JSON ( obj2 ) ] ) ;
553+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
499554
500555 await Parse . Object . saveAll ( objects ) ;
501556
@@ -518,16 +573,16 @@ function runTest(controller) {
518573 let localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
519574 assert ( Object . keys ( localDatastore ) . length === 4 ) ;
520575 assert . deepEqual ( localDatastore [ PIN_PREFIX + 'test_unpin' ] , [ LDS_KEY ( obj1 ) , LDS_KEY ( obj2 ) , LDS_KEY ( obj3 ) ] ) ;
521- assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ obj1 . _toFullJSON ( ) ] ) ;
522- assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ obj2 . _toFullJSON ( ) ] ) ;
523- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
576+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ LDS_FULL_JSON ( obj1 ) ] ) ;
577+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ LDS_FULL_JSON ( obj2 ) ] ) ;
578+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
524579
525580 await Parse . Object . unPinAllWithName ( 'test_unpin' , [ obj1 , obj2 ] ) ;
526581
527582 localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
528583 assert . equal ( Object . keys ( localDatastore ) . length , 2 ) ;
529584 assert . deepEqual ( localDatastore [ PIN_PREFIX + 'test_unpin' ] , [ LDS_KEY ( obj3 ) ] ) ;
530- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
585+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
531586
532587 await Parse . Object . saveAll ( objects ) ;
533588
@@ -548,9 +603,9 @@ function runTest(controller) {
548603 let localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
549604 assert . equal ( Object . keys ( localDatastore ) . length , 4 ) ;
550605 assert . deepEqual ( localDatastore [ PIN_PREFIX + 'test_unpin' ] , [ LDS_KEY ( obj1 ) , LDS_KEY ( obj2 ) , LDS_KEY ( obj3 ) ] ) ;
551- assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ obj1 . _toFullJSON ( ) ] ) ;
552- assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ obj2 . _toFullJSON ( ) ] ) ;
553- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
606+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ LDS_FULL_JSON ( obj1 ) ] ) ;
607+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ LDS_FULL_JSON ( obj2 ) ] ) ;
608+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
554609
555610 await Parse . Object . saveAll ( objects ) ;
556611
@@ -572,17 +627,17 @@ function runTest(controller) {
572627 let localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
573628 assert ( Object . keys ( localDatastore ) . length === 4 ) ;
574629 assert . deepEqual ( localDatastore [ PIN_PREFIX + 'test_unpin' ] , [ LDS_KEY ( obj1 ) , LDS_KEY ( obj2 ) , LDS_KEY ( obj3 ) ] ) ;
575- assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ obj1 . _toFullJSON ( ) ] ) ;
576- assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ obj2 . _toFullJSON ( ) ] ) ;
577- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
630+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ LDS_FULL_JSON ( obj1 ) ] ) ;
631+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ LDS_FULL_JSON ( obj2 ) ] ) ;
632+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
578633
579634 await Parse . Object . unPinAllObjectsWithName ( 'test_unpin' ) ;
580635
581636 localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
582637 assert . equal ( Object . keys ( localDatastore ) . length , 3 ) ;
583- assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ obj1 . _toFullJSON ( ) ] ) ;
584- assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ obj2 . _toFullJSON ( ) ] ) ;
585- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
638+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ LDS_FULL_JSON ( obj1 ) ] ) ;
639+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ LDS_FULL_JSON ( obj2 ) ] ) ;
640+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
586641
587642 await Parse . Object . saveAll ( objects ) ;
588643
@@ -604,9 +659,9 @@ function runTest(controller) {
604659 let localDatastore = await Parse . LocalDatastore . _getAllContents ( ) ;
605660 assert . equal ( Object . keys ( localDatastore ) . length , 4 ) ;
606661 assert . deepEqual ( localDatastore [ PIN_PREFIX + 'test_unpin' ] , [ LDS_KEY ( obj1 ) , LDS_KEY ( obj2 ) , LDS_KEY ( obj3 ) ] ) ;
607- assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ obj1 . _toFullJSON ( ) ] ) ;
608- assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ obj2 . _toFullJSON ( ) ] ) ;
609- assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ obj3 . _toFullJSON ( ) ] ) ;
662+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj1 ) ] , [ LDS_FULL_JSON ( obj1 ) ] ) ;
663+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj2 ) ] , [ LDS_FULL_JSON ( obj2 ) ] ) ;
664+ assert . deepEqual ( localDatastore [ LDS_KEY ( obj3 ) ] , [ LDS_FULL_JSON ( obj3 ) ] ) ;
610665
611666 await Parse . Object . saveAll ( objects ) ;
612667
@@ -871,6 +926,25 @@ function runTest(controller) {
871926 const childJSON = updatedLDS [ LDS_KEY ( child ) ] ;
872927 assert . equal ( childJSON . foo , 'changed' ) ;
873928 } ) ;
929+
930+ it ( `${ controller . name } can update Local Datastore from network ignore unsaved` , async ( ) => {
931+ const object = new TestObject ( ) ;
932+ const item = new Item ( ) ;
933+ await item . save ( ) ;
934+ await Parse . Object . pinAll ( [ object , item ] ) ;
935+
936+ // Updates item with { foo: 'changed' }
937+ const params = { id : item . id } ;
938+ await Parse . Cloud . run ( 'TestFetchFromLocalDatastore' , params ) ;
939+
940+ Parse . LocalDatastore . isSyncing = false ;
941+
942+ await Parse . LocalDatastore . updateFromServer ( ) ;
943+
944+ const updatedLDS = await Parse . LocalDatastore . _getAllContents ( ) ;
945+ const itemJSON = updatedLDS [ LDS_KEY ( item ) ] ;
946+ assert . equal ( itemJSON . foo , 'changed' ) ;
947+ } ) ;
874948 } ) ;
875949
876950 describe ( `Parse Query Pinning (${ controller . name } )` , ( ) => {
0 commit comments