adhearsion 2.3.0 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/CHANGELOG.md +3 -0
  4. data/LICENSE +1 -1
  5. data/README.markdown +2 -2
  6. data/adhearsion.gemspec +0 -1
  7. data/lib/adhearsion/punchblock_plugin/initializer.rb +1 -1
  8. data/lib/adhearsion/version.rb +1 -1
  9. data/spec/adhearsion/call_controller/dial_spec.rb +56 -57
  10. data/spec/adhearsion/call_controller/input_spec.rb +11 -16
  11. data/spec/adhearsion/call_controller/menu_dsl/menu_builder_spec.rb +6 -6
  12. data/spec/adhearsion/call_controller/menu_dsl/menu_spec.rb +10 -10
  13. data/spec/adhearsion/call_controller/output/async_player_spec.rb +3 -3
  14. data/spec/adhearsion/call_controller/output/player_spec.rb +1 -1
  15. data/spec/adhearsion/call_controller/output_spec.rb +2 -7
  16. data/spec/adhearsion/call_controller/record_spec.rb +11 -18
  17. data/spec/adhearsion/call_controller_spec.rb +35 -35
  18. data/spec/adhearsion/call_spec.rb +49 -35
  19. data/spec/adhearsion/calls_spec.rb +2 -2
  20. data/spec/adhearsion/console_spec.rb +22 -23
  21. data/spec/adhearsion/events_spec.rb +3 -3
  22. data/spec/adhearsion/initializer_spec.rb +33 -35
  23. data/spec/adhearsion/logging_spec.rb +3 -3
  24. data/spec/adhearsion/outbound_call_spec.rb +21 -19
  25. data/spec/adhearsion/plugin_spec.rb +9 -11
  26. data/spec/adhearsion/process_spec.rb +15 -14
  27. data/spec/adhearsion/punchblock_plugin/initializer_spec.rb +37 -42
  28. data/spec/adhearsion/punchblock_plugin_spec.rb +2 -2
  29. data/spec/adhearsion/router/evented_route_spec.rb +1 -1
  30. data/spec/adhearsion/router/openended_route_spec.rb +5 -5
  31. data/spec/adhearsion/router/route_spec.rb +9 -9
  32. data/spec/adhearsion/router/unaccepting_route_spec.rb +6 -6
  33. data/spec/adhearsion/router_spec.rb +8 -8
  34. data/spec/adhearsion/statistics_spec.rb +1 -1
  35. data/spec/adhearsion_spec.rb +1 -1
  36. data/spec/spec_helper.rb +1 -2
  37. data/spec/support/call_controller_test_helpers.rb +11 -8
  38. data/spec/support/initializer_stubs.rb +1 -1
  39. data/spec/support/punchblock_mocks.rb +3 -2
  40. metadata +2 -16
@@ -11,6 +11,10 @@ describe Adhearsion::Plugin do
11
11
  defined?(FooBar) and Object.send(:remove_const, :"FooBar")
12
12
  end
13
13
 
14
+ before do
15
+ Adhearsion::PunchblockPlugin::Initializer.stub :start => true
16
+ end
17
+
14
18
  describe "inheritance" do
15
19
  after do
16
20
  defined?(FooBar) and Object.send(:remove_const, :"FooBar")
@@ -139,7 +143,6 @@ describe Adhearsion::Plugin do
139
143
 
140
144
  # 1 => Punchblock. Must be empty once punchblock initializer is an external Plugin
141
145
  Adhearsion::Plugin.initializers.should have(1).initializers
142
- flexmock(Adhearsion::PunchblockPlugin::Initializer).should_receive(:start).and_return true
143
146
  Adhearsion::Plugin.init_plugins
144
147
  end
145
148
 
@@ -152,9 +155,8 @@ describe Adhearsion::Plugin do
152
155
  end
153
156
  end
154
157
 
155
- flexmock(FooBar).should_receive(:log).once
158
+ FooBar.should_receive(:log).once
156
159
  Adhearsion::Plugin.initializers.length.should be 1
