1 | {Evented} = require('../lib/karen')
|
2 |
|
3 | describe 'Evented', ->
|
4 | def 'evented', -> new Evented
|
5 |
|
6 | it 'does nothing when no listener has been added', ->
|
7 | @evented.emit 'event'
|
8 |
|
9 | it 'emits single event with no arguments', (done) ->
|
10 | @evented.on 'event', done
|
11 | @evented.emit 'event'
|
12 |
|
13 | it 'emits multiple events with no arguments', (done) ->
|
14 | count = 0
|
15 | checkDone = ->
|
16 | done() if (++count) is 2
|
17 |
|
18 | @evented.on 'event', checkDone
|
19 | @evented.on 'event', checkDone
|
20 | @evented.emit 'event'
|
21 |
|
22 | it 'emits event with single argument', (done) ->
|
23 | @evented.on 'event', (argument) ->
|
24 | done() if argument == 'argument'
|
25 |
|
26 | @evented.emit 'event', 'argument'
|
27 |
|
28 | it 'emits event with multiple arguments', (done) ->
|
29 | @evented.on 'event', (argument1, argument2) ->
|
30 | done() if argument1 == 'argument-1' &&
|
31 | argument2 == 'argument-2'
|
32 |
|
33 | @evented.emit 'event', 'argument-1', 'argument-2'
|
34 |
|
35 | it 'handles multiple events', (done) ->
|
36 | count = 0
|
37 | checkDone = ->
|
38 | done() if (++count) is 2
|
39 |
|
40 | @evented.on 'eventa', checkDone
|
41 | @evented.on 'eventb', checkDone
|
42 | @evented.emit 'eventa'
|
43 | @evented.emit 'eventb'
|
44 |
|
45 | it 'does not emit events added before adding listener', (done) ->
|
46 | @evented.emit 'event'
|
47 | @evented.on 'event', ->
|
48 | done('should not emit event, but did')
|
49 | done()
|
50 |
|
51 | describe '#remove', ->
|
52 | it 'removes event for specified listener', (done) ->
|
53 | @evented.on 'event', done
|
54 | @evented.remove 'event', done
|
55 | done()
|
56 |
|
57 | it 'does nothing if no such event', ->
|
58 | @evented.remove('event')
|
59 |
|
60 | it 'does nothing if no such listener', ->
|
61 | @evented.on 'event', ->
|
62 | @evented.remove 'event', ->
|