punchblock 1.6.1 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. data/CHANGELOG.md +8 -0
  2. data/Guardfile +1 -1
  3. data/Rakefile +1 -1
  4. data/lib/punchblock/client.rb +5 -8
  5. data/lib/punchblock/client/component_registry.rb +8 -1
  6. data/lib/punchblock/component/component_node.rb +1 -0
  7. data/lib/punchblock/component/output.rb +15 -1
  8. data/lib/punchblock/translator/asterisk.rb +1 -1
  9. data/lib/punchblock/translator/asterisk/call.rb +1 -1
  10. data/lib/punchblock/translator/asterisk/component/output.rb +5 -1
  11. data/lib/punchblock/translator/freeswitch.rb +7 -1
  12. data/lib/punchblock/translator/freeswitch/call.rb +10 -6
  13. data/lib/punchblock/translator/freeswitch/component.rb +1 -1
  14. data/lib/punchblock/version.rb +1 -1
  15. data/punchblock.gemspec +1 -2
  16. data/spec/punchblock/client/component_registry_spec.rb +7 -0
  17. data/spec/punchblock/client_spec.rb +14 -12
  18. data/spec/punchblock/command_node_spec.rb +2 -2
  19. data/spec/punchblock/component/component_node_spec.rb +10 -3
  20. data/spec/punchblock/component/input_spec.rb +1 -1
  21. data/spec/punchblock/component/output_spec.rb +32 -27
  22. data/spec/punchblock/component/record_spec.rb +5 -5
  23. data/spec/punchblock/connection/asterisk_spec.rb +7 -7
  24. data/spec/punchblock/connection/freeswitch_spec.rb +8 -8
  25. data/spec/punchblock/connection/xmpp_spec.rb +9 -9
  26. data/spec/punchblock/translator/asterisk/call_spec.rb +65 -65
  27. data/spec/punchblock/translator/asterisk/component/asterisk/agi_command_spec.rb +17 -20
  28. data/spec/punchblock/translator/asterisk/component/asterisk/ami_action_spec.rb +13 -16
  29. data/spec/punchblock/translator/asterisk/component/input_spec.rb +9 -12
  30. data/spec/punchblock/translator/asterisk/component/output_spec.rb +62 -29
  31. data/spec/punchblock/translator/asterisk/component/record_spec.rb +38 -42
  32. data/spec/punchblock/translator/asterisk/component/stop_by_redirect_spec.rb +2 -2
  33. data/spec/punchblock/translator/asterisk/component_spec.rb +5 -5
  34. data/spec/punchblock/translator/asterisk_spec.rb +55 -55
  35. data/spec/punchblock/translator/freeswitch/call_spec.rb +80 -54
  36. data/spec/punchblock/translator/freeswitch/component/flite_output_spec.rb +7 -10
  37. data/spec/punchblock/translator/freeswitch/component/input_spec.rb +8 -10
  38. data/spec/punchblock/translator/freeswitch/component/output_spec.rb +9 -12
  39. data/spec/punchblock/translator/freeswitch/component/record_spec.rb +31 -34
  40. data/spec/punchblock/translator/freeswitch/component/tts_output_spec.rb +7 -10
  41. data/spec/punchblock/translator/freeswitch/component_spec.rb +6 -6
  42. data/spec/punchblock/translator/freeswitch_spec.rb +27 -27
  43. data/spec/punchblock_spec.rb +5 -6
  44. data/spec/spec_helper.rb +2 -3
  45. data/spec/support/mock_connection_with_event_handler.rb +8 -19
  46. metadata +5 -21
@@ -7,11 +7,8 @@ module Punchblock
7
7
  class Freeswitch
8
8
  module Component
9
9
  describe Input do
10
- let(:connection) do
11
- mock_connection_with_event_handler do |event|
12
- original_command.add_event event
13
- end
14
- end
10
+ include HasMockCallbackConnection
11
+
15
12
  let(:id) { Punchblock.new_uuid }