157
- flexmock(Adhearsion::PunchblockPlugin::Initializer).should_receive(:start).and_return true
158
160
  Adhearsion::Plugin.init_plugins
159
161
  end
160
162
 
@@ -179,8 +181,7 @@ describe Adhearsion::Plugin do
179
181
  end
180
182
  end
181
183
 
182
- flexmock(FooBar).should_receive(:log).times(3)
183
- flexmock(Adhearsion::PunchblockPlugin::Initializer).should_receive(:start).and_return true
184
+ FooBar.should_receive(:log).exactly(3).times
184
185
  Adhearsion::Plugin.init_plugins
185
186
  end
186
187
 
@@ -238,7 +239,6 @@ describe Adhearsion::Plugin do
238
239
 
239
240
  # May become 1 if Punchblock defines a runner.
240
241
  Adhearsion::Plugin.runners.should have(0).runners
241
- flexmock(Adhearsion::PunchblockPlugin::Initializer).should_receive(:start).and_return true
242
242
  Adhearsion::Plugin.run_plugins
243
243
  end
244
244
 
@@ -251,9 +251,8 @@ describe Adhearsion::Plugin do
251
251
  end
252
252
  end
253
253
 
254
- flexmock(FooBar).should_receive(:log).once
254
+ FooBar.should_receive(:log).once
255
255
  Adhearsion::Plugin.runners.length.should be 1
256
- flexmock(Adhearsion::PunchblockPlugin::Initializer).should_receive(:start).and_return true
257
256
  Adhearsion::Plugin.run_plugins
258
257
  end
259
258
 
@@ -278,8 +277,7 @@ describe Adhearsion::Plugin do
278
277
  end
279
278
  end
280
279
 
281
- flexmock(FooBar).should_receive(:log).times(3)
282
- flexmock(Adhearsion::PunchblockPlugin::Initializer).should_receive(:start).and_return true
280
+ FooBar.should_receive(:log).exactly(3).times
283
281
  Adhearsion::Plugin.run_plugins
284
282
  end
285
283
 
@@ -375,7 +373,7 @@ describe Adhearsion::Plugin do
375
373
  def self.foo
376
374
  end
377
375
  end
378
- flexmock(FooBar).should_receive(:foo).once
376
+ FooBar.should_receive(:foo).once
379
377
  Adhearsion::Plugin.load_tasks
380
378
  end
381
379
 
@@ -13,8 +13,8 @@ module Adhearsion
13
13
  end
14
14
 
15
15
  it 'should trigger :stop_requested events on #shutdown' do
16
- flexmock(Events).should_receive(:trigger_immediately).once.with(:stop_requested).ordered
17
- flexmock(Events).should_receive(:trigger_immediately).once.with(:shutdown).ordered
16
+ Events.should_receive(:trigger_immediately).once.with(:stop_requested).ordered
17
+ Events.should_receive(:trigger_immediately).once.with(:shutdown).ordered
18
18
  Adhearsion::Process.booted
19
19
  Adhearsion::Process.shutdown
20
20
  sleep 0.2
@@ -25,11 +25,11 @@ module Adhearsion
25
25
  calls = ThreadSafeArray.new
26
26
  3.times do
27
27
  fake_call = Object.new
28
- flexmock(fake_call).should_receive(:hangup).once
28
+ fake_call.should_receive(:hangup).once
29
29
  calls << fake_call
30
30
  end
31
- flexmock(Adhearsion).should_receive(:active_calls).and_return calls
32
- flexmock(Adhearsion::Process.instance).should_receive(:final_shutdown).once
31
+ Adhearsion.should_receive(:active_calls).and_return calls
32
+ Adhearsion::Process.instance.should_receive(:final_shutdown).once
33
33
  calls = []
34
34
  3.times do
35
35
  calls << Thread.new do
@@ -42,15 +42,16 @@ module Adhearsion
42
42
  end
43
43
 
44
44
  it 'should terminate the process immediately on #force_stop' do
