@@ -449,7 +449,7 @@ describe('events', () => {
449
449
key2 : { timestamp : 1500 , data : 'dataB' , clientId : 2 }
450
450
} )
451
451
452
- // Event listener should've been called 3 times
452
+ // Event listener should've been called 2 times
453
453
expect ( onUpdate . mock . calls ) . toEqual ( [
454
454
[ { key1 : { timestamp : 1000 , data : 'dataA' , clientId : 1 } } ] ,
455
455
[ { key1 : { timestamp : 1100 , data : null , clientId : 2 } } ]
@@ -501,6 +501,33 @@ describe('events', () => {
501
501
]
502
502
] )
503
503
} )
504
+
505
+ test ( '.once() should only be triggered once' , ( ) => {
506
+ const doc = VDoc ( )
507
+ const onUpdate = jest . fn ( )
508
+ const onUpdateMultiple = jest . fn ( )
509
+
510
+ // Events after .on()
511
+ doc . once ( 'update' , onUpdate )
512
+ doc . on ( 'update' , onUpdateMultiple )
513
+
514
+ doc . set ( 'key1' , 'dataA' , 1000 , 1 )
515
+ doc . set ( 'key1' , 'dataA' , 1000 , 1 )
516
+ doc . set ( 'key1' , 'dataA' , 1000 , 1 )
517
+ doc . set ( 'key1' , 'dataA' , 1000 , 1 )
518
+
519
+ expect ( onUpdate . mock . calls ) . toEqual ( [
520
+ [ { key1 : { timestamp : 1000 , data : 'dataA' , clientId : 1 } } ]
521
+ ] )
522
+
523
+ // Verify that regular onUpdate is called for each one
524
+ expect ( onUpdateMultiple . mock . calls ) . toEqual ( [
525
+ [ { key1 : { timestamp : 1000 , data : 'dataA' , clientId : 1 } } ] ,
526
+ [ { key1 : { timestamp : 1000 , data : 'dataA' , clientId : 1 } } ] ,
527
+ [ { key1 : { timestamp : 1000 , data : 'dataA' , clientId : 1 } } ] ,
528
+ [ { key1 : { timestamp : 1000 , data : 'dataA' , clientId : 1 } } ]
529
+ ] )
530
+ } )
504
531
} )
505
532
506
533
describe ( 'subdocs' , ( ) => {
0 commit comments