16
13
  let(:translator) { Punchblock::Translator::Freeswitch.new connection }
17
14
  let(:mock_stream) { mock('RubyFS::Stream') }
@@ -74,6 +71,7 @@ module Punchblock
74
71
  before do
75
72
  send_dtmf 1
76
73
  send_dtmf 2
74
+ sleep 0.5
77
75
  end
78
76
 
79
77
  let :expected_event do
@@ -90,7 +88,7 @@ module Punchblock
90
88
  end
91
89
 
92
90
  it "should not process further dtmf events" do
93
- subject.expects(:process_dtmf!).never
91
+ subject.should_receive(:process_dtmf!).never
94
92
  send_dtmf 3
95
93
  end
96
94
  end
@@ -185,7 +183,7 @@ module Punchblock
185
183
  let(:original_command_opts) { { :initial_timeout => -1 } }
186
184
 
187
185
  it "should not start a timer" do
188
- subject.wrapped_object.expects(:begin_initial_timer).never
186
+ subject.wrapped_object.should_receive(:begin_initial_timer).never
189
187
  subject.execute
190
188
  end
191
189
  end
@@ -194,7 +192,7 @@ module Punchblock
194
192
  let(:original_command_opts) { { :initial_timeout => nil } }
195
193
 
196
194
  it "should not start a timer" do
197
- subject.wrapped_object.expects(:begin_initial_timer).never
195
+ subject.wrapped_object.should_receive(:begin_initial_timer).never
198
196
  subject.execute
199
197
  end
200
198
  end
@@ -237,7 +235,7 @@ module Punchblock
237
235
  let(:original_command_opts) { { :inter_digit_timeout => -1 } }
238
236
 
239
237
  it "should not start a timer" do
240
- subject.wrapped_object.expects(:begin_inter_digit_timer).never
238
+ subject.wrapped_object.should_receive(:begin_inter_digit_timer).never
241
239
  subject.execute
242
240
  end
243
241
  end
@@ -246,7 +244,7 @@ module Punchblock
246
244
  let(:original_command_opts) { { :inter_digit_timeout => nil } }
247
245
 
248
246
  it "should not start a timer" do
249
- subject.wrapped_object.expects(:begin_inter_digit_timer).never
247
+ subject.wrapped_object.should_receive(:begin_inter_digit_timer).never
250
248
  subject.execute
251
249
  end
252
250
  end
@@ -7,11 +7,8 @@ module Punchblock
7
7
  class Freeswitch
8
8
  module Component
9
9
  describe Output do
10
- let(:connection) do
11
- mock_connection_with_event_handler do |event|
12
- original_command.add_event event
13
- end
14
- end
10
+ include HasMockCallbackConnection
11
+
15
12
  let(:translator) { Punchblock::Translator::Freeswitch.new connection }
16
13
  let(:mock_call) { Punchblock::Translator::Freeswitch::Call.new 'foo', translator }
17
14
 
@@ -34,7 +31,7 @@ module Punchblock
34
31
  describe '#execute' do
35
32
  before { original_command.request! }
36
33
  def expect_playback(filename = audio_filename)
37
- subject.wrapped_object.expects(:application).once.with 'playback', "file_string://#{filename}"
34
+ subject.wrapped_object.should_receive(:application).once.with 'playback', "file_string://#{filename}"
38
35
  end
39
36
 
40
37
  let(:audio_filename) { 'http://foo.com/bar.mp3' }
@@ -105,7 +102,7 @@ module Punchblock
105
102
  end
106
103
 
107
104
  it 'should send a complete event when the file finishes playback' do
108
- expect_playback.yields true
105
+ expect_playback
109
106
  subject.execute
110
107
  subject.handle_es_event RubyFS::Event.new(nil, :event_name => "CHANNEL_EXECUTE_COMPLETE", :application_response => 'FILE PLAYED')