45
- flexmock(::Process).should_receive(:exit).with(1).once.and_return true
45
+ ::Process.should_receive(:exit).with(1).once.and_return true
46
46
  Adhearsion::Process.force_stop
47
47
  end
48
48
 
49
49
  describe "#final_shutdown" do
50
50
  it "should hang up active calls" do
51
51
  3.times do
52
- fake_call = flexmock Call.new, :id => random_call_id
53
- flexmock(fake_call).should_receive(:hangup).once
52
+ fake_call = Call.new
53
+ fake_call.stub :id => random_call_id
54
+ fake_call.should_receive(:hangup).once
54
55
  Adhearsion.active_calls << fake_call
55
56
  end
56
57
 
@@ -62,9 +63,9 @@ module Adhearsion
62
63
  it "should trigger shutdown handlers synchronously" do
63
64
  foo = lambda { |b| b }
64
65
 
65
- flexmock(foo).should_receive(:[]).once.with(:a).ordered
66
- flexmock(foo).should_receive(:[]).once.with(:b).ordered
67
- flexmock(foo).should_receive(:[]).once.with(:c).ordered
66
+ foo.should_receive(:[]).once.with(:a).ordered
67
+ foo.should_receive(:[]).once.with(:b).ordered
68
+ foo.should_receive(:[]).once.with(:c).ordered
68
69
 
69
70
  Events.shutdown { sleep 2; foo[:a] }
70
71
  Events.shutdown { sleep 1; foo[:b] }
@@ -74,7 +75,7 @@ module Adhearsion
74
75
  end
75
76
 
76
77
  it "should stop the console" do
77
- flexmock(Console).should_receive(:stop).once
78
+ Console.should_receive(:stop).once
78
79
  Adhearsion::Process.final_shutdown
79
80
  end
80
81
  end
@@ -88,13 +89,13 @@ module Adhearsion
88
89
  Adhearsion::Process.state_name.should be :rejecting
89
90
  Adhearsion::Process.shutdown
90
91
  Adhearsion::Process.state_name.should be :stopped
91
- flexmock(Adhearsion::Process.instance).should_receive(:die_now!).once
92
+ Adhearsion::Process.instance.should_receive(:die_now!).once
92
93
  Adhearsion::Process.shutdown
93
94
  sleep 0.2
94
95
  end
95
96
 
96
97
  it 'should forcibly kill the Adhearsion process on :force_stop' do
97
- flexmock(::Process).should_receive(:exit).once.with(1)
98
+ ::Process.should_receive(:exit).once.with(1)
98
99
  Adhearsion::Process.force_stop
99
100
  end
100
101
  end
@@ -26,7 +26,7 @@ module Adhearsion
26
26
 
27
27
  def initialize_punchblock(options = {})
28
28
  reset_default_config
29
- flexmock(Initializer).should_receive(:connect)
29
+ Initializer.stub(:connect)
30
30
  Adhearsion.config.punchblock do |config|
31
31
  config.platform = options[:platform] if options.has_key?(:platform)
32
32
  config.username = options[:username] if options.has_key?(:username)
@@ -47,16 +47,19 @@ module Adhearsion
47
47
  Adhearsion.config[:punchblock]
48
48
  end
49
49
 
50
+ let(:call_id) { rand }
51
+ let(:offer) { Punchblock::Event::Offer.new :target_call_id => call_id }
52
+ let(:mock_call) { Call.new }
53
+ let(:mock_client) { mock 'Client' }
54
+
50
55
  before do
56
+ mock_call.stub :id => call_id
57
+ mock_client.stub :event_handler= => true
51
58
  Events.refresh!
52
- flexmock Adhearsion::Process, :fqdn => 'hostname'
53
- flexmock ::Process, :pid => 1234
59
+ Adhearsion::Process.stub :fqdn => 'hostname'
60
+ ::Process.stub :pid => 1234
54
61
  end
55
62
 
56
- let(:call_id) { rand }
57
- let(:offer) { Punchblock::Event::Offer.new :target_call_id => call_id }
58
- let(:mock_call) { flexmock Call.new, :id => call_id }
59
-
60
63
  describe "starts the client with the default values" do
