@@ -431,6 +431,7 @@ describe('Strongbus.Bus', () => {
431
431
let onActive : jasmine . Spy ;
432
432
let onWillIdle : jasmine . Spy ;
433
433
let onIdle : jasmine . Spy ;
434
+ let onError : jasmine . Spy ;
434
435
435
436
beforeEach ( ( ) => {
436
437
bus . hook ( 'willAddListener' , onWillAddListener = jasmine . createSpy ( 'onWillAddListener' ) ) ;
@@ -441,6 +442,7 @@ describe('Strongbus.Bus', () => {
441
442
bus . hook ( 'active' , onActive = jasmine . createSpy ( 'onActive' ) ) ;
442
443
bus . hook ( 'willIdle' , onWillIdle = jasmine . createSpy ( 'onWillIdle' ) ) ;
443
444
bus . hook ( 'idle' , onIdle = jasmine . createSpy ( 'onIdle' ) ) ;
445
+ bus . hook ( 'error' , onError = jasmine . createSpy ( 'error' ) ) ;
444
446
} ) ;
445
447
446
448
it ( 'allows subscription to meta events' , ( ) => {
@@ -561,6 +563,18 @@ describe('Strongbus.Bus', () => {
561
563
sub2 ( ) ;
562
564
} ) ;
563
565
566
+ it ( 'raises "error" when errors are thrown in the listener' , ( ) => {
567
+ const error = new Error ( 'Error in callback' ) ;
568
+ bus . on ( 'bar' , ( ) => {
569
+ throw error ;
570
+ } )
571
+ bus . emit ( 'bar' , true ) ;
572
+ expect ( onError ) . toHaveBeenCalledWith ( {
573
+ error,
574
+ event : 'bar'
575
+ } ) ;
576
+ } ) ;
577
+
564
578
describe ( 'given bus has delegates' , ( ) => {
565
579
let delegate : DelegateTestBus ;
566
580
let onDelegateWillAddListener : jasmine . Spy ;
@@ -627,6 +641,16 @@ describe('Strongbus.Bus', () => {
627
641
expect ( onActive ) . toHaveBeenCalledTimes ( 1 ) ;
628
642
} ) ;
629
643
644
+ it ( 'handles unsubscribes fired from hooks' , async ( ) => {
645
+ const sub1 = bus . on ( 'foo' , ( ) => { } ) ;
646
+ const sub2 = bus . on ( 'foo' , ( ) => { } ) ;
647
+ bus . hook ( 'willRemoveListener' , ( ) => sub2 ( ) ) ;
648
+
649
+ sub1 ( ) ;
650
+ expect ( onWillIdle ) . toHaveBeenCalledTimes ( 1 ) ;
651
+ expect ( onIdle ) . toHaveBeenCalledTimes ( 1 ) ;
652
+ } ) ;
653
+
630
654
it ( 'raises "idle" events independently of delegates' , ( ) => {
631
655
const foosub = bus . on ( 'foo' , onTestEvent ) ;
632
656
const fooSub2 = delegate . on ( 'foo' , onTestEvent ) ;
0 commit comments