1 | 'use strict'
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | const chai = require('chai')
|
8 | const sinon = require('sinon')
|
9 | chai.use(require('sinon-chai'))
|
10 | const mockery = require('mockery')
|
11 |
|
12 | const expect = chai.expect
|
13 |
|
14 |
|
15 | const Hubot = require('../es2015')
|
16 | const User = Hubot.User
|
17 | const Brain = Hubot.Brain
|
18 | const Robot = Hubot.Robot
|
19 | const Adapter = Hubot.Adapter
|
20 | const Response = Hubot.Response
|
21 | const Listener = Hubot.Listener
|
22 | const TextListener = Hubot.TextListener
|
23 | const Message = Hubot.Message
|
24 | const TextMessage = Hubot.TextMessage
|
25 | const EnterMessage = Hubot.EnterMessage
|
26 | const LeaveMessage = Hubot.LeaveMessage
|
27 | const TopicMessage = Hubot.TopicMessage
|
28 | const CatchAllMessage = Hubot.CatchAllMessage
|
29 | const loadBot = Hubot.loadBot
|
30 |
|
31 | describe('hubot/es2015', function () {
|
32 | it('exports User class', function () {
|
33 | class MyUser extends User {}
|
34 | const user = new MyUser('id123', { foo: 'bar' })
|
35 |
|
36 | expect(user).to.be.an.instanceof(User)
|
37 | expect(user.id).to.equal('id123')
|
38 | expect(user.foo).to.equal('bar')
|
39 | })
|
40 |
|
41 | it('exports Brain class', function () {
|
42 | class MyBrain extends Brain {}
|
43 | const robotMock = {
|
44 | on: sinon.spy()
|
45 | }
|
46 | const brain = new MyBrain(robotMock)
|
47 |
|
48 | expect(brain).to.be.an.instanceof(Brain)
|
49 | expect(robotMock.on).to.have.been.called
|
50 |
|
51 | brain.set('foo', 'bar')
|
52 | expect(brain.get('foo')).to.equal('bar')
|
53 | })
|
54 |
|
55 | it('exports Robot class', function () {
|
56 | mockery.enable({
|
57 | warnOnReplace: false,
|
58 | warnOnUnregistered: false
|
59 | })
|
60 | mockery.registerMock('hubot-mock-adapter', require('./fixtures/mock-adapter'))
|
61 |
|
62 | class MyRobot extends Robot {}
|
63 | const robot = new MyRobot(null, 'mock-adapter', false, 'TestHubot')
|
64 |
|
65 | expect(robot).to.be.an.instanceof(Robot)
|
66 | expect(robot.name).to.equal('TestHubot')
|
67 |
|
68 | mockery.disable()
|
69 | })
|
70 |
|
71 | it('exports Adapter class', function () {
|
72 | class MyAdapter extends Adapter {}
|
73 | const adapter = new MyAdapter('myrobot')
|
74 |
|
75 | expect(adapter).to.be.an.instanceof(Adapter)
|
76 | expect(adapter.robot).to.equal('myrobot')
|
77 | })
|
78 |
|
79 | it('exports Response class', function () {
|
80 | class MyResponse extends Response {}
|
81 | const robotMock = 'robotMock'
|
82 | const messageMock = {
|
83 | room: 'room',
|
84 | user: 'user'
|
85 | }
|
86 | const matchMock = 'matchMock'
|
87 | const response = new MyResponse(robotMock, messageMock, matchMock)
|
88 |
|
89 | expect(response).to.be.an.instanceof(Response)
|
90 | expect(response.message).to.equal(messageMock)
|
91 | expect(response.match).to.equal(matchMock)
|
92 | })
|
93 |
|
94 | it('exports Listener class', function () {
|
95 | class MyListener extends Listener {}
|
96 | const robotMock = 'robotMock'
|
97 | const matcherMock = 'matchMock'
|
98 | const callback = sinon.spy()
|
99 | const listener = new MyListener(robotMock, matcherMock, callback)
|
100 |
|
101 | expect(listener).to.be.an.instanceof(Listener)
|
102 | expect(listener.robot).to.equal(robotMock)
|
103 | expect(listener.matcher).to.equal(matcherMock)
|
104 | expect(listener.options).to.deep.include({
|
105 | id: null
|
106 | })
|
107 | expect(listener.callback).to.equal(callback)
|
108 | })
|
109 |
|
110 | it('exports TextListener class', function () {
|
111 | class MyTextListener extends TextListener {}
|
112 | const robotMock = 'robotMock'
|
113 | const regex = /regex/
|
114 | const callback = sinon.spy()
|
115 | const textListener = new MyTextListener(robotMock, regex, callback)
|
116 |
|
117 | expect(textListener).to.be.an.instanceof(TextListener)
|
118 | expect(textListener.regex).to.equal(regex)
|
119 | })
|
120 |
|
121 | it('exports Message class', function () {
|
122 | class MyMessage extends Message {}
|
123 | const userMock = {
|
124 | room: 'room'
|
125 | }
|
126 | const message = new MyMessage(userMock)
|
127 |
|
128 | expect(message).to.be.an.instanceof(Message)
|
129 | expect(message.user).to.equal(userMock)
|
130 | })
|
131 |
|
132 | it('exports TextMessage class', function () {
|
133 | class MyTextMessage extends TextMessage {}
|
134 | const userMock = {
|
135 | room: 'room'
|
136 | }
|
137 | const textMessage = new MyTextMessage(userMock, 'bla blah')
|
138 |
|
139 | expect(textMessage).to.be.an.instanceof(TextMessage)
|
140 | expect(textMessage).to.be.an.instanceof(Message)
|
141 | expect(textMessage.text).to.equal('bla blah')
|
142 | })
|
143 |
|
144 | it('exports EnterMessage class', function () {
|
145 | class MyEnterMessage extends EnterMessage {}
|
146 | const userMock = {
|
147 | room: 'room'
|
148 | }
|
149 | const enterMessage = new MyEnterMessage(userMock)
|
150 |
|
151 | expect(enterMessage).to.be.an.instanceof(EnterMessage)
|
152 | expect(enterMessage).to.be.an.instanceof(Message)
|
153 | })
|
154 |
|
155 | it('exports LeaveMessage class', function () {
|
156 | class MyLeaveMessage extends LeaveMessage {}
|
157 | const userMock = {
|
158 | room: 'room'
|
159 | }
|
160 | const leaveMessage = new MyLeaveMessage(userMock)
|
161 |
|
162 | expect(leaveMessage).to.be.an.instanceof(LeaveMessage)
|
163 | expect(leaveMessage).to.be.an.instanceof(Message)
|
164 | })
|
165 |
|
166 | it('exports TopicMessage class', function () {
|
167 | class MyTopicMessage extends TopicMessage {}
|
168 | const userMock = {
|
169 | room: 'room'
|
170 | }
|
171 | const topicMessage = new MyTopicMessage(userMock)
|
172 |
|
173 | expect(topicMessage).to.be.an.instanceof(TopicMessage)
|
174 | expect(topicMessage).to.be.an.instanceof(Message)
|
175 | })
|
176 |
|
177 | it('exports CatchAllMessage class', function () {
|
178 | class MyCatchAllMessage extends CatchAllMessage {}
|
179 | const messageMock = {
|
180 | user: {
|
181 | room: 'room'
|
182 | }
|
183 | }
|
184 | const catchAllMessage = new MyCatchAllMessage(messageMock)
|
185 |
|
186 | expect(catchAllMessage).to.be.an.instanceof(CatchAllMessage)
|
187 | expect(catchAllMessage).to.be.an.instanceof(Message)
|
188 | expect(catchAllMessage.message).to.equal(messageMock)
|
189 | expect(catchAllMessage.user).to.equal(messageMock.user)
|
190 | })
|
191 |
|
192 | it('exports loadBot function', function () {
|
193 | sinon.stub(Hubot, 'Robot')
|
194 |
|
195 | expect(loadBot).to.be.a('function')
|
196 | Hubot.loadBot('adapterPath', 'adapterName', 'enableHttpd', 'botName', 'botAlias')
|
197 | expect(Hubot.Robot).to.be.called.calledWith('adapterPath', 'adapterName', 'enableHttpd', 'botName', 'botAlias')
|
198 | })
|
199 | })
|