adhearsion 2.3.0 → 2.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/CHANGELOG.md +3 -0
- data/LICENSE +1 -1
- data/README.markdown +2 -2
- data/adhearsion.gemspec +0 -1
- data/lib/adhearsion/punchblock_plugin/initializer.rb +1 -1
- data/lib/adhearsion/version.rb +1 -1
- data/spec/adhearsion/call_controller/dial_spec.rb +56 -57
- data/spec/adhearsion/call_controller/input_spec.rb +11 -16
- data/spec/adhearsion/call_controller/menu_dsl/menu_builder_spec.rb +6 -6
- data/spec/adhearsion/call_controller/menu_dsl/menu_spec.rb +10 -10
- data/spec/adhearsion/call_controller/output/async_player_spec.rb +3 -3
- data/spec/adhearsion/call_controller/output/player_spec.rb +1 -1
- data/spec/adhearsion/call_controller/output_spec.rb +2 -7
- data/spec/adhearsion/call_controller/record_spec.rb +11 -18
- data/spec/adhearsion/call_controller_spec.rb +35 -35
- data/spec/adhearsion/call_spec.rb +49 -35
- data/spec/adhearsion/calls_spec.rb +2 -2
- data/spec/adhearsion/console_spec.rb +22 -23
- data/spec/adhearsion/events_spec.rb +3 -3
- data/spec/adhearsion/initializer_spec.rb +33 -35
- data/spec/adhearsion/logging_spec.rb +3 -3
- data/spec/adhearsion/outbound_call_spec.rb +21 -19
- data/spec/adhearsion/plugin_spec.rb +9 -11
- data/spec/adhearsion/process_spec.rb +15 -14
- data/spec/adhearsion/punchblock_plugin/initializer_spec.rb +37 -42
- data/spec/adhearsion/punchblock_plugin_spec.rb +2 -2
- data/spec/adhearsion/router/evented_route_spec.rb +1 -1
- data/spec/adhearsion/router/openended_route_spec.rb +5 -5
- data/spec/adhearsion/router/route_spec.rb +9 -9
- data/spec/adhearsion/router/unaccepting_route_spec.rb +6 -6
- data/spec/adhearsion/router_spec.rb +8 -8
- data/spec/adhearsion/statistics_spec.rb +1 -1
- data/spec/adhearsion_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -2
- data/spec/support/call_controller_test_helpers.rb +11 -8
- data/spec/support/initializer_stubs.rb +1 -1
- data/spec/support/punchblock_mocks.rb +3 -2
- metadata +2 -16
@@ -125,8 +125,8 @@ module Adhearsion
|
|
125
125
|
|
126
126
|
it "is sends a hangup command for the call" do
|
127
127
|
call_id = call.id
|
128
|
-
|
129
|
-
|
128
|
+
PunchblockPlugin.stub :client => mock('Client')
|
129
|
+
PunchblockPlugin.client.should_receive(:execute_command).once.with(Punchblock::Command::Hangup.new, :async => true, :call_id => call_id)
|
130
130
|
|
131
131
|
subject << call
|
132
132
|
|
@@ -5,10 +5,9 @@ require 'spec_helper'
|
|
5
5
|
module Adhearsion
|
6
6
|
describe Console do
|
7
7
|
before do
|
8
|
-
|
8
|
+
Console.instance.stub :pry => nil
|
9
9
|
end
|
10
10
|
|
11
|
-
include FlexMock::ArgumentTypes
|
12
11
|
describe "providing hooks to include console functionality" do
|
13
12
|
it "should allow mixing in a module globally on all CallController classes" do
|
14
13
|
Console.mixin TestBiscuit
|
@@ -18,12 +17,12 @@ module Adhearsion
|
|
18
17
|
|
19
18
|
describe 'testing for libedit vs. readline' do
|
20
19
|
it 'should return true when detecting readline' do
|
21
|
-
|
20
|
+
Readline.should_receive(:emacs_editing_mode).once.and_return true
|
22
21
|
Console.libedit?.should be false
|
23
22
|
end
|
24
23
|
|
25
24
|
it 'should return false when detecting libedit' do
|
26
|
-
|
25
|
+
Readline.should_receive(:emacs_editing_mode).once.and_raise NotImplementedError
|
27
26
|
Console.libedit?.should be true
|
28
27
|
end
|
29
28
|
end
|
@@ -31,7 +30,7 @@ module Adhearsion
|
|
31
30
|
describe "#log_level" do
|
32
31
|
context "with a value" do
|
33
32
|
it "should set the log level via Adhearsion::Logging" do
|
34
|
-
|
33
|
+
Adhearsion::Logging.should_receive(:level=).once.with(:foo)
|
35
34
|
Console.log_level :foo
|
36
35
|
end
|
37
36
|
end
|
@@ -46,21 +45,21 @@ module Adhearsion
|
|
46
45
|
|
47
46
|
describe "#silence!" do
|
48
47
|
it "should delegate to Adhearsion::Logging" do
|
49
|
-
|
48
|
+
Adhearsion::Logging.should_receive(:silence!).once
|
50
49
|
Console.silence!
|
51
50
|
end
|
52
51
|
end
|
53
52
|
|
54
53
|
describe "#unsilence!" do
|
55
54
|
it "should delegate to Adhearsion::Logging" do
|
56
|
-
|
55
|
+
Adhearsion::Logging.should_receive(:unsilence!).once
|
57
56
|
Console.unsilence!
|
58
57
|
end
|
59
58
|
end
|
60
59
|
|
61
60
|
describe "#shutdown!" do
|
62
61
|
it "should tell the process to shutdown" do
|
63
|
-
|
62
|
+
Adhearsion::Process.should_receive(:shutdown!).once
|
64
63
|
Console.shutdown!
|
65
64
|
end
|
66
65
|
end
|
@@ -71,12 +70,12 @@ module Adhearsion
|
|
71
70
|
|
72
71
|
before do
|
73
72
|
Adhearsion.active_calls.clear!
|
74
|
-
|
73
|
+
call.stub(:id => call_id)
|
75
74
|
end
|
76
75
|
|
77
76
|
context "with a call" do
|
78
77
|
it "should interact with the call" do
|
79
|
-
|
78
|
+
Console.instance.should_receive(:interact_with_call).once.with call
|
80
79
|
Console.take call
|
81
80
|
end
|
82
81
|
end
|
@@ -88,7 +87,7 @@ module Adhearsion
|
|
88
87
|
end
|
89
88
|
|
90
89
|
it "should interact with the current call" do
|
91
|
-
|
90
|
+
Console.instance.should_receive(:interact_with_call).once.with call
|
92
91
|
Console.take
|
93
92
|
end
|
94
93
|
end
|
@@ -97,15 +96,15 @@ module Adhearsion
|
|
97
96
|
let(:call2) { Call.new }
|
98
97
|
|
99
98
|
before do
|
100
|
-
|
99
|
+
call2.stub :id => rand.to_s
|
101
100
|
Adhearsion.active_calls << call << call2
|
102
101
|
end
|
103
102
|
|
104
103
|
it "should allow selection of the call to use" do
|
105
104
|
mock_io = StringIO.new
|
106
105
|
Console.input = mock_io
|
107
|
-
|
108
|
-
|
106
|
+
mock_io.should_receive(:gets).once.and_return "1\n"
|
107
|
+
Console.instance.should_receive(:interact_with_call).once.with call2
|
109
108
|
Console.take
|
110
109
|
end
|
111
110
|
end
|
@@ -118,15 +117,15 @@ module Adhearsion
|
|
118
117
|
end
|
119
118
|
|
120
119
|
it "should interact with that call" do
|
121
|
-
|
120
|
+
Console.instance.should_receive(:interact_with_call).once.with call
|
122
121
|
Console.take call_id
|
123
122
|
end
|
124
123
|
end
|
125
124
|
|
126
125
|
context "if an active call with that ID does not exist" do
|
127
126
|
it "should log an error explaining that the call does not exist" do
|
128
|
-
|
129
|
-
|
127
|
+
Console.logger.should_receive(:error).once.with(/does not exist/)
|
128
|
+
Console.instance.should_receive(:interact_with_call).never
|
130
129
|
Console.take call_id
|
131
130
|
end
|
132
131
|
end
|
@@ -137,19 +136,19 @@ module Adhearsion
|
|
137
136
|
let(:call) { Call.new }
|
138
137
|
|
139
138
|
it "should pause the call's controllers, and unpause even if the interactive controller raises" do
|
140
|
-
|
141
|
-
|
142
|
-
|
139
|
+
call.should_receive(:pause_controllers).once.ordered
|
140
|
+
CallController.should_receive(:exec).once.ordered.and_raise StandardError
|
141
|
+
call.should_receive(:resume_controllers).once.ordered
|
143
142
|
lambda { Console.interact_with_call call }.should raise_error StandardError
|
144
143
|
end
|
145
144
|
|
146
145
|
it "should execute an interactive call controller on the call" do
|
147
|
-
|
146
|
+
CallController.should_receive(:exec).once do |c|
|
148
147
|
c.should be_a Console::InteractiveController
|
149
148
|
c.call.should be call
|
150
|
-
end
|
149
|
+
end
|
151
150
|
Console.interact_with_call call
|
152
151
|
end
|
153
152
|
end
|
154
153
|
end
|
155
|
-
end
|
154
|
+
end
|
@@ -21,7 +21,7 @@ module Adhearsion
|
|
21
21
|
o = nil
|
22
22
|
latch = CountDownLatch.new 1
|
23
23
|
|
24
|
-
|
24
|
+
Events.instance.should_receive(:handle_message).and_return do |message|
|
25
25
|
t = message.type
|
26
26
|
o = message.object
|
27
27
|
latch.countdown!
|
@@ -38,7 +38,7 @@ module Adhearsion
|
|
38
38
|
t = nil
|
39
39
|
o = nil
|
40
40
|
|
41
|
-
|
41
|
+
Events.instance.should_receive(:handle_message).and_return do |message|
|
42
42
|
sleep 0.25
|
43
43
|
t = message.type
|
44
44
|
o = message.object
|
@@ -65,7 +65,7 @@ module Adhearsion
|
|
65
65
|
end
|
66
66
|
|
67
67
|
it "should handle exceptions in event processing by raising the exception as an event" do
|
68
|
-
|
68
|
+
Events.instance.should_receive(:trigger).with(:exception, kind_of(ExceptionClass)).once
|
69
69
|
|
70
70
|
Events.register_handler :event, EventClass do |event|
|
71
71
|
raise ExceptionClass
|
@@ -12,9 +12,8 @@ describe Adhearsion::Initializer do
|
|
12
12
|
describe "#start" do
|
13
13
|
before do
|
14
14
|
::Logging.reset
|
15
|
-
|
16
|
-
|
17
|
-
flexmock(::Logging::Appenders).should_receive(:file).and_return(nil)
|
15
|
+
Adhearsion::Logging.should_receive(:start).once.and_return('')
|
16
|
+
::Logging::Appenders.stub(:file => nil)
|
18
17
|
Adhearsion.config = nil
|
19
18
|
end
|
20
19
|
|
@@ -35,7 +34,7 @@ describe Adhearsion::Initializer do
|
|
35
34
|
end
|
36
35
|
|
37
36
|
it "should start the stats aggregator" do
|
38
|
-
|
37
|
+
Adhearsion.should_receive(:statistics).at_least(:once)
|
39
38
|
stub_behavior_for_initializer_with_no_path_changing_behavior do
|
40
39
|
Adhearsion::Initializer.start
|
41
40
|
end
|
@@ -43,7 +42,7 @@ describe Adhearsion::Initializer do
|
|
43
42
|
|
44
43
|
it "should create a pid file in the app's path when given 'true' as the pid_file hash key argument" do
|
45
44
|
stub_behavior_for_initializer_with_no_path_changing_behavior do
|
46
|
-
|
45
|
+
File.should_receive(:open).with(File.join(path, 'adhearsion.pid'), 'w').at_least(:once)
|
47
46
|
ahn = Adhearsion::Initializer.start :pid_file => true
|
48
47
|
ahn.pid_file[0, path.length].should be == path
|
49
48
|
end
|
@@ -58,8 +57,8 @@ describe Adhearsion::Initializer do
|
|
58
57
|
|
59
58
|
it "should create a pid file in the app's path by default when daemonizing" do
|
60
59
|
stub_behavior_for_initializer_with_no_path_changing_behavior do
|
61
|
-
|
62
|
-
|
60
|
+
Adhearsion::CustomDaemonizer.should_receive(:daemonize).and_yield '123'
|
61
|
+
File.should_receive(:open).once.with(File.join(path, 'adhearsion.pid'), 'w')
|
63
62
|
ahn = Adhearsion::Initializer.start :mode => :daemon
|
64
63
|
ahn.pid_file[0, path.size].should be == path
|
65
64
|
end
|
@@ -67,7 +66,7 @@ describe Adhearsion::Initializer do
|
|
67
66
|
|
68
67
|
it "should NOT create a pid file in the app's path when daemonizing and :pid_file is given as false" do
|
69
68
|
stub_behavior_for_initializer_with_no_path_changing_behavior do
|
70
|
-
|
69
|
+
Adhearsion::CustomDaemonizer.should_receive(:daemonize).and_yield '123'
|
71
70
|
ahn = Adhearsion::Initializer.start :mode => :daemon, :pid_file => false
|
72
71
|
ahn.pid_file.should be nil
|
73
72
|
end
|
@@ -85,55 +84,55 @@ describe Adhearsion::Initializer do
|
|
85
84
|
|
86
85
|
it "should resolve the log file path to daemonize" do
|
87
86
|
stub_behavior_for_initializer_with_no_path_changing_behavior do
|
88
|
-
|
89
|
-
|
90
|
-
|
87
|
+
File.should_receive(:open).with(File.join(path, 'adhearsion.pid'), 'w').at_least(:once)
|
88
|
+
ahn = Adhearsion::Initializer.start :pid_file => true
|
89
|
+
ahn.resolve_log_file_path.should be == path + Adhearsion.config.platform.logging.outputters[0]
|
91
90
|
end
|
92
91
|
end
|
93
92
|
|
94
93
|
it "should resolve the log file path to daemonize when outputters is an Array" do
|
95
94
|
Adhearsion.config.platform.logging.outputters = ["log/my_application.log", "log/adhearsion.log"]
|
96
95
|
stub_behavior_for_initializer_with_no_path_changing_behavior do
|
97
|
-
|
98
|
-
|
99
|
-
|
96
|
+
File.should_receive(:open).with(File.join(path, 'adhearsion.pid'), 'w').at_least(:once)
|
97
|
+
ahn = Adhearsion::Initializer.start :pid_file => true
|
98
|
+
ahn.resolve_log_file_path.should be == path + Adhearsion.config.platform.logging.outputters[0]
|
100
99
|
end
|
101
100
|
end
|
102
101
|
|
103
102
|
it "should return a valid appenders array" do
|
104
103
|
stub_behavior_for_initializer_with_no_path_changing_behavior do
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
104
|
+
File.should_receive(:open).with(File.join(path, 'adhearsion.pid'), 'w').at_least(:once)
|
105
|
+
ahn = Adhearsion::Initializer.start :pid_file => true
|
106
|
+
appenders = ahn.init_get_logging_appenders
|
107
|
+
appenders.should have(2).items
|
108
|
+
appenders[1].should be_instance_of Logging::Appenders::Stdout
|
110
109
|
end
|
111
110
|
end
|
112
111
|
|
113
112
|
it "should initialize properly the log paths" do
|
114
113
|
ahn = stub_behavior_for_initializer_with_no_path_changing_behavior do
|
115
|
-
|
114
|
+
File.should_receive(:open).with(File.join(path, 'adhearsion.pid'), 'w').at_least(:once)
|
116
115
|
Adhearsion::Initializer.start :pid_file => true
|
117
116
|
end
|
118
|
-
|
117
|
+
Dir.should_receive(:mkdir).with("log/")
|
119
118
|
ahn.initialize_log_paths
|
120
119
|
end
|
121
120
|
|
122
121
|
it "should initialize properly the log paths when outputters is an array" do
|
123
122
|
Adhearsion.config.platform.logging.outputters = ["log/my_application.log", "log/test/adhearsion.log"]
|
124
123
|
ahn = stub_behavior_for_initializer_with_no_path_changing_behavior do
|
125
|
-
|
124
|
+
File.should_receive(:open).with(File.join(path, 'adhearsion.pid'), 'w').at_least(:once)
|
126
125
|
Adhearsion::Initializer.start :pid_file => true
|
127
126
|
end
|
128
|
-
|
129
|
-
|
127
|
+
Dir.should_receive(:mkdir).with("log/").twice
|
128
|
+
Dir.should_receive(:mkdir).with("log/test/").once
|
130
129
|
ahn.initialize_log_paths
|
131
130
|
end
|
132
131
|
|
133
132
|
it "should set the adhearsion proc name" do
|
134
133
|
stub_behavior_for_initializer_with_no_path_changing_behavior do
|
135
|
-
|
136
|
-
|
134
|
+
File.should_receive(:open).with(File.join(path, 'adhearsion.pid'), 'w').at_least(:once)
|
135
|
+
Adhearsion::LinuxProcName.should_receive(:set_proc_name).with(Adhearsion.config.platform.process_name)
|
137
136
|
Adhearsion::Initializer.start :pid_file => true
|
138
137
|
end
|
139
138
|
end
|
@@ -149,8 +148,7 @@ describe Adhearsion::Initializer do
|
|
149
148
|
describe "Initializing logger" do
|
150
149
|
before do
|
151
150
|
::Logging.reset
|
152
|
-
|
153
|
-
flexmock(::Logging::Appenders).should_receive(:file).and_return(nil)
|
151
|
+
::Logging::Appenders.should_receive(:file).and_return(nil)
|
154
152
|
Adhearsion.config = nil
|
155
153
|
end
|
156
154
|
|
@@ -163,8 +161,8 @@ describe Adhearsion::Initializer do
|
|
163
161
|
|
164
162
|
it "should start logging with valid parameters" do
|
165
163
|
stub_behavior_for_initializer_with_no_path_changing_behavior do
|
166
|
-
|
167
|
-
|
164
|
+
File.should_receive(:open).with(File.join(path, 'adhearsion.pid'), 'w').at_least(:once)
|
165
|
+
Adhearsion::Logging.should_receive(:start).once.with(kind_of(Array), :info, nil).and_return('')
|
168
166
|
Adhearsion::Initializer.start :pid_file => true
|
169
167
|
end
|
170
168
|
end
|
@@ -176,7 +174,7 @@ describe Adhearsion::Initializer do
|
|
176
174
|
end
|
177
175
|
|
178
176
|
it "should load the contents of lib directory" do
|
179
|
-
|
177
|
+
Dir.should_receive(:chdir).with(File.join(path, "lib")).and_return []
|
180
178
|
Adhearsion::Initializer.new.load_lib_folder
|
181
179
|
end
|
182
180
|
|
@@ -192,7 +190,8 @@ describe Adhearsion::Initializer do
|
|
192
190
|
|
193
191
|
it "should load the contents of the preconfigured directory" do
|
194
192
|
Adhearsion.config.platform.lib = "foo"
|
195
|
-
|
193
|
+
File.stub directory?: true
|
194
|
+
Dir.should_receive(:chdir).with(File.join(path, "foo")).and_return []
|
196
195
|
Adhearsion::Initializer.new.load_lib_folder
|
197
196
|
end
|
198
197
|
end
|
@@ -203,9 +202,8 @@ describe "Updating RAILS_ENV variable" do
|
|
203
202
|
|
204
203
|
before do
|
205
204
|
::Logging.reset
|
206
|
-
|
207
|
-
|
208
|
-
flexmock(::Logging::Appenders).should_receive(:file).and_return(nil)
|
205
|
+
Adhearsion::Logging.should_receive(:start).once.and_return('')
|
206
|
+
::Logging::Appenders.should_receive(:file).and_return(nil)
|
209
207
|
Adhearsion.config = nil
|
210
208
|
end
|
211
209
|
|
@@ -34,14 +34,14 @@ describe Adhearsion::Logging do
|
|
34
34
|
it "should log to the Object logger when given arguments" do
|
35
35
|
message = "o hai. ur home erly."
|
36
36
|
foo = Foo.new
|
37
|
-
|
37
|
+
::Logging.logger[Foo].should_receive(:info).once.with(message)
|
38
38
|
foo.logger.info message
|
39
39
|
end
|
40
40
|
|
41
41
|
it "should log to the Object logger when given arguments (II)" do
|
42
42
|
message = "o hai. ur home erly."
|
43
43
|
bar = Foo::Bar.new
|
44
|
-
|
44
|
+
::Logging.logger[Foo::Bar].should_receive(:info).once.with(message)
|
45
45
|
bar.logger.info message
|
46
46
|
end
|
47
47
|
|
@@ -86,7 +86,7 @@ describe Adhearsion::Logging do
|
|
86
86
|
end
|
87
87
|
|
88
88
|
it 'should reopen logfiles' do
|
89
|
-
|
89
|
+
::Logging.should_receive(:reopen).once
|
90
90
|
Adhearsion::Logging.reopen_logs
|
91
91
|
end
|
92
92
|
|
@@ -9,7 +9,7 @@ module Adhearsion
|
|
9
9
|
its(:id) { should be_nil }
|
10
10
|
its(:variables) { should be == {} }
|
11
11
|
|
12
|
-
let(:mock_client) {
|
12
|
+
let(:mock_client) { mock 'Punchblock Client' }
|
13
13
|
|
14
14
|
before do
|
15
15
|
PunchblockPlugin::Initializer.client = mock_client
|
@@ -24,35 +24,35 @@ module Adhearsion
|
|
24
24
|
|
25
25
|
before do
|
26
26
|
mock_call
|
27
|
-
|
27
|
+
OutboundCall.should_receive(:new).and_return mock_call
|
28
28
|
end
|
29
29
|
|
30
30
|
it "should dial the call to the correct endpoint and return it" do
|
31
|
-
|
31
|
+
mock_call.wrapped_object.should_receive(:dial).with(to, :from => 'foo').once
|
32
32
|
OutboundCall.originate(to, :from => 'foo').should be mock_call
|
33
33
|
end
|
34
34
|
|
35
35
|
it "should run through the router when the call is answered" do
|
36
|
-
|
36
|
+
mock_call.wrapped_object.should_receive(:dial).once
|
37
37
|
|
38
|
-
|
38
|
+
Adhearsion.router.should_receive(:handle).once.with(mock_call)
|
39
39
|
|
40
40
|
OutboundCall.originate(to) << Punchblock::Event::Answered.new
|
41
41
|
end
|
42
42
|
|
43
43
|
context "when a controller class is specified for the call" do
|
44
|
-
let(:controller)
|
44
|
+
let(:controller) { CallController }
|
45
45
|
|
46
46
|
it "should execute the controller on the call when it is answered" do
|
47
|
-
|
48
|
-
|
47
|
+
mock_call.should_receive(:dial).once.with(to, {})
|
48
|
+
mock_call.should_receive(:execute_controller).once.with kind_of(controller), kind_of(Proc)
|
49
49
|
call = OutboundCall.originate to, :controller => controller
|
50
50
|
call << Punchblock::Event::Answered.new
|
51
51
|
end
|
52
52
|
|
53
53
|
it "should hangup the call after all controllers have executed" do
|
54
|
-
|
55
|
-
|
54
|
+
mock_call.should_receive(:dial).once
|
55
|
+
mock_call.should_receive(:hangup).once
|
56
56
|
|
57
57
|
call = OutboundCall.originate to, :controller => controller
|
58
58
|
call << Punchblock::Event::Answered.new
|
@@ -61,8 +61,10 @@ module Adhearsion
|
|
61
61
|
|
62
62
|
context "with controller metadata specified" do
|
63
63
|
it "should set the metadata on the controller" do
|
64
|
-
|
65
|
-
|
64
|
+
mock_call.should_receive(:dial).once.with(to, {})
|
65
|
+
mock_call.should_receive(:execute_controller).once do |c|
|
66
|
+
c.is_a?(controller) && c.metadata == {:foo => 'bar'}
|
67
|
+
end
|
66
68
|
call = OutboundCall.originate to, :controller => controller, :controller_metadata => {:foo => 'bar'}
|
67
69
|
call << Punchblock::Event::Answered.new
|
68
70
|
end
|
@@ -71,8 +73,8 @@ module Adhearsion
|
|
71
73
|
|
72
74
|
context "when given a block" do
|
73
75
|
it "should execute the block as a controller on the call when it is answered" do
|
74
|
-
|
75
|
-
|
76
|
+
mock_call.should_receive(:dial).once.with(to, {})
|
77
|
+
mock_call.should_receive(:execute_controller).once.with(kind_of(CallController), kind_of(Proc)).and_return do |controller|
|
76
78
|
controller.block.call.should be == :foobar
|
77
79
|
end
|
78
80
|
|
@@ -85,7 +87,7 @@ module Adhearsion
|
|
85
87
|
end
|
86
88
|
|
87
89
|
describe "event handlers" do
|
88
|
-
let(:response) {
|
90
|
+
let(:response) { mock 'Response' }
|
89
91
|
|
90
92
|
describe "for answered events" do
|
91
93
|
let(:event) { Punchblock::Event::Answered.new }
|
@@ -100,7 +102,7 @@ module Adhearsion
|
|
100
102
|
|
101
103
|
describe "#dial" do
|
102
104
|
def expect_message_waiting_for_response(message)
|
103
|
-
|
105
|
+
subject.wrapped_object.should_receive(:write_and_await_response).once.with(message, 60).and_return do
|
104
106
|
message.target_call_id = call_id
|
105
107
|
message
|
106
108
|
end
|
@@ -141,13 +143,13 @@ module Adhearsion
|
|
141
143
|
end
|
142
144
|
|
143
145
|
it "should add the call to the active calls registry" do
|
144
|
-
Adhearsion.active_calls.clear
|
146
|
+
Adhearsion.active_calls.clear
|
145
147
|
subject.dial to, :from => from
|
146
148
|
Adhearsion.active_calls[call_id].should be subject
|
147
149
|
end
|
148
150
|
|
149
151
|
it "should immediately fire the :call_dialed event giving the call" do
|
150
|
-
|
152
|
+
Adhearsion::Events.should_receive(:trigger_immediately).once.with(:call_dialed, subject)
|
151
153
|
subject.dial to, :from => from
|
152
154
|
end
|
153
155
|
|
@@ -162,7 +164,7 @@ module Adhearsion
|
|
162
164
|
|
163
165
|
describe "basic control commands" do
|
164
166
|
def expect_no_message_waiting_for_response
|
165
|
-
|
167
|
+
subject.wrapped_object.should_receive(:write_and_await_response).never
|
166
168
|
end
|
167
169
|
|
168
170
|
describe '#accept' do
|