111
108
  original_command.complete_event(0.1).reason.should be_a Punchblock::Component::Output::Complete::Success
@@ -116,7 +113,7 @@ module Punchblock
116
113
  let(:complete_reason) { original_command.complete_event(0.1).reason }
117
114
 
118
115
  it "sends a complete event with an error reason" do
119
- expect_playback.yields true
116
+ expect_playback
120
117
  subject.execute
121
118
  subject.handle_es_event fs_event
122
119
  complete_reason.should be_a Punchblock::Event::Complete::Error
@@ -143,7 +140,7 @@ module Punchblock
143
140
  end
144
141
 
145
142
  it 'should send a complete event when the files finish playback' do
146
- expect_playback([audio_filename1, audio_filename2].join('!')).yields true
143
+ expect_playback([audio_filename1, audio_filename2].join('!'))
147
144
  subject.execute
148
145
  subject.handle_es_event RubyFS::Event.new(nil, :event_name => "CHANNEL_EXECUTE_COMPLETE", :application_response => "FILE PLAYED")
149
146
  original_command.complete_event(0.1).reason.should be_a Punchblock::Component::Output::Complete::Success
@@ -342,13 +339,13 @@ module Punchblock
342
339
  end
343
340
 
344
341
  it "sets the command response to true" do
345
- subject.wrapped_object.expects(:application)
342
+ subject.wrapped_object.should_receive(:application)
346
343
  subject.execute_command command
347
344
  command.response(0.1).should be == true
348
345
  end
349
346
 
350
347
  it "sends the correct complete event" do
351
- subject.wrapped_object.expects(:application)
348
+ subject.wrapped_object.should_receive(:application)
352
349
  original_command.should_not be_complete
353
350
  subject.execute_command command
354
351
  reason.should be_a Punchblock::Event::Complete::Stop
@@ -356,7 +353,7 @@ module Punchblock
356
353
  end
357
354
 
358
355
  it "breaks the current dialplan application" do
359
- subject.wrapped_object.expects(:application).once.with 'break'
356
+ subject.wrapped_object.should_receive(:application).once.with 'break'
360
357
  subject.execute_command command
361
358
  end
362
359
  end
@@ -7,11 +7,8 @@ module Punchblock
7
7
  class Freeswitch
8
8
  module Component
9
9
  describe Record do
10
- let(:connection) do
11
- mock_connection_with_event_handler do |event|
12
- original_command.add_event event
13
- end
14
- end
10
+ include HasMockCallbackConnection
11
+
15
12
  let(:id) { Punchblock.new_uuid }
16
13
  let(:translator) { Punchblock::Translator::Freeswitch.new connection }
17
14
  let(:mock_stream) { mock('RubyFS::Stream') }
@@ -25,7 +22,7 @@ module Punchblock
25
22
  {}
26
23
  end
27
24
 
28
- before { mock_stream.stub_everything }
25
+ before { mock_stream.as_null_object }
29
26
 
30
27
  subject { Record.new original_command, mock_call }
31
28
 
@@ -44,7 +41,7 @@ module Punchblock
44
41
  end
45
42
 
46
43
  it "starts a recording via uuid_record, using the component ID as the filename" do
47
- mock_call.expects(:uuid_foo).once.with(:record, "start #{filename}")
44
+ mock_call.should_receive(:uuid_foo).once.with(:record, "start #{filename}")
48
45
  subject.execute
49
46
  end
50
47
 
@@ -65,7 +62,7 @@ module Punchblock
65
62
  context "set to nil" do
66
63
  let(:command_options) { { :start_paused => nil } }
67
64
  it "should execute normally" do
68
- mock_call.expects(:uuid_foo).once
65
+ mock_call.should_receive(:uuid_foo).once
69
66
  subject.execute
70
67
  original_command.response(0.1).should be_a Ref
71
68
  end
@@ -74,7 +71,7 @@ module Punchblock
74
71
  context "set to false" do
