@@ -11,8 +11,8 @@ module.exports = function() {
11
11
12
12
[ 'fetch' , 'subscribe' ] . forEach ( function ( method ) {
13
13
it ( method + ' gets initial data' , function ( done ) {
14
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
15
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
14
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
15
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
16
16
doc . create ( { age : 3 } , function ( err ) {
17
17
if ( err ) return done ( err ) ;
18
18
doc2 [ method ] ( function ( err ) {
@@ -25,8 +25,8 @@ module.exports = function() {
25
25
} ) ;
26
26
27
27
it ( method + ' twice simultaneously calls back' , function ( done ) {
28
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
29
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
28
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
29
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
30
30
doc . create ( { age : 3 } , function ( err ) {
31
31
if ( err ) return done ( err ) ;
32
32
async . parallel ( [
@@ -46,8 +46,8 @@ module.exports = function() {
46
46
} ) ;
47
47
48
48
it ( method + ' twice in bulk simultaneously calls back' , function ( done ) {
49
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
50
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
49
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
50
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
51
51
doc . create ( { age : 3 } , function ( err ) {
52
52
if ( err ) return done ( err ) ;
53
53
doc2 . connection . startBulk ( ) ;
@@ -83,9 +83,9 @@ module.exports = function() {
83
83
}
84
84
] , function ( err ) {
85
85
if ( err ) return done ( err ) ;
86
- var fido = connection2 . get ( 'dogs' , 'fido' ) ;
87
- var spot = connection2 . get ( 'dogs' , 'spot' ) ;
88
- var finn = connection2 . get ( 'cats' , 'finn' ) ;
86
+ var fido = connection2 . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
87
+ var spot = connection2 . get ( 'dogs' , 'spot' ) . on ( 'error' , done ) ;
88
+ var finn = connection2 . get ( 'cats' , 'finn' ) . on ( 'error' , done ) ;
89
89
connection2 . startBulk ( ) ;
90
90
async . parallel ( [
91
91
function ( cb ) {
@@ -111,9 +111,9 @@ module.exports = function() {
111
111
it ( method + ' bulk on same collection from known version' , function ( done ) {
112
112
var connection = this . backend . connect ( ) ;
113
113
var connection2 = this . backend . connect ( ) ;
114
- var fido = connection2 . get ( 'dogs' , 'fido' ) ;
115
- var spot = connection2 . get ( 'dogs' , 'spot' ) ;
116
- var finn = connection2 . get ( 'cats' , 'finn' ) ;
114
+ var fido = connection2 . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
115
+ var spot = connection2 . get ( 'dogs' , 'spot' ) . on ( 'error' , done ) ;
116
+ var finn = connection2 . get ( 'cats' , 'finn' ) . on ( 'error' , done ) ;
117
117
connection2 . startBulk ( ) ;
118
118
async . parallel ( [
119
119
function ( cb ) {
@@ -221,8 +221,8 @@ module.exports = function() {
221
221
} ) ;
222
222
223
223
it ( method + ' gets new ops' , function ( done ) {
224
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
225
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
224
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
225
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
226
226
doc . create ( { age : 3 } , function ( err ) {
227
227
if ( err ) return done ( err ) ;
228
228
doc2 . fetch ( function ( err ) {
@@ -240,8 +240,8 @@ module.exports = function() {
240
240
241
241
it ( method + ' calls back after reconnect' , function ( done ) {
242
242
var backend = this . backend ;
243
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
244
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
243
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
244
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
245
245
doc . create ( { age : 3 } , function ( err ) {
246
246
if ( err ) return done ( err ) ;
247
247
doc2 [ method ] ( function ( err ) {
@@ -261,8 +261,8 @@ module.exports = function() {
261
261
this . backend . use ( 'doc' , function ( request , next ) {
262
262
next ( { message : 'Reject doc read' } ) ;
263
263
} ) ;
264
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
265
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
264
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
265
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
266
266
doc . create ( { age : 3 } , function ( err ) {
267
267
if ( err ) return done ( err ) ;
268
268
doc2 [ method ] ( function ( err ) {
@@ -293,7 +293,7 @@ module.exports = function() {
293
293
} ) ;
294
294
295
295
it ( method + ' will call back when ops are pending' , function ( done ) {
296
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
296
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
297
297
doc . create ( { age : 3 } , function ( err ) {
298
298
if ( err ) return done ( err ) ;
299
299
doc . pause ( ) ;
@@ -303,7 +303,7 @@ module.exports = function() {
303
303
} ) ;
304
304
305
305
it ( method + ' will not call back when creating the doc is pending' , function ( done ) {
306
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
306
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
307
307
doc . pause ( ) ;
308
308
doc . create ( { age : 3 } ) ;
309
309
doc [ method ] ( done ) ;
@@ -312,7 +312,7 @@ module.exports = function() {
312
312
} ) ;
313
313
314
314
it ( method + ' will wait for write when doc is locally created' , function ( done ) {
315
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
315
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
316
316
doc . pause ( ) ;
317
317
var calls = 0 ;
318
318
doc . create ( { age : 3 } , function ( err ) {
@@ -332,8 +332,8 @@ module.exports = function() {
332
332
} ) ;
333
333
334
334
it ( method + ' will wait for write when doc is locally created and will fail to submit' , function ( done ) {
335
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
336
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
335
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
336
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
337
337
doc2 . create ( { age : 5 } , function ( err ) {
338
338
if ( err ) return done ( err ) ;
339
339
doc . pause ( ) ;
@@ -357,7 +357,7 @@ module.exports = function() {
357
357
} ) ;
358
358
359
359
it ( 'unsubscribe calls back immediately on disconnect' , function ( done ) {
360
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
360
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
361
361
doc . subscribe ( function ( err ) {
362
362
if ( err ) return done ( err ) ;
363
363
doc . unsubscribe ( done ) ;
@@ -366,7 +366,7 @@ module.exports = function() {
366
366
} ) ;
367
367
368
368
it ( 'unsubscribe calls back immediately when already disconnected' , function ( done ) {
369
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
369
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
370
370
doc . subscribe ( function ( err ) {
371
371
if ( err ) return done ( err ) ;
372
372
doc . connection . close ( ) ;
@@ -375,8 +375,8 @@ module.exports = function() {
375
375
} ) ;
376
376
377
377
it ( 'subscribed client gets create from other client' , function ( done ) {
378
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
379
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
378
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
379
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
380
380
doc2 . subscribe ( function ( err ) {
381
381
if ( err ) return done ( err ) ;
382
382
doc2 . on ( 'create' , function ( context ) {
@@ -390,8 +390,8 @@ module.exports = function() {
390
390
} ) ;
391
391
392
392
it ( 'subscribed client gets op from other client' , function ( done ) {
393
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
394
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
393
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
394
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
395
395
doc . create ( { age : 3 } , function ( err ) {
396
396
if ( err ) return done ( err ) ;
397
397
doc2 . subscribe ( function ( err ) {
@@ -407,8 +407,8 @@ module.exports = function() {
407
407
} ) ;
408
408
409
409
it ( 'disconnecting stops op updates' , function ( done ) {
410
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
411
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
410
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
411
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
412
412
doc . create ( { age : 3 } , function ( err ) {
413
413
if ( err ) return done ( err ) ;
414
414
doc2 . subscribe ( function ( err ) {
@@ -424,8 +424,8 @@ module.exports = function() {
424
424
425
425
it ( 'backend.suppressPublish stops op updates' , function ( done ) {
426
426
var backend = this . backend ;
427
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
428
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
427
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
428
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
429
429
doc . create ( { age : 3 } , function ( err ) {
430
430
if ( err ) return done ( err ) ;
431
431
doc2 . subscribe ( function ( err ) {
@@ -440,8 +440,8 @@ module.exports = function() {
440
440
} ) ;
441
441
442
442
it ( 'unsubscribe stops op updates' , function ( done ) {
443
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
444
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
443
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
444
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
445
445
doc . create ( { age : 3 } , function ( err ) {
446
446
if ( err ) return done ( err ) ;
447
447
doc2 . subscribe ( function ( err ) {
@@ -460,8 +460,8 @@ module.exports = function() {
460
460
it ( 'doc destroy stops op updates' , function ( done ) {
461
461
var connection1 = this . backend . connect ( ) ;
462
462
var connection2 = this . backend . connect ( ) ;
463
- var doc = connection1 . get ( 'dogs' , 'fido' ) ;
464
- var doc2 = connection2 . get ( 'dogs' , 'fido' ) ;
463
+ var doc = connection1 . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
464
+ var doc2 = connection2 . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
465
465
doc . create ( { age : 3 } , function ( err ) {
466
466
if ( err ) return done ( err ) ;
467
467
doc2 . subscribe ( function ( err ) {
@@ -480,7 +480,7 @@ module.exports = function() {
480
480
481
481
it ( 'doc destroy removes doc from connection when doc is not subscribed' , function ( done ) {
482
482
var connection = this . backend . connect ( ) ;
483
- var doc = connection . get ( 'dogs' , 'fido' ) ;
483
+ var doc = connection . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
484
484
expect ( connection . getExisting ( 'dogs' , 'fido' ) ) . equal ( doc ) ;
485
485
doc . destroy ( function ( err ) {
486
486
if ( err ) return done ( err ) ;
@@ -492,9 +492,9 @@ module.exports = function() {
492
492
it ( 'bulk unsubscribe stops op updates' , function ( done ) {
493
493
var connection = this . backend . connect ( ) ;
494
494
var connection2 = this . backend . connect ( ) ;
495
- var doc = connection . get ( 'dogs' , 'fido' ) ;
496
- var fido = connection2 . get ( 'dogs' , 'fido' ) ;
497
- var spot = connection2 . get ( 'dogs' , 'spot' ) ;
495
+ var doc = connection . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
496
+ var fido = connection2 . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
497
+ var spot = connection2 . get ( 'dogs' , 'spot' ) . on ( 'error' , done ) ;
498
498
doc . create ( { age : 3 } , function ( err ) {
499
499
if ( err ) return done ( err ) ;
500
500
async . parallel ( [
@@ -528,8 +528,8 @@ module.exports = function() {
528
528
529
529
it ( 'a subscribed doc is re-subscribed after reconnect and gets any missing ops' , function ( done ) {
530
530
var backend = this . backend ;
531
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
532
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
531
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
532
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
533
533
doc . create ( { age : 3 } , function ( err ) {
534
534
if ( err ) return done ( err ) ;
535
535
doc2 . subscribe ( function ( err ) {
@@ -550,8 +550,8 @@ module.exports = function() {
550
550
} ) ;
551
551
552
552
it ( 'calling subscribe, unsubscribe, subscribe sync leaves a doc subscribed' , function ( done ) {
553
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
554
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
553
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
554
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
555
555
doc . create ( { age : 3 } , function ( err ) {
556
556
if ( err ) return done ( err ) ;
557
557
doc2 . subscribe ( ) ;
@@ -568,8 +568,8 @@ module.exports = function() {
568
568
569
569
it ( 'doc fetches ops to catch up if it receives a future op' , function ( done ) {
570
570
var backend = this . backend ;
571
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
572
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
571
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
572
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
573
573
doc . create ( { age : 3 } , function ( err ) {
574
574
if ( err ) return done ( err ) ;
575
575
doc2 . subscribe ( function ( err ) {
@@ -598,8 +598,8 @@ module.exports = function() {
598
598
599
599
it ( 'doc fetches ops to catch up if it receives multiple future ops' , function ( done ) {
600
600
var backend = this . backend ;
601
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
602
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
601
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
602
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
603
603
// Delaying op replies will cause multiple future ops to be received
604
604
// before the fetch to catch up completes
605
605
backend . use ( 'op' , function ( request , next ) {
@@ -614,7 +614,11 @@ module.exports = function() {
614
614
if ( -- wait ) return ;
615
615
expect ( doc2 . version ) . eql ( 5 ) ;
616
616
expect ( doc2 . data ) . eql ( { age : 122 } ) ;
617
- done ( ) ;
617
+ // Wait for whenNothingPending, because the doc might have kicked
618
+ // off multiple fetches, and some could be pending still. We want to
619
+ // resolve all inflight requests of the database before closing and
620
+ // proceeding to the next test
621
+ doc2 . whenNothingPending ( done ) ;
618
622
} ) ;
619
623
backend . suppressPublish = true ;
620
624
doc . submitOp ( { p : [ 'age' ] , na : 1 } , function ( err ) {
@@ -633,19 +637,20 @@ module.exports = function() {
633
637
} ) ;
634
638
635
639
describe ( 'doc.subscribed' , function ( ) {
636
- it ( 'is set to false initially' , function ( ) {
637
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
640
+ it ( 'is set to false initially' , function ( done ) {
641
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
638
642
expect ( doc . subscribed ) . equal ( false ) ;
643
+ done ( ) ;
639
644
} ) ;
640
645
641
- it ( 'remains false before subscribe call completes' , function ( ) {
642
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
643
- doc . subscribe ( ) ;
646
+ it ( 'remains false before subscribe call completes' , function ( done ) {
647
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
648
+ doc . subscribe ( done ) ;
644
649
expect ( doc . subscribed ) . equal ( false ) ;
645
650
} ) ;
646
651
647
652
it ( 'is set to true after subscribe completes' , function ( done ) {
648
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
653
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
649
654
doc . subscribe ( function ( err ) {
650
655
if ( err ) return done ( err ) ;
651
656
expect ( doc . subscribed ) . equal ( true ) ;
@@ -654,7 +659,7 @@ module.exports = function() {
654
659
} ) ;
655
660
656
661
it ( 'is not set to true after subscribe completes if already unsubscribed' , function ( done ) {
657
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
662
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
658
663
doc . subscribe ( function ( err ) {
659
664
if ( err ) return done ( err ) ;
660
665
expect ( doc . subscribed ) . equal ( false ) ;
@@ -664,7 +669,7 @@ module.exports = function() {
664
669
} ) ;
665
670
666
671
it ( 'is set to false sychronously in unsubscribe' , function ( done ) {
667
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
672
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
668
673
doc . subscribe ( function ( err ) {
669
674
if ( err ) return done ( err ) ;
670
675
expect ( doc . subscribed ) . equal ( true ) ;
@@ -675,7 +680,7 @@ module.exports = function() {
675
680
} ) ;
676
681
677
682
it ( 'is set to false sychronously on disconnect' , function ( done ) {
678
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
683
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) . on ( 'error' , done ) ;
679
684
doc . subscribe ( function ( err ) {
680
685
if ( err ) return done ( err ) ;
681
686
expect ( doc . subscribed ) . equal ( true ) ;
0 commit comments