1 | chai = require 'chai'
|
2 | sinon = require 'sinon'
|
3 | chai.use require 'sinon-chai'
|
4 | Robot = require 'hubot/src/robot'
|
5 | TextMessage = require('hubot/src/message').TextMessage
|
6 |
|
7 | expect = chai.expect
|
8 |
|
9 | describe 'event-announcer', ->
|
10 |
|
11 | adapter = null
|
12 | robot = null
|
13 | user = null
|
14 |
|
15 | beforeEach (done) ->
|
16 |
|
17 | robot = new Robot(null, 'mock-adapter', false, 'Hubot')
|
18 |
|
19 | robot.adapter.on 'connected', ->
|
20 | (require '../src/event-announcer')(@robot)
|
21 |
|
22 | user = robot.brain.userForId('1', name: 'test', room: "#test")
|
23 | adapter = robot.adapter
|
24 |
|
25 | done()
|
26 |
|
27 | robot.run()
|
28 |
|
29 |
|
30 | afterEach ->
|
31 | robot.shutdown()
|
32 |
|
33 | it '"sub foo" subscribes user to foo', (done) ->
|
34 |
|
35 | adapter.on "send", (envelope, strings) ->
|
36 | expect(strings[0]).match /subscribed #test to foo/
|
37 | done()
|
38 |
|
39 | adapter.receive new TextMessage(user, "Hubot sub foo")
|
40 |
|
41 | it '"show my subs" show subscribers subscriptions', (done) ->
|
42 |
|
43 | adapter.receive new TextMessage(user, "Hubot sub foo")
|
44 |
|
45 | adapter.on "send", (envelope, strings) ->
|
46 | expect(strings[0]).match /#test is listening to: foo/
|
47 | done()
|
48 |
|
49 | adapter.receive new TextMessage(user, "Hubot show my subs")
|
50 |
|
51 | it 'when subscribed, an event will be sent to subscribers', (done) ->
|
52 |
|
53 | adapter.receive new TextMessage(user, "Hubot sub foo")
|
54 |
|
55 | adapter.on "send", (envelope, strings) ->
|
56 | expect(strings[0]).match /fooEvent/
|
57 | done()
|
58 |
|
59 | robot.emit "ea-event", { name: "foo", message: "fooEvent" }
|
60 |
|
61 | it 'unsubscribers should report an unsubscription', (done) ->
|
62 |
|
63 | adapter.receive new TextMessage(user, "Hubot sub foo")
|
64 |
|
65 | adapter.on "send", (envelope, strings) ->
|
66 | expect(strings[0]).match /unsubscribed #test from foo/
|
67 | done()
|
68 |
|
69 | adapter.receive new TextMessage(user, "Hubot unsub foo")
|
70 |
|
71 | it 'unsubscribers should not show in my subs', (done) ->
|
72 |
|
73 | adapter.receive new TextMessage(user, "Hubot sub foo")
|
74 | adapter.receive new TextMessage(user, "Hubot unsub foo")
|
75 |
|
76 | adapter.on "send", (envelope, strings) ->
|
77 | expect(strings[0]).match /no subs for #test/
|
78 | done()
|
79 |
|
80 | adapter.receive new TextMessage(user, "Hubot show my subs")
|