adhearsion 2.0.0.alpha2 → 2.0.0.alpha3
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +16 -14
- data/CHANGELOG.md +17 -1
- data/adhearsion.gemspec +14 -13
- data/features/cli_basic.feature +30 -0
- data/features/cli_create.feature +24 -0
- data/features/cli_daemon.feature +21 -0
- data/features/cli_generate.feature +9 -0
- data/features/cli_start.feature +33 -0
- data/features/cli_stop.feature +38 -0
- data/features/controller_generator.feature +19 -0
- data/features/plugin_generator.feature +55 -0
- data/lib/adhearsion.rb +5 -1
- data/lib/adhearsion/call.rb +57 -51
- data/lib/adhearsion/call_controller.rb +4 -20
- data/lib/adhearsion/call_controller/dial.rb +34 -4
- data/lib/adhearsion/calls.rb +4 -1
- data/lib/adhearsion/cli_commands.rb +31 -6
- data/lib/adhearsion/configuration.rb +2 -6
- data/lib/adhearsion/console.rb +56 -17
- data/lib/adhearsion/generators.rb +53 -2
- data/lib/adhearsion/generators/app/app_generator.rb +2 -24
- data/lib/adhearsion/generators/app/templates/config/adhearsion.rb +1 -1
- data/lib/adhearsion/generators/controller/controller_generator.rb +18 -0
- data/lib/adhearsion/generators/controller/templates/lib/controller.rb +4 -0
- data/lib/adhearsion/generators/controller/templates/spec/controller_spec.rb +3 -0
- data/lib/adhearsion/generators/generator.rb +77 -0
- data/lib/adhearsion/generators/plugin/plugin_generator.rb +33 -0
- data/lib/adhearsion/generators/plugin/templates/.gitignore +9 -0
- data/lib/adhearsion/generators/plugin/templates/Gemfile.tt +4 -0
- data/lib/adhearsion/generators/plugin/templates/README.md.tt +2 -0
- data/lib/adhearsion/generators/plugin/templates/Rakefile.tt +1 -0
- data/lib/adhearsion/generators/plugin/templates/lib/plugin-template.rb.tt +5 -0
- data/lib/adhearsion/generators/plugin/templates/lib/plugin-template/controller_methods.rb.tt +10 -0
- data/lib/adhearsion/generators/plugin/templates/lib/plugin-template/plugin.rb.tt +29 -0
- data/lib/adhearsion/generators/plugin/templates/lib/plugin-template/version.rb.tt +3 -0
- data/lib/adhearsion/generators/plugin/templates/plugin-template.gemspec.tt +35 -0
- data/lib/adhearsion/generators/plugin/templates/spec/plugin-template/controller_methods_spec.rb.tt +26 -0
- data/lib/adhearsion/generators/plugin/templates/spec/spec_helper.rb.tt +13 -0
- data/lib/adhearsion/initializer.rb +14 -22
- data/lib/adhearsion/logging.rb +25 -16
- data/lib/adhearsion/outbound_call.rb +3 -3
- data/lib/adhearsion/plugin.rb +14 -0
- data/lib/adhearsion/punchblock_plugin.rb +6 -1
- data/lib/adhearsion/punchblock_plugin/initializer.rb +8 -8
- data/lib/adhearsion/tasks/configuration.rb +1 -1
- data/lib/adhearsion/version.rb +1 -1
- data/spec/adhearsion/call_controller/dial_spec.rb +108 -17
- data/spec/adhearsion/call_controller_spec.rb +7 -64
- data/spec/adhearsion/call_spec.rb +48 -29
- data/spec/adhearsion/calls_spec.rb +7 -0
- data/spec/adhearsion/configuration_spec.rb +14 -14
- data/spec/adhearsion/console_spec.rb +124 -4
- data/spec/adhearsion/generators_spec.rb +17 -0
- data/spec/adhearsion/initializer_spec.rb +22 -18
- data/spec/adhearsion/logging_spec.rb +78 -48
- data/spec/adhearsion/outbound_call_spec.rb +6 -15
- data/spec/adhearsion/plugin_spec.rb +18 -0
- data/spec/adhearsion/process_spec.rb +10 -1
- data/spec/adhearsion/punchblock_plugin/initializer_spec.rb +8 -6
- data/spec/spec_helper.rb +5 -2
- data/spec/support/call_controller_test_helpers.rb +1 -1
- data/spec/support/initializer_stubs.rb +1 -1
- metadata +106 -66
- data/features/cli.feature +0 -108
- data/lib/adhearsion/initializer/logging.rb +0 -33
- data/spec/adhearsion/initializer/logging_spec.rb +0 -55
@@ -41,14 +41,14 @@ module Adhearsion
|
|
41
41
|
|
42
42
|
write_and_await_response(Punchblock::Command::Dial.new(options), wait_timeout).tap do |dial_command|
|
43
43
|
@dial_command = dial_command
|
44
|
-
Adhearsion.active_calls <<
|
44
|
+
Adhearsion.active_calls << current_actor
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
48
|
def run_router
|
49
49
|
catching_standard_errors do
|
50
|
-
dispatcher = Adhearsion.router.handle
|
51
|
-
dispatcher.call
|
50
|
+
dispatcher = Adhearsion.router.handle current_actor
|
51
|
+
dispatcher.call current_actor
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
data/lib/adhearsion/plugin.rb
CHANGED
@@ -105,6 +105,20 @@ module Adhearsion
|
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
108
|
+
##
|
109
|
+
# Register generator classes
|
110
|
+
#
|
111
|
+
# @example
|
112
|
+
# FooBar = Class.new Adhearsion::Plugin do
|
113
|
+
# generators :'my_plugin:foo_generator' => FooGenerator
|
114
|
+
# end
|
115
|
+
#
|
116
|
+
def generators(mapping)
|
117
|
+
mapping.each_pair do |name, klass|
|
118
|
+
Generators.add_generator name, klass
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
108
122
|
def subclasses
|
109
123
|
@subclasses ||= []
|
110
124
|
end
|
@@ -23,11 +23,16 @@ module Adhearsion
|
|
23
23
|
end
|
24
24
|
|
25
25
|
init :punchblock do
|
26
|
-
Initializer.
|
26
|
+
Initializer.init
|
27
|
+
end
|
28
|
+
|
29
|
+
run :punchblock do
|
30
|
+
Initializer.run
|
27
31
|
end
|
28
32
|
|
29
33
|
class << self
|
30
34
|
delegate :client, :to => Initializer
|
35
|
+
delegate :connection, :to => Initializer
|
31
36
|
|
32
37
|
def validate_number(value)
|
33
38
|
return 1.0/0.0 if ["Infinity", 1.0/0.0].include? value
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module Adhearsion
|
2
2
|
class PunchblockPlugin
|
3
3
|
class Initializer
|
4
|
-
cattr_accessor :config, :client, :dispatcher, :attempts
|
4
|
+
cattr_accessor :config, :client, :connection, :dispatcher, :attempts
|
5
5
|
|
6
6
|
self.attempts = 0
|
7
7
|
|
8
8
|
class << self
|
9
|
-
def
|
9
|
+
def init
|
10
10
|
self.config = Adhearsion.config[:punchblock]
|
11
11
|
connection_class = case (self.config.platform || :xmpp)
|
12
12
|
when :xmpp
|
@@ -25,7 +25,7 @@ module Adhearsion
|
|
25
25
|
:mixers_domain => self.config.mixers_domain
|
26
26
|
}
|
27
27
|
|
28
|
-
connection = connection_class.new connection_options
|
28
|
+
self.connection = connection_class.new connection_options
|
29
29
|
self.client = ::Punchblock::Client.new :connection => connection
|
30
30
|
|
31
31
|
# Tell the Punchblock connection that we are ready to process calls.
|
@@ -65,7 +65,9 @@ module Adhearsion
|
|
65
65
|
Events.punchblock proc { |e| e.respond_to?(:call_id) }, :call_id do |event|
|
66
66
|
dispatch_call_event event
|
67
67
|
end
|
68
|
+
end
|
68
69
|
|
70
|
+
def run
|
69
71
|
connect
|
70
72
|
end
|
71
73
|
|
@@ -119,6 +121,7 @@ module Adhearsion
|
|
119
121
|
when :booting, :rejecting
|
120
122
|
call.reject :decline
|
121
123
|
when :running
|
124
|
+
call.accept
|
122
125
|
dispatcher = Adhearsion.router.handle call
|
123
126
|
dispatcher.call call
|
124
127
|
else
|
@@ -129,11 +132,8 @@ module Adhearsion
|
|
129
132
|
|
130
133
|
def dispatch_call_event(event, latch = nil)
|
131
134
|
if call = Adhearsion.active_calls.find(event.call_id)
|
132
|
-
|
133
|
-
|
134
|
-
call << event
|
135
|
-
latch.countdown! if latch
|
136
|
-
end
|
135
|
+
call.deliver_message! event
|
136
|
+
latch.countdown! if latch
|
137
137
|
else
|
138
138
|
logger.error "Event received for inactive call #{event.call_id}: #{event.inspect}"
|
139
139
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
namespace :config do
|
2
2
|
desc "Show configuration values; accepts a parameter: [nil|platform|<plugin-name>|all]"
|
3
|
-
task :show, :name
|
3
|
+
task :show, [:name] => [:environment] do |t, args|
|
4
4
|
name = args.name.nil? ? :all : args.name.to_sym
|
5
5
|
puts "\nAdhearsion.config do |config|\n\n"
|
6
6
|
puts Adhearsion.config.description name, :show_values => true
|
data/lib/adhearsion/version.rb
CHANGED
@@ -6,11 +6,11 @@ module Adhearsion
|
|
6
6
|
include CallControllerTestHelpers
|
7
7
|
|
8
8
|
let(:to) { 'sip:foo@bar.com' }
|
9
|
-
let(:other_call_id) {
|
9
|
+
let(:other_call_id) { new_uuid }
|
10
10
|
let(:other_mock_call) { flexmock OutboundCall.new, :id => other_call_id }
|
11
11
|
|
12
12
|
let(:second_to) { 'sip:baz@bar.com' }
|
13
|
-
let(:second_other_call_id) {
|
13
|
+
let(:second_other_call_id) { new_uuid }
|
14
14
|
let(:second_other_mock_call) { flexmock OutboundCall.new, :id => second_other_call_id }
|
15
15
|
|
16
16
|
let(:mock_end) { flexmock Punchblock::Event::End.new, :reason => :hangup }
|
@@ -18,26 +18,26 @@ module Adhearsion
|
|
18
18
|
|
19
19
|
let(:latch) { CountDownLatch.new 1 }
|
20
20
|
|
21
|
-
def mock_dial
|
22
|
-
flexmock(OutboundCall).new_instances.should_receive(:dial).and_return true
|
23
|
-
end
|
24
|
-
|
25
21
|
describe "#dial" do
|
26
|
-
it "should
|
27
|
-
|
28
|
-
|
29
|
-
|
22
|
+
it "should dial the call to the correct endpoint and return it" do
|
23
|
+
other_mock_call
|
24
|
+
flexmock(OutboundCall).should_receive(:new).and_return other_mock_call
|
25
|
+
flexmock(other_mock_call).should_receive(:dial).with(to, :from => 'foo').once
|
26
|
+
dial_thread = Thread.new do
|
27
|
+
subject.dial(to, :from => 'foo').should be_a OutboundCall
|
30
28
|
end
|
31
|
-
|
32
|
-
|
29
|
+
sleep 0.1
|
30
|
+
other_mock_call << mock_end
|
31
|
+
dial_thread.join.should be_true
|
33
32
|
end
|
34
33
|
|
35
|
-
it "should
|
34
|
+
it "should default the caller ID to that of the original call" do
|
36
35
|
other_mock_call
|
36
|
+
flexmock call, :from => 'sip:foo@bar.com'
|
37
37
|
flexmock(OutboundCall).should_receive(:new).and_return other_mock_call
|
38
|
-
flexmock(other_mock_call).should_receive(:dial).with(to, :from => 'foo').once
|
38
|
+
flexmock(other_mock_call).should_receive(:dial).with(to, :from => 'sip:foo@bar.com').once
|
39
39
|
dial_thread = Thread.new do
|
40
|
-
subject.dial to
|
40
|
+
subject.dial to
|
41
41
|
end
|
42
42
|
sleep 0.1
|
43
43
|
other_mock_call << mock_end
|
@@ -49,6 +49,7 @@ module Adhearsion
|
|
49
49
|
other_mock_call
|
50
50
|
|
51
51
|
flexmock(other_mock_call).should_receive(:dial).once
|
52
|
+
flexmock(other_mock_call).should_receive(:hangup).once
|
52
53
|
flexmock(OutboundCall).should_receive(:new).and_return other_mock_call
|
53
54
|
|
54
55
|
latch = CountDownLatch.new 1
|
@@ -65,11 +66,33 @@ module Adhearsion
|
|
65
66
|
latch.wait(1).should be_true
|
66
67
|
end
|
67
68
|
|
69
|
+
it "unblocks the original controller if the original call ends" do
|
70
|
+
other_mock_call
|
71
|
+
|
72
|
+
flexmock(other_mock_call).should_receive(:dial).once
|
73
|
+
flexmock(other_mock_call).should_receive(:hangup).once
|
74
|
+
flexmock(OutboundCall).should_receive(:new).and_return other_mock_call
|
75
|
+
|
76
|
+
latch = CountDownLatch.new 1
|
77
|
+
|
78
|
+
Thread.new do
|
79
|
+
subject.dial to
|
80
|
+
latch.countdown!
|
81
|
+
end
|
82
|
+
|
83
|
+
latch.wait(1).should be_false
|
84
|
+
|
85
|
+
call << mock_end
|
86
|
+
|
87
|
+
latch.wait(1).should be_true
|
88
|
+
end
|
89
|
+
|
68
90
|
it "joins the new call to the existing one on answer" do
|
69
91
|
other_mock_call
|
70
92
|
|
71
93
|
flexmock(other_mock_call).should_receive(:dial).once
|
72
94
|
flexmock(other_mock_call).should_receive(:join).once.with(call)
|
95
|
+
flexmock(other_mock_call).should_receive(:hangup).once
|
73
96
|
flexmock(OutboundCall).should_receive(:new).and_return other_mock_call
|
74
97
|
|
75
98
|
latch = CountDownLatch.new 1
|
@@ -86,6 +109,29 @@ module Adhearsion
|
|
86
109
|
|
87
110
|
latch.wait(1).should be_true
|
88
111
|
end
|
112
|
+
|
113
|
+
it "hangs up the new call when the dial unblocks" do
|
114
|
+
other_mock_call
|
115
|
+
|
116
|
+
flexmock(other_mock_call).should_receive(:dial).once
|
117
|
+
flexmock(other_mock_call).should_receive(:join).once.with(call)
|
118
|
+
flexmock(other_mock_call).should_receive(:hangup).once
|
119
|
+
flexmock(OutboundCall).should_receive(:new).and_return other_mock_call
|
120
|
+
|
121
|
+
latch = CountDownLatch.new 1
|
122
|
+
|
123
|
+
Thread.new do
|
124
|
+
subject.dial to
|
125
|
+
latch.countdown!
|
126
|
+
end
|
127
|
+
|
128
|
+
latch.wait(1).should be_false
|
129
|
+
|
130
|
+
other_mock_call << mock_answered
|
131
|
+
call << mock_end
|
132
|
+
|
133
|
+
latch.wait(1).should be_true
|
134
|
+
end
|
89
135
|
end
|
90
136
|
|
91
137
|
describe "with multiple third parties specified" do
|
@@ -95,10 +141,11 @@ module Adhearsion
|
|
95
141
|
|
96
142
|
flexmock(other_mock_call).should_receive(:dial).once
|
97
143
|
flexmock(other_mock_call).should_receive(:join).once.with(call)
|
98
|
-
flexmock(other_mock_call).should_receive(:hangup
|
144
|
+
flexmock(other_mock_call).should_receive(:hangup).once
|
99
145
|
|
100
146
|
flexmock(second_other_mock_call).should_receive(:dial).once
|
101
|
-
flexmock(second_other_mock_call).should_receive(:
|
147
|
+
flexmock(second_other_mock_call).should_receive(:join).never
|
148
|
+
flexmock(second_other_mock_call).should_receive(:hangup).twice
|
102
149
|
|
103
150
|
flexmock(OutboundCall).should_receive(:new).and_return other_mock_call, second_other_mock_call
|
104
151
|
latch = CountDownLatch.new 1
|
@@ -114,6 +161,49 @@ module Adhearsion
|
|
114
161
|
other_mock_call << mock_answered
|
115
162
|
other_mock_call << mock_end
|
116
163
|
|
164
|
+
latch.wait(1).should be_false
|
165
|
+
|
166
|
+
second_other_mock_call << mock_end
|
167
|
+
|
168
|
+
latch.wait(2).should be_true
|
169
|
+
|
170
|
+
t.join
|
171
|
+
calls = t.value
|
172
|
+
calls.should have(2).calls
|
173
|
+
calls.each { |c| c.should be_a OutboundCall }
|
174
|
+
end
|
175
|
+
|
176
|
+
it "unblocks when the joined call unjoins, allowing it to proceed further" do
|
177
|
+
other_mock_call
|
178
|
+
second_other_mock_call
|
179
|
+
|
180
|
+
flexmock(other_mock_call).should_receive(:dial).once
|
181
|
+
flexmock(other_mock_call).should_receive(:join).once.with(call)
|
182
|
+
flexmock(other_mock_call).should_receive(:hangup).once
|
183
|
+
|
184
|
+
flexmock(second_other_mock_call).should_receive(:dial).once
|
185
|
+
flexmock(second_other_mock_call).should_receive(:join).never
|
186
|
+
flexmock(second_other_mock_call).should_receive(:hangup).twice
|
187
|
+
|
188
|
+
flexmock(OutboundCall).should_receive(:new).and_return other_mock_call, second_other_mock_call
|
189
|
+
latch = CountDownLatch.new 1
|
190
|
+
|
191
|
+
t = Thread.new do
|
192
|
+
calls = subject.dial [to, second_to]
|
193
|
+
latch.countdown!
|
194
|
+
calls
|
195
|
+
end
|
196
|
+
|
197
|
+
latch.wait(1).should be_false
|
198
|
+
|
199
|
+
other_mock_call << mock_answered
|
200
|
+
other_mock_call << Punchblock::Event::Unjoined.new(:other_call_id => call.id)
|
201
|
+
other_mock_call << mock_end
|
202
|
+
|
203
|
+
latch.wait(1).should be_false
|
204
|
+
|
205
|
+
second_other_mock_call << mock_end
|
206
|
+
|
117
207
|
latch.wait(2).should be_true
|
118
208
|
|
119
209
|
t.join
|
@@ -130,6 +220,7 @@ module Adhearsion
|
|
130
220
|
other_mock_call
|
131
221
|
|
132
222
|
flexmock(other_mock_call).should_receive(:dial).once
|
223
|
+
flexmock(other_mock_call).should_receive(:hangup).once
|
133
224
|
flexmock(OutboundCall).should_receive(:new).and_return other_mock_call
|
134
225
|
|
135
226
|
latch = CountDownLatch.new 1
|
@@ -29,41 +29,7 @@ module Adhearsion
|
|
29
29
|
describe "execution on a call" do
|
30
30
|
before do
|
31
31
|
flexmock subject, :execute_component_and_await_completion => nil
|
32
|
-
flexmock call, :write_and_await_response => nil
|
33
|
-
end
|
34
|
-
|
35
|
-
context "when auto-accept is enabled" do
|
36
|
-
before do
|
37
|
-
Adhearsion.config.platform.automatically_accept_incoming_calls = true
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should accept the call" do
|
41
|
-
subject.should_receive(:accept).once.ordered
|
42
|
-
subject.should_receive(:run).once.ordered
|
43
|
-
subject.execute!
|
44
|
-
end
|
45
|
-
|
46
|
-
context "and accept is skipped" do
|
47
|
-
before { subject.skip_accept! }
|
48
|
-
|
49
|
-
it "should not accept the call" do
|
50
|
-
subject.should_receive(:accept).never
|
51
|
-
subject.should_receive(:run).once
|
52
|
-
subject.execute!
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
context "when auto-accept is disabled" do
|
58
|
-
before do
|
59
|
-
Adhearsion.config.platform.automatically_accept_incoming_calls = false
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should not accept the call" do
|
63
|
-
subject.should_receive(:accept).never
|
64
|
-
subject.should_receive(:run).once
|
65
|
-
subject.execute!
|
66
|
-
end
|
32
|
+
flexmock call.wrapped_object, :write_and_await_response => nil
|
67
33
|
end
|
68
34
|
|
69
35
|
it "catches Hangup exceptions and logs the hangup" do
|
@@ -137,9 +103,8 @@ module Adhearsion
|
|
137
103
|
|
138
104
|
before do
|
139
105
|
flexmock subject, :execute_component_and_await_completion => nil
|
140
|
-
flexmock call, :write_and_await_response => nil
|
106
|
+
flexmock call.wrapped_object, :write_and_await_response => nil
|
141
107
|
flexmock(Events).should_receive(:trigger).with(:exception, Exception).never
|
142
|
-
Adhearsion.config.platform.automatically_accept_incoming_calls = true
|
143
108
|
end
|
144
109
|
|
145
110
|
it "should invoke another controller before returning to the current controller" do
|
@@ -155,12 +120,6 @@ module Adhearsion
|
|
155
120
|
subject.execute!
|
156
121
|
end
|
157
122
|
|
158
|
-
it "should not attempt to accept the call again" do
|
159
|
-
call.should_receive(:accept).once
|
160
|
-
|
161
|
-
subject.execute!
|
162
|
-
end
|
163
|
-
|
164
123
|
it "should allow the outer controller to cease execution and handle remote hangups" do
|
165
124
|
subject[:second_controller] = SecondControllerWithRemoteHangup
|
166
125
|
|
@@ -195,11 +154,10 @@ module Adhearsion
|
|
195
154
|
subject { PassController.new call }
|
196
155
|
|
197
156
|
before do
|
198
|
-
flexmock(call).should_receive(:write_and_await_response).and_return nil
|
157
|
+
flexmock(call.wrapped_object).should_receive(:write_and_await_response).and_return nil
|
199
158
|
flexmock subject, :execute_component_and_await_completion => nil
|
200
159
|
flexmock(SecondController).new_instances.should_receive(:md_check).once.with :foo => 'bar'
|
201
160
|
flexmock(Events).should_receive(:trigger).with(:exception, Exception).never
|
202
|
-
Adhearsion.config.platform.automatically_accept_incoming_calls = true
|
203
161
|
end
|
204
162
|
|
205
163
|
let(:latch) { CountDownLatch.new 1 }
|
@@ -208,18 +166,12 @@ module Adhearsion
|
|
208
166
|
subject.should_receive(:before).once.ordered
|
209
167
|
call.should_receive(:answer).once.ordered
|
210
168
|
subject.should_receive(:after).never.ordered
|
211
|
-
call.should_receive(:hangup
|
169
|
+
call.wrapped_object.should_receive(:hangup).once.ordered
|
212
170
|
|
213
171
|
call.execute_controller subject, latch
|
214
172
|
latch.wait(1).should be_true
|
215
173
|
end
|
216
174
|
|
217
|
-
it "should not attempt to accept the call again" do
|
218
|
-
call.should_receive(:accept).once
|
219
|
-
|
220
|
-
CallController.exec subject
|
221
|
-
end
|
222
|
-
|
223
175
|
it "should execute after_call callbacks before passing control" do
|
224
176
|
subject.should_receive(:before).once.ordered
|
225
177
|
subject.should_receive(:foobar).once.ordered
|
@@ -296,13 +248,6 @@ module Adhearsion
|
|
296
248
|
end
|
297
249
|
end
|
298
250
|
|
299
|
-
describe '#accept' do
|
300
|
-
it "should delegate to the call" do
|
301
|
-
flexmock(call).should_receive(:accept).once.with(:foo)
|
302
|
-
subject.accept :foo
|
303
|
-
end
|
304
|
-
end
|
305
|
-
|
306
251
|
describe '#answer' do
|
307
252
|
it "should delegate to the call" do
|
308
253
|
flexmock(call).should_receive(:answer).once.with(:foo)
|
@@ -319,7 +264,7 @@ module Adhearsion
|
|
319
264
|
|
320
265
|
describe '#hangup' do
|
321
266
|
it "should delegate to the call" do
|
322
|
-
flexmock(call).should_receive(:hangup
|
267
|
+
flexmock(call).should_receive(:hangup).once.with(:foo)
|
323
268
|
subject.hangup :foo
|
324
269
|
end
|
325
270
|
end
|
@@ -378,13 +323,11 @@ describe ExampleCallController do
|
|
378
323
|
|
379
324
|
before do
|
380
325
|
flexmock subject, :execute_component_and_await_completion => nil
|
381
|
-
flexmock call, :write_and_await_response => nil
|
382
|
-
Adhearsion.config.platform.automatically_accept_incoming_calls = true
|
326
|
+
flexmock call.wrapped_object, :write_and_await_response => nil
|
383
327
|
end
|
384
328
|
|
385
|
-
it "should execute the before_call callbacks before
|
329
|
+
it "should execute the before_call callbacks before processing the call" do
|
386
330
|
subject.should_receive(:setup_models).twice.ordered
|
387
|
-
subject.should_receive(:accept).once.ordered
|
388
331
|
subject.should_receive(:join_to_conference).once.ordered
|
389
332
|
subject.execute!
|
390
333
|
end
|