@@ -35,7 +35,7 @@ test('.trigger() calls the handler once for each call', function () {
35
35
36
36
events . trigger ( 'suprise' ) ;
37
37
events . trigger ( 'suprise' ) ;
38
- assert ( handler . callCount === 2 , 'Expected handler to be called twice' ) ;
38
+ assert ( handler . called === 2 , 'Expected handler to be called twice' ) ;
39
39
} ) ;
40
40
41
41
test ( '.trigger() passes additional arguments through to handler' , function ( ) {
@@ -48,21 +48,42 @@ test('.trigger() passes additional arguments through to handler', function () {
48
48
assert ( handler . args . lastCall [ 2 ] === 'three' , 'Expected third argument of handler to be three' ) ;
49
49
} ) ;
50
50
51
+ test ( '.trigger() allows handlers to be unbound in handler' , function ( ) {
52
+ var A = createSpy ( ) ;
53
+ var B = createSpy ( function ( ) { events . unbind ( 'suprise' , B ) ; } ) ;
54
+ var C = createSpy ( ) ;
55
+
56
+ events . bind ( 'suprise' , A ) ;
57
+ events . bind ( 'suprise' , B ) ;
58
+ events . bind ( 'suprise' , C ) ;
59
+
60
+ events . trigger ( 'suprise' ) ;
61
+ assert ( A . called === 1 , 'Expected A to be called once' ) ;
62
+ assert ( B . called === 1 , 'Expected B to be called once' ) ;
63
+ assert ( C . called === 1 , 'Expected C to be called once' ) ;
64
+
65
+ events . trigger ( 'suprise' ) ;
66
+ assert ( A . called === 2 , 'Expected A to be called twice' ) ;
67
+ assert ( B . called === 1 , 'Expected B to be called once' ) ;
68
+ assert ( C . called === 2 , 'Expected C to be called twice' ) ;
69
+ } ) ;
70
+
51
71
// Run the tests.
52
72
if ( require . main === module ) {
53
73
run ( test . suite ) ;
54
74
}
55
75
56
76
// Test Suite Helpers
57
77
58
- function createSpy ( ) {
78
+ function createSpy ( fn ) {
59
79
return function spy ( ) {
80
+ fn && fn . apply ( this , arguments ) ;
81
+
60
82
var args = Array . prototype . slice . call ( arguments ) ;
61
83
spy . args = ( spy . args || [ ] ) ;
62
84
spy . args . push ( args ) ;
63
85
spy . args . lastCall = args ;
64
- spy . called = true ;
65
- spy . callCount = ( spy . callCount || 0 ) + 1 ;
86
+ spy . called = ( spy . called || 0 ) + 1 ;
66
87
} ;
67
88
}
68
89
0 commit comments