61
64
  subject { initialize_punchblock }
62
65
 
@@ -108,28 +111,24 @@ module Adhearsion
108
111
  it "starts the client with the correct resource" do
109
112
  username = "usera@127.0.0.1/hostname-1234"
110
113
 
111
- flexmock(Punchblock::Connection::XMPP).should_receive(:new).once.with(FlexMock.hsh :username => username).and_return do
112
- flexmock 'Client', :event_handler= => true
113
- end
114
+ Punchblock::Connection::XMPP.should_receive(:new).once.with(hash_including :username => username).and_return mock_client
114
115
  initialize_punchblock
115
116
  end
116
117
 
117
118
  it "starts the client with any overridden settings" do
118
119
  overrides = {:username => 'userb@127.0.0.1/foo', :password => '123', :host => 'foo.bar.com', :port => 200, :connection_timeout => 20, :root_domain => 'foo.com', :calls_domain => 'call.foo.com', :mixers_domain => 'mixer.foo.com', :media_engine => :swift, :default_voice => :hal}
119
120
 
120
- flexmock(Punchblock::Connection::XMPP).should_receive(:new).once.with(overrides).and_return do
121
- flexmock 'Client', :event_handler= => true
122
- end
121
+ Punchblock::Connection::XMPP.should_receive(:new).once.with(overrides).and_return mock_client
123
122
  initialize_punchblock overrides
124
123
  end
125
124
 
126
125
  describe "#connect" do
127
126
  it 'should block until the connection is established' do
128
127
  reset_default_config
129
- mock_connection = flexmock :mock_connection
128
+ mock_connection = mock :mock_connection
130
129
  mock_connection.should_receive(:register_event_handler).once
131
- flexmock(Punchblock::Client).should_receive(:new).once.and_return mock_connection
132
- flexmock(mock_connection).should_receive(:run).once
130
+ Punchblock::Client.should_receive(:new).once.and_return mock_connection
131
+ mock_connection.should_receive(:run).once
133
132
  t = Thread.new { Initializer.init; Initializer.run }
134
133
  t.join 5
135
134
  t.status.should be == "sleep"
@@ -139,14 +138,12 @@ module Adhearsion
139
138
  end
140
139
 
141
140
  describe '#connect_to_server' do
142
- let(:mock_client) { flexmock :client }
143
-
144
141
  before :each do
145
142
  Adhearsion::Process.reset
146
143
  Initializer.config = reset_default_config
147
144
  Initializer.config.reconnect_attempts = 1
148
- flexmock(Adhearsion::Logging.get_logger(Initializer)).should_receive(:fatal).at_most.once
149
- flexmock(Initializer).should_receive(:client).and_return mock_client
145
+ Adhearsion::Logging.get_logger(Initializer).should_receive(:fatal).at_most(:once)
146
+ Initializer.stub(:client).and_return mock_client
150
147
  end
151
148
 
152
149
  after :each do
@@ -156,27 +153,27 @@ module Adhearsion
156
153
  it 'should reset the Adhearsion process state to "booting"' do
157
154
  Adhearsion::Process.booted
158
155
  Adhearsion::Process.state_name.should be == :running
159
- mock_client.should_receive(:run).and_raise Punchblock::DisconnectedError
160
- flexmock(Adhearsion::Process).should_receive(:reset).at_least.once
156
+ mock_client.stub(:run).and_raise Punchblock::DisconnectedError
157
+ Adhearsion::Process.should_receive(:reset).at_least(:once)
161
158
  Initializer.connect_to_server
162
159
  end
163
160
 
164
161
  it 'should retry the connection the specified number of times' do
165
162
  Initializer.config.reconnect_attempts = 3
166
- mock_client.should_receive(:run).and_raise Punchblock::DisconnectedError
163
+ mock_client.stub(:run).and_raise Punchblock::DisconnectedError
167
164
  Initializer.connect_to_server