75
72
  let(:command_options) { { :start_paused => false } }
76
73
  it "should execute normally" do
77
- mock_call.expects(:uuid_foo).once
74
+ mock_call.should_receive(:uuid_foo).once
78
75
  subject.execute
79
76
  original_command.response(0.1).should be_a Ref
80
77
  end
@@ -83,7 +80,7 @@ module Punchblock
83
80
  context "set to true" do
84
81
  let(:command_options) { { :start_paused => true } }
85
82
  it "should return an error and not execute any actions" do
86
- mock_call.expects(:uuid_foo).never
83
+ mock_call.should_receive(:uuid_foo).never
87
84
  subject.execute
88
85
  error = ProtocolError.new.setup 'option error', 'A start-paused value of true is unsupported.'
89
86
  original_command.response(0.1).should be == error
@@ -95,7 +92,7 @@ module Punchblock
95
92
  context "set to nil" do
96
93
  let(:command_options) { { :initial_timeout => nil } }
97
94
  it "should execute normally" do
98
- mock_call.expects(:uuid_foo).once
95
+ mock_call.should_receive(:uuid_foo).once
99
96
  subject.execute
100
97
  original_command.response(0.1).should be_a Ref
101
98
  end
@@ -104,7 +101,7 @@ module Punchblock
104
101
  context "set to -1" do
105
102
  let(:command_options) { { :initial_timeout => -1 } }
106
103
  it "should execute normally" do
107
- mock_call.expects(:uuid_foo).once
104
+ mock_call.should_receive(:uuid_foo).once
108
105
  subject.execute
109
106
  original_command.response(0.1).should be_a Ref
110
107
  end
@@ -113,7 +110,7 @@ module Punchblock
113
110
  context "set to a positive number" do
114
111
  let(:command_options) { { :initial_timeout => 10 } }
115
112
  it "should return an error and not execute any actions" do
116
- mock_call.expects(:uuid_foo).never
113
+ mock_call.should_receive(:uuid_foo).never
117
114
  subject.execute
118
115
  error = ProtocolError.new.setup 'option error', 'An initial-timeout value is unsupported.'
119
116
  original_command.response(0.1).should be == error
@@ -125,7 +122,7 @@ module Punchblock
125
122
  context "set to nil" do
126
123
  let(:command_options) { { :final_timeout => nil } }
127
124
  it "should execute normally" do
128
- mock_call.expects(:uuid_foo).once
125
+ mock_call.should_receive(:uuid_foo).once
129
126
  subject.execute
130
127
  original_command.response(0.1).should be_a Ref
131
128
  end
@@ -134,7 +131,7 @@ module Punchblock
134
131
  context "set to -1" do
135
132
  let(:command_options) { { :final_timeout => -1 } }
136
133
  it "should execute normally" do
137
- mock_call.expects(:uuid_foo).once
134
+ mock_call.should_receive(:uuid_foo).once
138
135
  subject.execute
139
136
  original_command.response(0.1).should be_a Ref
140
137
  end
@@ -143,7 +140,7 @@ module Punchblock
143
140
  context "set to a positive number" do
144
141
  let(:command_options) { { :final_timeout => 10 } }
145
142
  it "should return an error and not execute any actions" do
146
- mock_call.expects(:send_agi_action!).never
143
+ mock_call.should_receive(:send_agi_action!).never
147
144
  subject.execute
148
145
  error = ProtocolError.new.setup 'option error', 'A final-timeout value is unsupported.'
149
146
  original_command.response(0.1).should be == error
@@ -155,13 +152,13 @@ module Punchblock
155
152
  context "set to nil" do
156
153
  let(:command_options) { { :format => nil } }
157
154
  it "should execute as 'wav'" do
158
- mock_call.expects(:uuid_foo).once.with(:record, regexp_matches(/.wav/))
155
+ mock_call.should_receive(:uuid_foo).once.with(:record, /.wav/)
159
156
  subject.execute
