UNPKG

3.66 kBJavaScriptView Raw
1var Q = require('q');
2var Handler = require('../lib/handler');
3
4describe('Handler', function () {
5 var handler;
6 var context;
7 var expectedRegionCode = 24;
8 var expectedNumber = '83912223344';
9 var config = {
10 beep: false,
11 agiParamName: 'agiParam',
12 resultDialPlanVarName: 'resultVar'
13 };
14
15 var finder = {
16 findCodeForNumber: function (number) {
17 expect(number).toBe(expectedNumber);
18 var defer = Q.defer();
19 defer.resolve(expectedRegionCode);
20 return defer.promise;
21 }
22 };
23
24 var logger = {
25 info: function (message, object){
26 return;
27 }
28 };
29
30 beforeEach(function () {
31 context = {
32 on: function (eventName, callback) {
33 callback({agiParam: expectedNumber});
34 },
35 answer: function (callback) {
36 callback();
37 },
38 streamFile: function (filename, digits, callback) {
39 callback();
40 },
41 setVariable: function (variableName, value, callback) {
42 callback();
43 },
44 end: function (callback) {
45 callback();
46 }
47 };
48 handler = new Handler(finder, logger, config);
49 });
50 it('should use context "variables" event', function (done) {
51 context.on = function (eventName) {
52 expect(eventName).toBe('variables');
53 done();
54 };
55 handler.handle(context);
56 });
57 it('should use context answer method', function (done) {
58 context.answer = function () {
59 done();
60 };
61 handler.handle(context);
62 });
63 it('should call context streamFile if beep option is set', function (done) {
64 config.beep = true;
65 context.streamFile = function (filename, acceptDigits) {
66 expect(filename).toBe('beep');
67 expect(acceptDigits).toBe('#');
68 done();
69 };
70 handler.handle(context);
71 });
72 it("shouldn't call context streamFile if beep option is not set", function (done) {
73 config.beep = false;
74 context.streamFile = function (filename, digits, callback) {
75 callback();
76 fail();
77 };
78 handler.handle(context).then(function () {
79 done();
80 });
81 });
82 it('should call context setVariable with expected region code', function (done) {
83 var expectedAgiVarName = 'testAgiVar';
84 config.resultDialPlanVarName = expectedAgiVarName;
85 context.setVariable = function (varName, value) {
86 expect(varName).toBe(expectedAgiVarName);
87 expect(value).toBe(expectedRegionCode);
88 done();
89 };
90 handler.handle(context);
91 });
92 it('should call context end', function (done) {
93 context.end = function () {
94 done();
95 };
96 handler.handle(context);
97 });
98 describe('on fails', function () {
99 beforeEach(function () {
100 context.answer = function (callback) {
101 callback(new Error('test error'));
102 }
103 });
104 it('should call context streamFile', function (done) {
105 context.streamFile = function (filename, digits) {
106 expect(filename).toBe('invalid');
107 expect(digits).toBe('#');
108 done();
109 };
110 handler.handle(context);
111 });
112 it('should call context end', function (done) {
113 context.end = function () {
114 done();
115 };
116 handler.handle(context);
117 });
118 });
119})
120;
\No newline at end of file