UNPKG

1.69 kBtext/coffeescriptView Raw
1{Evented} = require('../lib/karen')
2
3describe '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', ->