168
165
  Initializer.attempts.should be == 3
169
166
  end
170
167
 
171
168
  it 'should preserve a Punchblock::ProtocolError exception and give up' do
172
- mock_client.should_receive(:run).and_raise Punchblock::ProtocolError
169
+ mock_client.stub(:run).and_raise Punchblock::ProtocolError
173
170
  expect { Initializer.connect_to_server }.to raise_error Punchblock::ProtocolError
174
171
  end
175
172
 
176
173
  it 'should not attempt to reconnect if Adhearsion is shutting down' do
177
174
  Adhearsion::Process.booted
178
175
  Adhearsion::Process.shutdown
179
- mock_client.should_receive(:run).and_raise Punchblock::DisconnectedError
176
+ mock_client.stub(:run).and_raise Punchblock::DisconnectedError
180
177
  Initializer.should_not raise_error Punchblock::DisconnectedError
181
178
  end
182
179
  end
@@ -185,9 +182,7 @@ module Adhearsion
185
182
  let(:overrides) { {:username => 'test', :password => '123', :host => 'foo.bar.com', :port => 200, :connection_timeout => 20, :root_domain => 'foo.com', :calls_domain => 'call.foo.com', :mixers_domain => 'mixer.foo.com', :media_engine => :swift, :default_voice => :hal} }
186
183
 
187
184
  it 'should start an Asterisk PB connection' do
188
- flexmock(Punchblock::Connection::Asterisk).should_receive(:new).once.with(overrides).and_return do
189
- flexmock 'Client', :event_handler= => true
190
- end
185
+ Punchblock::Connection::Asterisk.should_receive(:new).once.with(overrides).and_return mock_client
191
186
  initialize_punchblock overrides.merge(:platform => :asterisk)
192
187
  end
193
188
  end
@@ -196,15 +191,13 @@ module Adhearsion
196
191
  let(:overrides) { {:username => 'test', :password => '123', :host => 'foo.bar.com', :port => 200, :connection_timeout => 20, :root_domain => 'foo.com', :calls_domain => 'call.foo.com', :mixers_domain => 'mixer.foo.com', :media_engine => :swift, :default_voice => :hal} }
197
192
 
198
193
  it 'should start an Asterisk PB connection' do
199
- flexmock(Punchblock::Connection::Freeswitch).should_receive(:new).once.with(overrides).and_return do
200
- flexmock 'Client', :event_handler= => true
201
- end
194
+ Punchblock::Connection::Freeswitch.should_receive(:new).once.with(overrides).and_return mock_client
202
195
  initialize_punchblock overrides.merge(:platform => :freeswitch)
203
196
  end
204
197
  end
205
198
 
206
199
  it 'should place events from Punchblock into the event handler' do
207
- flexmock(Events.instance).should_receive(:trigger).once.with(:punchblock, offer)
200
+ Events.instance.should_receive(:trigger).once.with(:punchblock, offer)
208
201
  initialize_punchblock
209
202
  Initializer.client.handle_event offer
210
203
  end
@@ -212,8 +205,8 @@ module Adhearsion
212
205
  describe "dispatching an offer" do
213
206
  before do
214
207
  initialize_punchblock
215
- flexmock(Adhearsion::Process).should_receive(:state_name).once.and_return process_state
216
- flexmock(Adhearsion.active_calls).should_receive(:from_offer).once.and_return mock_call
208
+ Adhearsion::Process.should_receive(:state_name).once.and_return process_state
209
+ Adhearsion.active_calls.should_receive(:from_offer).once.and_return mock_call
217
210
  end
218
211
 
219
212
  context "when the Adhearsion::Process is :booting" do
@@ -232,7 +225,7 @@ module Adhearsion
232
225
  Adhearsion.router do
233
226
  route 'foobar', Class.new
234
227
  end
235
- flexmock(Adhearsion.router).should_receive(:handle).once.with mock_call
228
+ Adhearsion.router.should_receive(:handle).once.with mock_call
236
229
  end
237
230
  end
238
231
  end
