UNPKG

14.1 kBJavaScriptView Raw
1var assert = require('assert');
2var Builder = require('..').Builder;
3
4describe('ack hipchat builder', function () {
5
6 describe('#key', function () {
7
8 it('should accept a key value', function (done) {
9 var descriptor;
10 var builder = Builder({}, {
11 addWebhook: function () {},
12 ready: function (built) {
13 descriptor = built;
14 assert.equal(descriptor.key, 'test-key');
15 done();
16 }
17 });
18 builder.key('test-key');
19 });
20
21 });
22
23 describe('#name', function () {
24
25 it('should accept a name value', function (done) {
26 var descriptor;
27 var builder = Builder({}, {
28 addWebhook: function () {},
29 ready: function (built) {
30 descriptor = built;
31 assert.equal(descriptor.name, 'Test Name');
32 done();
33 }
34 });
35 builder.name('Test Name');
36 });
37
38 });
39
40 describe('#description', function () {
41
42 it('should accept a description value', function (done) {
43 var descriptor;
44 var builder = Builder({}, {
45 addWebhook: function () {},
46 ready: function (built) {
47 descriptor = built;
48 assert.equal(descriptor.description, 'Test description');
49 done();
50 }
51 });
52 builder.description('Test description');
53 });
54
55 });
56
57 describe('#vendor', function () {
58
59 it('should accept a vendor object', function (done) {
60 var descriptor;
61 var builder = Builder({}, {
62 addWebhook: function () {},
63 ready: function (built) {
64 descriptor = built;
65 assert.deepEqual(descriptor.vendor, {
66 name: 'Vendor Name',
67 url: 'http://example.com'
68 });
69 done();
70 }
71 });
72 builder.vendor({
73 name: 'Vendor Name',
74 url: 'http://example.com'
75 });
76 });
77
78 });
79
80 describe('#vendorName', function () {
81
82 it('should accept a vendor name', function (done) {
83 var descriptor;
84 var builder = Builder({}, {
85 addWebhook: function () {},
86 ready: function (built) {
87 descriptor = built;
88 assert.equal(descriptor.vendor.name, 'Vendor Name');
89 done();
90 }
91 });
92 builder.vendorName('Vendor Name');
93 });
94
95 });
96
97 describe('#vendorUrl', function () {
98
99 it('should accept a vendor url', function (done) {
100 var descriptor;
101 var builder = Builder({}, {
102 addWebhook: function () {},
103 ready: function (built) {
104 descriptor = built;
105 assert.equal(descriptor.vendor.url, 'http://example.com');
106 done();
107 }
108 });
109 builder.vendorUrl('http://example.com');
110 });
111
112 });
113
114 describe('#scopes', function () {
115
116 it('should accept the param signature (scope)', function (done) {
117 var descriptor;
118 var builder = Builder({}, {
119 addWebhook: function () {},
120 ready: function (built) {
121 descriptor = built;
122 assert.deepEqual(descriptor.capabilities.hipchatApiConsumer.scopes, ['send_notification']);
123 done();
124 }
125 });
126 builder.scopes('send_notification');
127 });
128
129 it('should accept the param signature (scopes)', function (done) {
130 var descriptor;
131 var builder = Builder({}, {
132 addWebhook: function () {},
133 ready: function (built) {
134 descriptor = built;
135 assert.deepEqual(descriptor.capabilities.hipchatApiConsumer.scopes, ['send_notification', 'view_group']);
136 done();
137 }
138 });
139 builder.scopes(['send_notification', 'view_group']);
140 });
141
142 it('should accept the param signature (scope...)', function (done) {
143 var descriptor;
144 var builder = Builder({}, {
145 addWebhook: function () {},
146 ready: function (built) {
147 descriptor = built;
148 assert.deepEqual(descriptor.capabilities.hipchatApiConsumer.scopes, ['send_notification', 'view_group', 'admin_room']);
149 done();
150 }
151 });
152 builder.scopes('send_notification', 'view_group', 'admin_room');
153 });
154
155 });
156
157 describe('#fromName', function () {
158
159 it('should accept a fromName value', function (done) {
160 var descriptor;
161 var builder = Builder({}, {
162 addWebhook: function () {},
163 ready: function (built) {
164 descriptor = built;
165 assert.equal(descriptor.capabilities.hipchatApiConsumer.fromName, 'Test Name');
166 done();
167 }
168 });
169 builder.fromName('Test Name');
170 });
171
172 });
173
174 describe('#allowGlobal', function () {
175
176 it('should accept the param signature (boolean)', function (done) {
177 var descriptor;
178 var builder = Builder({}, {
179 addWebhook: function () {},
180 ready: function (built) {
181 descriptor = built;
182 assert.equal(descriptor.capabilities.installable.allowGlobal, true);
183 done();
184 }
185 });
186 builder.allowGlobal(true);
187 });
188
189 });
190
191 describe('#allowRoom', function () {
192
193 it('should accept the param signature (boolean)', function (done) {
194 var descriptor;
195 var builder = Builder({}, {
196 addWebhook: function () {},
197 ready: function (built) {
198 descriptor = built;
199 assert.equal(descriptor.capabilities.installable.allowRoom, true);
200 done();
201 }
202 });
203 builder.allowRoom(true);
204 });
205
206 });
207
208 describe('#webhook', function () {
209
210 it('should accept the param signature (event, url)', function () {
211 var webhook, callback;
212 var builder = Builder({}, {
213 addWebhook: function (definition, cb) {
214 webhook = definition;
215 callback = cb;
216 },
217 ready: function () {}
218 });
219 builder.webhook('room_enter', '/room-enter');
220 assert.equal(webhook.event, 'room_enter');
221 assert.equal(webhook.url, '/room-enter');
222 assert.ok(!callback);
223 });
224
225 it('should accept the param signature (event, callback)', function () {
226 var webhook, callback;
227 var builder = Builder({}, {
228 addWebhook: function (definition, cb) {
229 webhook = definition;
230 callback = cb;
231 },
232 ready: function () {}
233 });
234 builder.webhook('room_enter', function *() {});
235 assert.equal(webhook.event, 'room_enter');
236 assert.ok(callback);
237 });
238
239 it('should reject the param signature (event, patternRe, url) when event != room_message', function () {
240 var webhook, callback;
241 var builder = Builder({}, {
242 addWebhook: function (definition, cb) {
243 webhook = definition;
244 callback = cb;
245 },
246 ready: function () {}
247 });
248 try {
249 builder.webhook('room_enter', /^\/foo(?:\s(.*)|$)/i, '/room-enter');
250 assert.fail();
251 } catch (e) {
252 assert.ok(/pattern not supported/.test(e.message));
253 }
254 });
255
256 it('should accept the param signature (event, patternRe, url)', function () {
257 var webhook, callback;
258 var builder = Builder({}, {
259 addWebhook: function (definition, cb) {
260 webhook = definition;
261 callback = cb;
262 },
263 ready: function () {}
264 });
265 builder.webhook('room_message', /^\/foo(?:\s(.*)|$)/i, '/room-message');
266 assert.equal(webhook.event, 'room_message');
267 assert.equal(webhook.pattern.toString(), /^\/foo(?:\s(.*)|$)/i.toString());
268 assert.equal(webhook.url, '/room-message');
269 assert.ok(!callback);
270 });
271
272 it('should accept the param signature (event, patternRe, callback)', function () {
273 var webhook, callback;
274 var builder = Builder({}, {
275 addWebhook: function (definition, cb) {
276 webhook = definition;
277 callback = cb;
278 },
279 ready: function () {}
280 });
281 builder.webhook('room_message', /^\/foo(?:\s(.*)|$)/i, function *() {});
282 assert.equal(webhook.event, 'room_message');
283 assert.equal(webhook.pattern.toString(), /^\/foo(?:\s(.*)|$)/i.toString());
284 assert.ok(callback);
285 });
286
287 it('should accept the param signature (event, name, url)', function () {
288 var webhook, callback;
289 var builder = Builder({}, {
290 addWebhook: function (definition, cb) {
291 webhook = definition;
292 callback = cb;
293 },
294 ready: function () {}
295 });
296 builder.webhook('room_enter', 'name', '/room-enter');
297 assert.equal(webhook.event, 'room_enter');
298 assert.equal(webhook.name, 'name');
299 assert.equal(webhook.url, '/room-enter');
300 assert.ok(!callback);
301 });
302
303 it('should accept the param signature (event, name, callback)', function () {
304 var webhook, callback;
305 var builder = Builder({}, {
306 addWebhook: function (definition, cb) {
307 webhook = definition;
308 callback = cb;
309 },
310 ready: function () {}
311 });
312 builder.webhook('room_enter', 'name', function *() {});
313 assert.equal(webhook.event, 'room_enter');
314 assert.equal(webhook.name, 'name');
315 assert.ok(callback);
316 });
317
318 it('should reject the param signature (event, name, patternRe, url) when event!=room_message', function () {
319 var webhook, callback;
320 var builder = Builder({}, {
321 addWebhook: function (definition, cb) {
322 webhook = definition;
323 callback = cb;
324 },
325 ready: function () {}
326 });
327 try {
328 builder.webhook('room_enter', 'name', /^\/foo(?:\s(.*)|$)/i, '/room-enter');
329 assert.fail();
330 } catch (e) {
331 assert.ok(/pattern not supported/.test(e.message));
332 }
333 });
334
335 it('should accept the param signature (event, name, patternRe, url)', function () {
336 var webhook, callback;
337 var builder = Builder({}, {
338 addWebhook: function (definition, cb) {
339 webhook = definition;
340 callback = cb;
341 },
342 ready: function () {}
343 });
344 builder.webhook('room_message', 'name', /^\/foo(?:\s(.*)|$)/i, '/room-message');
345 assert.equal(webhook.event, 'room_message');
346 assert.equal(webhook.name, 'name');
347 assert.equal(webhook.pattern.toString(), /^\/foo(?:\s(.*)|$)/i.toString());
348 assert.equal(webhook.url, '/room-message');
349 assert.ok(!callback);
350 });
351
352 it('should accept the param signature (event, name, patternRe, callback)', function () {
353 var webhook, callback;
354 var builder = Builder({}, {
355 addWebhook: function (definition, cb) {
356 webhook = definition;
357 callback = cb;
358 },
359 ready: function () {}
360 });
361 builder.webhook('room_message', 'name', /^\/foo(?:\s(.*)|$)/i, function *() {});
362 assert.equal(webhook.event, 'room_message');
363 assert.equal(webhook.name, 'name');
364 assert.equal(webhook.pattern.toString(), /^\/foo(?:\s(.*)|$)/i.toString());
365 assert.ok(callback);
366 });
367
368 it('should accept the param signature (object)', function () {
369 var webhook, callback;
370 var builder = Builder({}, {
371 addWebhook: function (definition, cb) {
372 webhook = definition;
373 callback = cb;
374 },
375 ready: function () {}
376 });
377 builder.webhook({
378 event: 'room_message',
379 name: 'name',
380 pattern: /^\/foo(?:\s(.*)|$)/i,
381 url: '/room-message'
382 });
383 assert.equal(webhook.event, 'room_message');
384 assert.equal(webhook.name, 'name');
385 assert.equal(webhook.pattern.toString(), /^\/foo(?:\s(.*)|$)/i.toString());
386 assert.equal(webhook.url, '/room-message');
387 assert.ok(!callback);
388 });
389
390 it('should reject the param signature (object) when pattern exists and event!=room_message', function () {
391 var webhook, callback;
392 var builder = Builder({}, {
393 addWebhook: function (definition, cb) {
394 webhook = definition;
395 callback = cb;
396 },
397 ready: function () {}
398 });
399 try {
400 builder.webhook({
401 event: 'room_enter',
402 name: 'name',
403 pattern: /^\/foo(?:\s(.*)|$)/i,
404 url: '/room-enter'
405 });
406 assert.fail();
407 } catch (e) {
408 assert.ok(/pattern not supported/.test(e.message));
409 }
410 });
411
412 it('should accept the param signature (object, callback) and report the callback when no url is given', function () {
413 var webhook, callback;
414 var builder = Builder({}, {
415 addWebhook: function (definition, cb) {
416 webhook = definition;
417 callback = cb;
418 },
419 ready: function () {}
420 });
421 builder.webhook({
422 event: 'room_message',
423 name: 'name',
424 pattern: /^\/foo(?:\s(.*)|$)/i
425 }, function *() {});
426 assert.equal(webhook.event, 'room_message');
427 assert.equal(webhook.name, 'name');
428 assert.equal(webhook.pattern.toString(), /^\/foo(?:\s(.*)|$)/i.toString());
429 assert.ok(callback);
430 });
431
432 it('should accept the param signature (object, callback) but not report the callback when a url is given', function () {
433 var webhook, callback;
434 var builder = Builder({}, {
435 addWebhook: function (definition, cb) {
436 webhook = definition;
437 callback = cb;
438 },
439 ready: function () {}
440 });
441 builder.webhook({
442 event: 'room_message',
443 name: 'name',
444 pattern: /^\/foo(?:\s(.*)|$)/i,
445 url: '/room-message'
446 }, function *() {});
447 assert.equal(webhook.event, 'room_message');
448 assert.equal(webhook.name, 'name');
449 assert.equal(webhook.pattern.toString(), /^\/foo(?:\s(.*)|$)/i.toString());
450 assert.ok(!callback);
451 });
452
453 });
454
455 describe('#configurable', function () {
456
457 it('should accept a path value', function (done) {
458 var descriptor;
459 var builder = Builder({}, {
460 addWebhook: function () {},
461 ready: function (built) {
462 descriptor = built;
463 assert.ok(descriptor.capabilities.configurable);
464 assert.equal(descriptor.capabilities.configurable.url, '/configure');
465 done();
466 }
467 });
468 builder.configurable('/configure');
469 });
470
471 });
472
473});