160
157
  original_command.response(0.1).should be_a Ref
161
158
  end
162
159
 
163
160
  it "provides the correct filename in the recording" do
164
- mock_call.expects(:uuid_foo)
161
+ mock_call.should_receive(:uuid_foo)
165
162
  subject.execute
166
163
  record_stop_event = RubyFS::Event.new nil, {
167
164
  :event_name => 'RECORD_STOP',
@@ -175,13 +172,13 @@ module Punchblock
175
172
  context "set to 'mp3'" do
176
173
  let(:command_options) { { :format => 'mp3' } }
177
174
  it "should execute as 'mp3'" do
178
- mock_call.expects(:uuid_foo).once.with(:record, regexp_matches(/.mp3/))
175
+ mock_call.should_receive(:uuid_foo).once.with(:record, /.mp3/)
179
176
  subject.execute
180
177
  original_command.response(0.1).should be_a Ref
181
178
  end
182
179
 
183
180
  it "provides the correct filename in the recording" do
184
- mock_call.expects(:uuid_foo)
181
+ mock_call.should_receive(:uuid_foo)
185
182
  subject.execute
186
183
  record_stop_event = RubyFS::Event.new nil, {
187
184
  :event_name => 'RECORD_STOP',
@@ -197,7 +194,7 @@ module Punchblock
197
194
  context "set to nil" do
198
195
  let(:command_options) { { :start_beep => nil } }
199
196
  it "should execute normally" do
200
- mock_call.expects(:uuid_foo).once
197
+ mock_call.should_receive(:uuid_foo).once
201
198
  subject.execute
202
199
  original_command.response(0.1).should be_a Ref
203
200
  end
@@ -206,7 +203,7 @@ module Punchblock
206
203
  context "set to false" do
207
204
  let(:command_options) { { :start_beep => false } }
208
205
  it "should execute normally" do
209
- mock_call.expects(:uuid_foo).once
206
+ mock_call.should_receive(:uuid_foo).once
210
207
  subject.execute
211
208
  original_command.response(0.1).should be_a Ref
212
209
  end
@@ -216,7 +213,7 @@ module Punchblock
216
213
  let(:command_options) { { :start_beep => true } }
217
214
 
218
215
  it "should return an error and not execute any actions" do
219
- mock_call.expects(:uuid_foo).never
216
+ mock_call.should_receive(:uuid_foo).never
220
217
  subject.execute
221
218
  error = ProtocolError.new.setup 'option error', 'A start-beep value of true is unsupported.'
222
219
  original_command.response(0.1).should be == error
@@ -228,7 +225,7 @@ module Punchblock
228
225
  context "set to nil" do
229
226
  let(:command_options) { { :max_duration => nil } }
230
227
  it "should execute normally" do
231
- mock_call.expects(:uuid_foo).once.with(:record, regexp_matches(/.wav$/))
228
+ mock_call.should_receive(:uuid_foo).once.with(:record, /.wav$/)
232
229
  subject.execute
233
230
  original_command.response(0.1).should be_a Ref
234
231
  end
@@ -237,7 +234,7 @@ module Punchblock
237
234
  context "set to -1" do
238
235
  let(:command_options) { { :max_duration => -1 } }
239
236
  it "should execute normally" do
240
- mock_call.expects(:uuid_foo).once.with(:record, regexp_matches(/.wav$/))
237
+ mock_call.should_receive(:uuid_foo).once.with(:record, /.wav$/)
241
238
  subject.execute
242
239
  original_command.response(0.1).should be_a Ref
243
240
  end
@@ -259,7 +256,7 @@ module Punchblock
259
256
  let(:command_options) { { :max_duration => 1000 } }
260
257
 
261
258
  it "executes the recording with a time limit" do
262
- mock_call.expects(:uuid_foo).once.with(:record, regexp_matches(/.wav 1$/))
259
+ mock_call.should_receive(:uuid_foo).once.with(:record, /.wav 1$/)
263
260
  subject.execute
264
261
  original_command.response(0.1).should be_a Ref
265
262
  end
@@ -285,7 +282,7 @@ module Punchblock
285
282
  let(:command) { Punchblock::Component::Stop.new }
286
283
 
287
284
  before do
288
- mock_call.expects :uuid_foo
285
+ mock_call.should_receive :uuid_foo
289
286
  command.request!
290
287
  original_command.request!
291
288
  subject.execute
@@ -300,19 +297,19 @@ module Punchblock
300
297
  end
301
298
 
302
299
  it "sets the command response to true" do
303
- mock_call.expects :uuid_foo
300
+ mock_call.should_receive :uuid_foo
304
301
  subject.execute_command command
305
302
  send_stop_event
306
303
  command.response(0.1).should be == true
307
304
  end
308
305
 
309
306
  it "executes a uuid_record stop command" do
310
- mock_call.expects(:uuid_foo).with(:record, "stop #{filename}")
307
+ mock_call.should_receive(:uuid_foo).with(:record, "stop #{filename}")
311
308
  subject.execute_command command
312
309
  end
313
310
 
314
311
  it "sends the correct complete event" do
315
- mock_call.expects(:uuid_foo).with(:record, "stop #{filename}")
312
+ mock_call.should_receive(:uuid_foo).with(:record, "stop #{filename}")
316
313
  subject.execute_command command
317
314
  send_stop_event
318
315
  reason.should be_a Punchblock::Event::Complete::Stop
@@ -326,7 +323,7 @@ module Punchblock
326
323
 
327
324
  before do
328
325
  pending
329
- mock_call.expects :uuid_foo
326
+ mock_call.should_receive :uuid_foo
330
327
  command.request!
331
328
  original_command.request!
332
329
  subject.execute
@@ -338,7 +335,7 @@ module Punchblock
338
335
  end
339
336
 
340
337
  it "pauses the recording via AMI" do
341
- mock_call.expects(:uuid_foo).once.with('PauseMonitor', 'Channel' => channel)
338
+ mock_call.should_receive(:uuid_foo).once.with('PauseMonitor', 'Channel' => channel)
342
339
  subject.execute_command command
343
340
  end
344
341
  end
@@ -348,7 +345,7 @@ module Punchblock
348
345
 
349
346
  before do
350
347
  pending
351
- mock_call.expects :uuid_foo
348
+ mock_call.should_receive :uuid_foo
352
349
  command.request!
353
350
  original_command.request!
354
351
  subject.execute
@@ -360,7 +357,7 @@ module Punchblock
360
357
  end
361
358
 
362
359
  it "resumes the recording via AMI" do
363
- mock_call.expects(:uuid_foo).once.with('ResumeMonitor', 'Channel' => channel)
360
+ mock_call.should_receive(:uuid_foo).once.with('ResumeMonitor', 'Channel' => channel)
364
361
  subject.execute_command command
365
362
  end
366
363
  end
@@ -7,11 +7,8 @@ module Punchblock
7
7
  class Freeswitch
8
8
  module Component
9
9
  describe TTSOutput do
10
- let(:connection) do
11
- mock_connection_with_event_handler do |event|
12
- original_command.add_event event
13
- end
14
- end
10
+ include HasMockCallbackConnection
11
+
15
12
  let(:media_engine) { :flite }
16
13
  let(:default_voice) { :hal }
17
14
  let(:translator) { Punchblock::Translator::Freeswitch.new connection }
@@ -40,7 +37,7 @@ module Punchblock
40
37
  describe '#execute' do
41
38
  before { original_command.request! }
42
39
  def expect_playback(voice = default_voice)
43
- subject.wrapped_object.expects(:application).once.with :speak, "#{media_engine}|#{voice}|#{ssml_doc}"
40
+ subject.wrapped_object.should_receive(:application).once.with :speak, "#{media_engine}|#{voice}|#{ssml_doc}"
44
41
  end
45
42
 
46
43
  let :ssml_doc do
@@ -76,7 +73,7 @@ module Punchblock
76
73
  end
77
74
 
78
75
  it 'should send a complete event when the speak finishes' do
79
- expect_playback.yields true
76
+ expect_playback
80
77
  execute
81
78
  subject.handle_es_event RubyFS::Event.new(nil, :event_name => "CHANNEL_EXECUTE_COMPLETE")
82
79
  original_command.complete_event(0.1).reason.should be_a Punchblock::Component::Output::Complete::Success
@@ -258,13 +255,13 @@ module Punchblock
258
255
  end
259
256
 
260
257
  it "sets the command response to true" do
261
- subject.wrapped_object.expects(:application)
258
+ subject.wrapped_object.should_receive(:application)
262
259
  subject.execute_command command
263
260
  command.response(0.1).should be == true
264
261
  end
265
262
 
266
263
  it "sends the correct complete event" do
267
- subject.wrapped_object.expects(:application)
264
+ subject.wrapped_object.should_receive(:application)
268
265
  original_command.should_not be_complete
269
266
  subject.execute_command command
270
267
  reason.should be_a Punchblock::Event::Complete::Stop
@@ -272,7 +269,7 @@ module Punchblock
272
269
  end
273
270
 
274
271
  it "breaks the current dialplan application" do
275
- subject.wrapped_object.expects(:application).once.with 'break'
272
+ subject.wrapped_object.should_receive(:application).once.with 'break'
276
273
  subject.execute_command command
277
274
  end
278
275
  end
@@ -29,7 +29,7 @@ module Punchblock
29
29
  let(:response) { mock 'Response' }
30
30
 
31
31
  it 'should execute the handler' do
32
- response.expects(:call).once.with es_event
32
+ response.should_receive(:call).once.with es_event
33
33
  subject.register_handler :es, :event_name => 'CHANNEL_EXECUTE' do |event|
34
34
  response.call event
35
35
  end
@@ -53,7 +53,7 @@ module Punchblock
53
53
  end
54
54
 
55
55
  it "should send the event to the connection" do
56
- connection.expects(:handle_event).once.with expected_event
56
+ connection.should_receive(:handle_event).once.with expected_event
57
57
  subject.send_event event
58
58
  end
59
59
  end
@@ -69,12 +69,12 @@ module Punchblock
69
69
  end
70
70
 
71
71
  it "should send a complete event with the specified reason" do
72
- subject.wrapped_object.expects(:send_event).once.with expected_event
72
+ subject.wrapped_object.should_receive(:send_event).once.with expected_event
73
73
  subject.send_complete_event reason
74
74
  end
75
75
 
76
76
  it "should cause the actor to be shut down" do
77
- subject.wrapped_object.stubs(:send_event).returns true
77
+ subject.wrapped_object.stub(:send_event).and_return true
78
78
  subject.send_complete_event reason
79
79
  sleep 0.2
80
80
  subject.should_not be_alive
@@ -83,14 +83,14 @@ module Punchblock
83
83
 
84
84
  describe "#call_ended" do
85
85
  it "should send a complete event with the call hangup reason" do
86
- subject.wrapped_object.expects(:send_complete_event).once.with Punchblock::Event::Complete::Hangup.new
86
+ subject.wrapped_object.should_receive(:send_complete_event).once.with Punchblock::Event::Complete::Hangup.new
87
87
  subject.call_ended
88
88
  end
89
89
  end
90
90
 
91
91
  describe "#application" do
92
92
  it "should execute a FS application on the current call" do
93
- call.expects(:application).once.with('appname', "%[punchblock_component_id=#{subject.id}]options")
93
+ call.should_receive(:application).once.with('appname', "%[punchblock_component_id=#{subject.id}]options")
94
94
  subject.application 'appname', 'options'
95
95
  end
96
96
  end