@@ -257,8 +250,10 @@ module Adhearsion
257
250
  end
258
251
 
259
252
  describe "dispatching a component event" do
260
- let(:component) { flexmock 'ComponentNode' }
261
- let(:mock_event) { flexmock 'Event', :target_call_id => call_id, :source => component }
253
+ let(:component) { mock 'ComponentNode' }
254
+ let(:mock_event) { mock 'Event' }
255
+
256
+ before { mock_event.stub target_call_id: call_id, source: component }
262
257
 
263
258
  before do
264
259
  initialize_punchblock
@@ -271,7 +266,9 @@ module Adhearsion
271
266
  end
272
267
 
273
268
  describe "dispatching a call event" do
274
- let(:mock_event) { flexmock 'Event', :target_call_id => call_id }
269
+ let(:mock_event) { mock 'Event' }
270
+
271
+ before { mock_event.stub target_call_id: call_id }
275
272
 
276
273
  describe "with an active call" do
277
274
  before do
@@ -280,16 +277,14 @@ module Adhearsion
280
277
  end
281
278
 
282
279
  it "should place the event in the call's inbox" do
283
- mock_call.should_receive(:deliver_message!).once.with(mock_event)
280
+ mock_call.async.should_receive(:deliver_message).once.with(mock_event)
284
281
  Initializer.dispatch_call_event mock_event
285
282
  end
286
283
  end
287
284
 
288
285
  describe "with an inactive call" do
289
- let(:mock_event) { flexmock 'Event', :target_call_id => call_id }
290
-
291
286
  it "should log an error" do
292
- flexmock(Adhearsion::Logging.get_logger(Initializer)).should_receive(:error).once.with("Event received for inactive call #{call_id}: #{mock_event.inspect}")
287
+ Adhearsion::Logging.get_logger(Initializer).should_receive(:error).once.with("Event received for inactive call #{call_id}: #{mock_event.inspect}")
293
288
  Initializer.dispatch_call_event mock_event
294
289
  end
295
290
  end
@@ -13,13 +13,13 @@ module Adhearsion
13
13
  describe '#execute_component' do
14
14
  let(:message) { Punchblock::Command::Accept.new }
15
15
  let(:response) { :foo }
16
- let(:mock_client) { flexmock 'Client' }
16
+ let(:mock_client) { mock 'Client' }
17
17
 
18
18
  let(:execute_expectation) { PunchblockPlugin.client.should_receive(:execute_command).once }
19
19
 
20
20
  before do
21
21
  PunchblockPlugin::Initializer.client = mock_client
22
- flexmock message, :execute! => true
22
+ message.stub :execute! => true
23
23
  message.response = response
24
24
  execute_expectation
25
25
  end
@@ -24,7 +24,7 @@ module Adhearsion
24
24
  end
25
25
 
26
26
  it "should yield the call to the block" do
27
- flexmock(call).should_receive(:foo).once
27
+ call.should_receive(:foo).once
28
28
  route.dispatch call
29
29
  end
30
30
  end
@@ -18,25 +18,25 @@ module Adhearsion
18
18
 
19
19
  let(:latch) { CountDownLatch.new 1 }
20
20
 
21
- before { flexmock(call.wrapped_object).should_receive :write_and_await_response }
21
+ before { call.wrapped_object.stub :write_and_await_response }
22
22
 
23
23
  context "via a call controller" do
24
24
  let(:controller) { CallController }
25
25
  subject(:route) { Route.new 'foobar', controller }
26
26
 
27
27
  it "should accept the call" do
28
- flexmock(call).should_receive(:accept).once
28
+ call.should_receive(:accept).once
29
29
  route.dispatch call, lambda { latch.countdown! }
30
30
  latch.wait(2).should be true
31
31
  end
32
32
 
33
33
  it "should instruct the call to use an instance of the controller" do
34
- flexmock(call).should_receive(:execute_controller).once.with controller, Proc
34
+ call.should_receive(:execute_controller).once.with kind_of(controller), kind_of(Proc)
35
35
  route.dispatch call
36
36
  end
37
37
 
38
38
  it "should not hangup the call after all controllers have executed" do
39
- flexmock(call).should_receive(:hangup).never
39
+ call.should_receive(:hangup).never
40
40
  route.dispatch call, lambda { latch.countdown! }
41
41
  latch.wait(2).should be true
42
42
  end
@@ -50,7 +50,7 @@ module Adhearsion
50
50
  end
51
51
 
52
52
  it "should instruct the call to use a CallController with the correct block" do
53
- flexmock(call).should_receive(:execute_controller).once.with(CallController, Proc).and_return do |controller|
53
+ call.should_receive(:execute_controller).once.with(kind_of(CallController), kind_of(Proc)).and_return do |controller|
54
54
  controller.block.call.should be == :foobar
55
55
  end
56
56
  route.dispatch call
@@ -109,32 +109,32 @@ module Adhearsion
109
109
 
110
110
  let(:latch) { CountDownLatch.new 1 }
111
111
 
112
- before { flexmock(call.wrapped_object).should_receive :write_and_await_response }
112
+ before { call.wrapped_object.should_receive :write_and_await_response }
113
113
 
114
114
  context "via a call controller" do
115
115
  let(:controller) { CallController }
116
116
  let(:route) { Route.new 'foobar', controller }
117
117
 
118
118
  it "should immediately fire the :call_routed event giving the call and route" do
119
- flexmock(Adhearsion::Events).should_receive(:trigger_immediately).once.with(:call_routed, call: call, route: route)
120
- flexmock(call).should_receive(:hangup).once
119
+ Adhearsion::Events.should_receive(:trigger_immediately).once.with(:call_routed, call: call, route: route)
120
+ call.should_receive(:hangup).once
121
121
  route.dispatch call, lambda { latch.countdown! }
122
122
  latch.wait(2).should be true
123
123
  end
124
124
 
125
125
  it "should accept the call" do
126
- flexmock(call).should_receive(:accept).once
126
+ call.should_receive(:accept).once
127
127
  route.dispatch call, lambda { latch.countdown! }
128
128
  latch.wait(2).should be true
129
129
  end
130
130
 
131
131
  it "should instruct the call to use an instance of the controller" do
132
- flexmock(call).should_receive(:execute_controller).once.with controller, Proc
132
+ call.should_receive(:execute_controller).once.with kind_of(controller), kind_of(Proc)
133
133
  route.dispatch call
134
134
  end
135
135
 
136
136
  it "should hangup the call after all controllers have executed" do
137
- flexmock(call).should_receive(:hangup).once
137
+ call.should_receive(:hangup).once
138
138
  route.dispatch call, lambda { latch.countdown! }
139
139
  latch.wait(2).should be true
140
140
  end
@@ -143,14 +143,14 @@ module Adhearsion
143
143
  before { call[:ahn_prevent_hangup] = true }
144
144
 
145
145
  it "should not hangup the call after controller execution" do
146
- flexmock(call).should_receive(:hangup).never
146
+ call.should_receive(:hangup).never
147
147
  route.dispatch call, lambda { latch.countdown! }
148
148
  latch.wait(2).should be true
149
149
  end
150
150
  end
151
151
 
152
152
  context "if hangup raises a Call::Hangup" do
153
- before { flexmock(call).should_receive(:hangup).once.and_raise Call::Hangup }
153
+ before { call.should_receive(:hangup).once.and_raise Call::Hangup }
154
154
 
155
155
  it "should not raise an exception" do
156
156
  lambda do
@@ -169,7 +169,7 @@ module Adhearsion
169
169
  end
170
170
 
171
171
  it "should instruct the call to use a CallController with the correct block" do
172
- flexmock(call).should_receive(:execute_controller).once.with(CallController, Proc).and_return do |controller|
172
+ call.should_receive(:execute_controller).once.with(kind_of(CallController), kind_of(Proc)).and_return do |controller|
173
173
  controller.block.call.should be == :foobar
174
174
  end
175
175
  route.dispatch call