adhearsion-asterisk 1.3.1 → 1.4.0
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.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +3 -0
- data/adhearsion-asterisk.gemspec +5 -8
- data/lib/adhearsion/asterisk/call_controller_methods.rb +13 -0
- data/lib/adhearsion/asterisk/version.rb +1 -1
- data/spec/adhearsion/asterisk/call_controller_methods_spec.rb +117 -73
- data/spec/adhearsion/asterisk/config_generators/agents_spec.rb +2 -2
- data/spec/adhearsion/asterisk/config_generators/queues_spec.rb +15 -15
- data/spec/adhearsion/asterisk/config_manager_spec.rb +1 -1
- data/spec/adhearsion/asterisk/plugin_spec.rb +1 -1
- data/spec/adhearsion/asterisk/queue_proxy/agent_proxy_spec.rb +20 -20
- data/spec/adhearsion/asterisk/queue_proxy/queue_agents_list_proxy_spec.rb +35 -35
- data/spec/adhearsion/asterisk/queue_proxy_spec.rb +41 -41
- data/spec/spec_helper.rb +0 -2
- metadata +37 -115
@@ -250,8 +250,8 @@ describe "AgentsConfigGeneratorTestHelper" do
|
|
250
250
|
|
251
251
|
it "generated_config_has_pair() works properly with two pairs" do
|
252
252
|
@agents = mock "A fake agents with just one pair"
|
253
|
-
@agents.
|
254
|
-
|
253
|
+
@agents.should_receive(:conf).twice.and_return("[general]\n\nqaz=qwerty\nagent => 1,2,3")
|
254
|
+
|
255
255
|
generated_config_has_pair(:qaz => "qwerty").should be true
|
256
256
|
generated_config_has_pair(:foo => "bar").should be false
|
257
257
|
end
|
@@ -135,8 +135,8 @@ describe "The private, helper methods in QueueDefinition" do
|
|
135
135
|
|
136
136
|
it '#boolean should convert a boolean into "yes" or "no"' do
|
137
137
|
mock_of_properties = mock "mock of the properties instance variable of a QueueDefinition"
|
138
|
-
mock_of_properties.
|
139
|
-
queue.
|
138
|
+
mock_of_properties.should_receive(:[]=).once.with("icanhascheezburger", "yes")
|
139
|
+
queue.should_receive(:properties).and_return mock_of_properties
|
140
140
|
queue.send(:boolean, "icanhascheezburger" => true)
|
141
141
|
end
|
142
142
|
|
@@ -148,39 +148,39 @@ describe "The private, helper methods in QueueDefinition" do
|
|
148
148
|
|
149
149
|
it '#int should coerce a String into a Numeric if possible' do
|
150
150
|
mock_of_properties = mock "mock of the properties instance variable of a QueueDefinition"
|
151
|
-
mock_of_properties.
|
152
|
-
queue.
|
151
|
+
mock_of_properties.should_receive(:[]=).once.with("chimpanzee", 1337)
|
152
|
+
queue.should_receive(:properties).and_return mock_of_properties
|
153
153
|
queue.send(:int, "chimpanzee" => "1337")
|
154
154
|
end
|
155
155
|
|
156
156
|
it '#string should add the argument directly to the properties' do
|
157
157
|
mock_of_properties = mock "mock of the properties instance variable of a QueueDefinition"
|
158
|
-
mock_of_properties.
|
159
|
-
queue.
|
158
|
+
mock_of_properties.should_receive(:[]=).once.with("eins", "zwei")
|
159
|
+
queue.should_receive(:properties).and_return mock_of_properties
|
160
160
|
queue.send(:string, "eins" => "zwei")
|
161
161
|
end
|
162
162
|
|
163
163
|
it '#one_of() should add its successful match to the properties attribute' do
|
164
164
|
mock_properties = mock "mock of the properties instance variable of a QueueDefinition"
|
165
|
-
mock_properties.
|
166
|
-
queue.
|
165
|
+
mock_properties.should_receive(:[]=).once.with(:doesnt_matter, 5)
|
166
|
+
queue.should_receive(:properties).once.and_return mock_properties
|
167
167
|
queue.send(:one_of, 1..100, :doesnt_matter => 5)
|
168
168
|
end
|
169
169
|
|
170
170
|
it "one_of() should convert booleans to yes/no" do
|
171
171
|
mock_properties = mock "mock of the properties instance variable of a QueueDefinition"
|
172
|
-
mock_properties.
|
173
|
-
queue.
|
172
|
+
mock_properties.should_receive(:[]=).once.with(:doesnt_matter, 'yes')
|
173
|
+
queue.should_receive(:properties).once.and_return mock_properties
|
174
174
|
queue.send(:one_of, [true, false, :strict], :doesnt_matter => true)
|
175
175
|
|
176
176
|
mock_properties = mock "mock of the properties instance variable of a QueueDefinition"
|
177
|
-
mock_properties.
|
178
|
-
queue.
|
177
|
+
mock_properties.should_receive(:[]=).once.with(:doesnt_matter, :strict)
|
178
|
+
queue.should_receive(:properties).once.and_return mock_properties
|
179
179
|
queue.send(:one_of, [true, false, :strict], :doesnt_matter => :strict)
|
180
180
|
|
181
181
|
mock_properties = mock "mock of the properties instance variable of a QueueDefinition"
|
182
|
-
mock_properties.
|
183
|
-
queue.
|
182
|
+
mock_properties.should_receive(:[]=).once.with(:doesnt_matter, 'no')
|
183
|
+
queue.should_receive(:properties).once.and_return mock_properties
|
184
184
|
queue.send(:one_of, [true, false, :strict], :doesnt_matter => false)
|
185
185
|
end
|
186
186
|
|
@@ -315,7 +315,7 @@ describe "ConfigGeneratorTestHelper" do
|
|
315
315
|
generated_config_has_pair(:foo => "bar").should be true
|
316
316
|
|
317
317
|
@queues = mock "A fake queues with just one pair"
|
318
|
-
@queues.
|
318
|
+
@queues.should_receive(:to_s).twice.and_return("[general]\n\nqaz=qwerty\nagent => 1,2,3")
|
319
319
|
generated_config_has_pair(:qaz => "qwerty").should be true
|
320
320
|
generated_config_has_pair(:foo => "bar").should be false
|
321
321
|
end
|
@@ -4,7 +4,7 @@ module Adhearsion::Asterisk
|
|
4
4
|
describe 'plugin loading' do
|
5
5
|
before(:all) { Adhearsion::Plugin.init_plugins }
|
6
6
|
|
7
|
-
let(:mock_call) {
|
7
|
+
let(:mock_call) { mock(:call).as_null_object }
|
8
8
|
|
9
9
|
it 'should extend Adhearsion::CallController with Asterisk methods' do
|
10
10
|
Adhearsion::CallController.new(mock_call).should respond_to :play_time
|
@@ -5,7 +5,7 @@ module Adhearsion::Asterisk
|
|
5
5
|
describe AgentProxy do
|
6
6
|
let(:queue_name) { 'foobar' }
|
7
7
|
let(:mock_ee) { mock 'Adhearsion::DialPlan::ExecutionEnvironment' }
|
8
|
-
let(:mock_queue) {
|
8
|
+
let(:mock_queue) { mock('QueueProxy', :environment => mock_ee, :name => queue_name).as_null_object }
|
9
9
|
|
10
10
|
let(:agent_id) { 123 }
|
11
11
|
|
@@ -13,15 +13,15 @@ module Adhearsion::Asterisk
|
|
13
13
|
|
14
14
|
it 'should properly retrieve metadata' do
|
15
15
|
metadata_name = 'status'
|
16
|
-
mock_ee.
|
16
|
+
mock_ee.should_receive(:variable).once.with("AGENT(#{agent_id}:#{metadata_name})")
|
17
17
|
subject.send :agent_metadata, metadata_name
|
18
18
|
end
|
19
19
|
|
20
20
|
it '#logged_in? should return true if the "state" of an agent == LOGGEDIN' do
|
21
|
-
subject.
|
21
|
+
subject.should_receive(:agent_metadata).once.with('status').and_return 'LOGGEDIN'
|
22
22
|
subject.logged_in?.should be true
|
23
23
|
|
24
|
-
subject.
|
24
|
+
subject.should_receive(:agent_metadata).once.with('status').and_return 'LOGGEDOUT'
|
25
25
|
subject.logged_in?.should_not be true
|
26
26
|
end
|
27
27
|
|
@@ -32,55 +32,55 @@ module Adhearsion::Asterisk
|
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'should pause an agent properly from a certain queue' do
|
35
|
-
mock_ee.
|
36
|
-
mock_ee.
|
35
|
+
mock_ee.should_receive(:get_variable).once.with("PQMSTATUS").and_return "PAUSED"
|
36
|
+
mock_ee.should_receive(:execute).once.with("PauseQueueMember", queue_name, "Agent/#{agent_id}")
|
37
37
|
|
38
38
|
subject.pause!.should be true
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'should pause an agent properly from a certain queue and return false when the agent did not exist' do
|
42
|
-
mock_ee.
|
43
|
-
mock_ee.
|
42
|
+
mock_ee.should_receive(:get_variable).once.with("PQMSTATUS").and_return "NOTFOUND"
|
43
|
+
mock_ee.should_receive(:execute).once.with("PauseQueueMember", queue_name, "Agent/#{agent_id}")
|
44
44
|
|
45
45
|
subject.pause!.should be false
|
46
46
|
end
|
47
47
|
|
48
48
|
it 'should pause an agent globally properly' do
|
49
|
-
mock_ee.
|
50
|
-
mock_ee.
|
49
|
+
mock_ee.should_receive(:get_variable).once.with("PQMSTATUS").and_return "PAUSED"
|
50
|
+
mock_ee.should_receive(:execute).once.with "PauseQueueMember", nil, "Agent/#{agent_id}"
|
51
51
|
|
52
52
|
subject.pause! :everywhere => true
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'should unpause an agent properly' do
|
56
|
-
mock_ee.
|
57
|
-
mock_ee.
|
56
|
+
mock_ee.should_receive(:get_variable).once.with("UPQMSTATUS").and_return "UNPAUSED"
|
57
|
+
mock_ee.should_receive(:execute).once.with("UnpauseQueueMember", queue_name, "Agent/#{agent_id}")
|
58
58
|
|
59
59
|
subject.unpause!.should be true
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'should unpause an agent globally properly' do
|
63
|
-
mock_ee.
|
64
|
-
mock_ee.
|
63
|
+
mock_ee.should_receive(:get_variable).once.with("UPQMSTATUS").and_return "UNPAUSED"
|
64
|
+
mock_ee.should_receive(:execute).once.with("UnpauseQueueMember", nil, "Agent/#{agent_id}")
|
65
65
|
|
66
66
|
subject.unpause!(:everywhere => true).should be true
|
67
67
|
end
|
68
68
|
|
69
69
|
it 'should remove an agent properly' do
|
70
|
-
mock_ee.
|
71
|
-
mock_ee.
|
70
|
+
mock_ee.should_receive(:execute).once.with('RemoveQueueMember', queue_name, "Agent/#{agent_id}")
|
71
|
+
mock_ee.should_receive(:get_variable).once.with("RQMSTATUS").and_return "REMOVED"
|
72
72
|
subject.remove!.should be true
|
73
73
|
end
|
74
74
|
|
75
75
|
it 'should remove an agent properly' do
|
76
|
-
mock_ee.
|
77
|
-
mock_ee.
|
76
|
+
mock_ee.should_receive(:execute).once.with('RemoveQueueMember', queue_name, "Agent/#{agent_id}")
|
77
|
+
mock_ee.should_receive(:get_variable).once.with("RQMSTATUS").and_return "NOTINQUEUE"
|
78
78
|
subject.remove!.should be false
|
79
79
|
end
|
80
80
|
|
81
81
|
it "should raise a QueueDoesNotExistError when removing an agent from a queue that doesn't exist" do
|
82
|
-
mock_ee.
|
83
|
-
mock_ee.
|
82
|
+
mock_ee.should_receive(:execute).once.with("RemoveQueueMember", queue_name, "Agent/#{agent_id}")
|
83
|
+
mock_ee.should_receive(:get_variable).once.with("RQMSTATUS").and_return "NOSUCHQUEUE"
|
84
84
|
lambda {
|
85
85
|
subject.remove!
|
86
86
|
}.should raise_error QueueDoesNotExistError
|
@@ -6,27 +6,27 @@ module Adhearsion::Asterisk
|
|
6
6
|
let(:queue_name) { 'foobar' }
|
7
7
|
let(:agent_channel) { "Agent/123" }
|
8
8
|
let(:mock_ee) { mock 'Adhearsion::DialPlan::ExecutionEnvironment' }
|
9
|
-
let(:mock_queue) {
|
9
|
+
let(:mock_queue) { mock('QueueProxy', :environment => mock_ee, :name => queue_name).as_null_object }
|
10
10
|
|
11
11
|
subject { QueueAgentsListProxy.new mock_queue, true }
|
12
12
|
|
13
13
|
it 'should fetch the members with the queue name' do
|
14
|
-
mock_ee.
|
14
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUE_MEMBER_COUNT(#{queue_name})").and_return 5
|
15
15
|
subject.size.should == 5
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'should not fetch a QUEUE_MEMBER_COUNT each time #count is called when caching is enabled' do
|
19
|
-
mock_ee.
|
19
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUE_MEMBER_COUNT(#{queue_name})").and_return 0
|
20
20
|
10.times { subject.size }
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'when fetching agents, it should properly split by the supported delimiters' do
|
24
|
-
mock_ee.
|
24
|
+
mock_ee.should_receive(:get_variable).with("QUEUE_MEMBER_LIST(#{queue_name})").and_return('Agent/007,Agent/003,Zap/2')
|
25
25
|
subject.to_a.size.should == 3
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'when fetching agents, each array index should be an instance of AgentProxy' do
|
29
|
-
mock_ee.
|
29
|
+
mock_ee.should_receive(:get_variable).with("QUEUE_MEMBER_LIST(#{queue_name})").and_return('Agent/007,Agent/003,Zap/2')
|
30
30
|
agents = subject.to_a
|
31
31
|
agents.size.should > 0
|
32
32
|
agents.each do |agent|
|
@@ -35,30 +35,30 @@ module Adhearsion::Asterisk
|
|
35
35
|
end
|
36
36
|
|
37
37
|
it '#<< should new the channel driver given as the argument to the system' do
|
38
|
-
mock_ee.
|
39
|
-
mock_ee.
|
40
|
-
mock_ee.
|
38
|
+
mock_ee.should_receive(:execute).once.with("AddQueueMember", queue_name, agent_channel, "", "", "", "")
|
39
|
+
mock_ee.should_receive(:get_variable).once.with('AQMSTATUS').and_return('ADDED')
|
40
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUE_MEMBER_LIST(#{queue_name})").and_return "Agent/007,SIP/2302,Local/2510@from-internal"
|
41
41
|
subject.new agent_channel
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'when a queue agent is dynamically added and the queue does not exist, a QueueDoesNotExistError should be raised' do
|
45
|
-
mock_ee.
|
46
|
-
mock_ee.
|
45
|
+
mock_ee.should_receive(:execute).once.with("AddQueueMember", queue_name, agent_channel, "", "", "", "")
|
46
|
+
mock_ee.should_receive(:get_variable).once.with('AQMSTATUS').and_return('NOSUCHQUEUE')
|
47
47
|
lambda {
|
48
48
|
subject.new agent_channel
|
49
49
|
}.should raise_error QueueDoesNotExistError
|
50
50
|
end
|
51
51
|
|
52
52
|
it 'when a queue agent is dynamiaclly added and the adding was successful, an AgentProxy should be returned' do
|
53
|
-
mock_ee.
|
54
|
-
mock_ee.
|
55
|
-
mock_ee.
|
53
|
+
mock_ee.should_receive(:get_variable).once.with("AQMSTATUS").and_return("ADDED")
|
54
|
+
mock_ee.should_receive(:execute).once.with("AddQueueMember", queue_name, agent_channel, "", "", "", "")
|
55
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUE_MEMBER_LIST(#{queue_name})").and_return "Agent/007,SIP/2302,Local/2510@from-internal"
|
56
56
|
subject.new(agent_channel).should be_a AgentProxy
|
57
57
|
end
|
58
58
|
|
59
59
|
it 'when a queue agent is dynamiaclly added and the adding was unsuccessful, a false should be returned' do
|
60
|
-
mock_ee.
|
61
|
-
mock_ee.
|
60
|
+
mock_ee.should_receive(:get_variable).once.with("AQMSTATUS").and_return("MEMBERALREADY")
|
61
|
+
mock_ee.should_receive(:execute).once.with("AddQueueMember", queue_name, agent_channel, "", "", "", "")
|
62
62
|
subject.new(agent_channel).should be false
|
63
63
|
end
|
64
64
|
|
@@ -69,61 +69,61 @@ module Adhearsion::Asterisk
|
|
69
69
|
end
|
70
70
|
|
71
71
|
it 'should execute AddQueueMember with the penalty properly' do
|
72
|
-
mock_ee.
|
73
|
-
mock_ee.
|
74
|
-
mock_ee.
|
72
|
+
mock_ee.should_receive(:execute).once.with('AddQueueMember', queue_name, agent_channel, 10, '', '','')
|
73
|
+
mock_ee.should_receive(:get_variable).once.with('AQMSTATUS').and_return('ADDED')
|
74
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUE_MEMBER_LIST(#{queue_name})").and_return "Agent/007,SIP/2302,Local/2510@from-internal"
|
75
75
|
subject.new agent_channel, :penalty => 10
|
76
76
|
end
|
77
77
|
|
78
78
|
it 'should execute AddQueueMember with the state_interface properly' do
|
79
|
-
mock_ee.
|
80
|
-
mock_ee.
|
81
|
-
mock_ee.
|
79
|
+
mock_ee.should_receive(:execute).once.with('AddQueueMember', queue_name, agent_channel, '', '', '','SIP/2302')
|
80
|
+
mock_ee.should_receive(:get_variable).once.with('AQMSTATUS').and_return('ADDED')
|
81
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUE_MEMBER_LIST(#{queue_name})").and_return "Agent/007,SIP/2302,Local/2510@from-internal"
|
82
82
|
subject.new agent_channel, :state_interface => 'SIP/2302'
|
83
83
|
end
|
84
84
|
|
85
85
|
it 'should execute AddQueueMember properly when the name is given' do
|
86
86
|
agent_name = 'Jay Phillips'
|
87
|
-
mock_ee.
|
88
|
-
mock_ee.
|
89
|
-
mock_ee.
|
87
|
+
mock_ee.should_receive(:execute).once.with('AddQueueMember', queue_name, agent_channel, '', '', agent_name,'')
|
88
|
+
mock_ee.should_receive(:get_variable).once.with('AQMSTATUS').and_return('ADDED')
|
89
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUE_MEMBER_LIST(#{queue_name})").and_return "Agent/007,SIP/2302,Local/2510@from-internal"
|
90
90
|
subject.new agent_channel, :name => agent_name
|
91
91
|
end
|
92
92
|
|
93
93
|
it 'should execute AddQueueMember properly when the name, penalty, and interface is given' do
|
94
94
|
agent_name, penalty = 'Jay Phillips', 4
|
95
|
-
mock_ee.
|
96
|
-
mock_ee.
|
97
|
-
mock_ee.
|
95
|
+
mock_ee.should_receive(:execute).once.with('AddQueueMember', queue_name, agent_channel, penalty, '', agent_name,'')
|
96
|
+
mock_ee.should_receive(:get_variable).once.with('AQMSTATUS').and_return('ADDED')
|
97
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUE_MEMBER_LIST(#{queue_name})").and_return "Agent/007,SIP/2302,Local/2510@from-internal"
|
98
98
|
subject.new agent_channel, :name => agent_name, :penalty => penalty
|
99
99
|
end
|
100
100
|
|
101
101
|
it 'should execute AddQueueMember properly when the name, penalty, interface, and state_interface is given' do
|
102
102
|
agent_name, penalty, state_interface = 'Jay Phillips', 4, 'SIP/2302'
|
103
|
-
mock_ee.
|
104
|
-
mock_ee.
|
105
|
-
mock_ee.
|
103
|
+
mock_ee.should_receive(:execute).once.with('AddQueueMember', queue_name, agent_channel, penalty, '', agent_name, state_interface)
|
104
|
+
mock_ee.should_receive(:get_variable).once.with('AQMSTATUS').and_return('ADDED')
|
105
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUE_MEMBER_LIST(#{queue_name})").and_return "Agent/007,SIP/2302,Local/2510@from-internal"
|
106
106
|
subject.new agent_channel, :name => agent_name, :penalty => penalty, :state_interface => state_interface
|
107
107
|
end
|
108
108
|
|
109
109
|
it "should log an agent in properly with no agent id given" do
|
110
|
-
mock_ee.
|
110
|
+
mock_ee.should_receive(:execute).once.with('AgentLogin', nil, 's')
|
111
111
|
subject.login!
|
112
112
|
end
|
113
113
|
|
114
114
|
it 'should remove "Agent/" before the agent ID given if necessary when logging an agent in' do
|
115
|
-
mock_ee.
|
115
|
+
mock_ee.should_receive(:execute).once.with('AgentLogin', '007', 's')
|
116
116
|
subject.login! 'Agent/007'
|
117
117
|
|
118
|
-
mock_ee.
|
118
|
+
mock_ee.should_receive(:execute).once.with('AgentLogin', '007', 's')
|
119
119
|
subject.login! '007'
|
120
120
|
end
|
121
121
|
|
122
122
|
it 'should add an agent silently properly' do
|
123
|
-
mock_ee.
|
123
|
+
mock_ee.should_receive(:execute).once.with('AgentLogin', '007', '')
|
124
124
|
subject.login! 'Agent/007', :silent => false
|
125
125
|
|
126
|
-
mock_ee.
|
126
|
+
mock_ee.should_receive(:execute).once.with('AgentLogin', '008', 's')
|
127
127
|
subject.login! 'Agent/008', :silent => true
|
128
128
|
end
|
129
129
|
|
@@ -19,82 +19,82 @@ module Adhearsion::Asterisk
|
|
19
19
|
|
20
20
|
describe '#join' do
|
21
21
|
it 'should properly join a queue' do
|
22
|
-
mock_ee.
|
23
|
-
mock_ee.
|
22
|
+
mock_ee.should_receive(:execute).once.with("queue", queue_name, "", '', '', '', '')
|
23
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUESTATUS").and_return "FULL"
|
24
24
|
subject.join!
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'should return a symbol representing the result of joining the queue' do
|
28
|
-
mock_ee.
|
29
|
-
mock_ee.
|
28
|
+
mock_ee.should_receive(:execute).once.with("queue", queue_name, "", '', '', '', '')
|
29
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUESTATUS").and_return "TIMEOUT"
|
30
30
|
subject.join!.should be :timeout
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'should return :completed after joining the queue and being connected' do
|
34
|
-
mock_ee.
|
35
|
-
mock_ee.
|
34
|
+
mock_ee.should_receive(:execute).once.with("queue", queue_name, "", '', '', '', '')
|
35
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUESTATUS").and_return nil
|
36
36
|
subject.join!.should be :completed
|
37
37
|
end
|
38
38
|
|
39
39
|
it 'should join a queue with a timeout properly' do
|
40
|
-
mock_ee.
|
41
|
-
mock_ee.
|
40
|
+
mock_ee.should_receive(:execute).once.with("queue", queue_name, "", '', '', '60', '')
|
41
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUESTATUS").and_return "JOINEMPTY"
|
42
42
|
subject.join! :timeout => 1.minute
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'should join a queue with an announcement file properly' do
|
46
|
-
mock_ee.
|
47
|
-
mock_ee.
|
46
|
+
mock_ee.should_receive(:execute).once.with("queue", queue_name, "", '', 'custom_announcement_file_here', '', '')
|
47
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUESTATUS").and_return "JOINEMPTY"
|
48
48
|
subject.join! :announce => 'custom_announcement_file_here'
|
49
49
|
end
|
50
50
|
|
51
51
|
it 'should join a queue with an agi script properly' do
|
52
|
-
mock_ee.
|
53
|
-
mock_ee.
|
52
|
+
mock_ee.should_receive(:execute).once.with("queue", queue_name, '', '', '', '','agi://localhost/queue_agi_test')
|
53
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUESTATUS").and_return "JOINUNAVAIL"
|
54
54
|
subject.join! :agi => 'agi://localhost/queue_agi_test'
|
55
55
|
end
|
56
56
|
|
57
57
|
it 'should join a queue with allow_transfer properly' do
|
58
|
-
mock_ee.
|
59
|
-
mock_ee.
|
58
|
+
mock_ee.should_receive(:execute).once.with("queue", queue_name, "Tt", '', '', '', '')
|
59
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUESTATUS").and_return "JOINEMPTY"
|
60
60
|
subject.join! :allow_transfer => :everyone
|
61
61
|
|
62
|
-
mock_ee.
|
63
|
-
mock_ee.
|
62
|
+
mock_ee.should_receive(:execute).once.with("queue", queue_name, "T", '', '', '', '')
|
63
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUESTATUS").and_return "JOINEMPTY"
|
64
64
|
subject.join! :allow_transfer => :caller
|
65
65
|
|
66
|
-
mock_ee.
|
67
|
-
mock_ee.
|
66
|
+
mock_ee.should_receive(:execute).once.with("queue", queue_name, "t", '', '', '', '')
|
67
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUESTATUS").and_return "JOINEMPTY"
|
68
68
|
subject.join! :allow_transfer => :agent
|
69
69
|
end
|
70
70
|
|
71
71
|
it 'should join a queue with allow_hangup properly' do
|
72
|
-
mock_ee.
|
73
|
-
mock_ee.
|
72
|
+
mock_ee.should_receive(:execute).once.with("queue", queue_name, "Hh", '', '', '', '')
|
73
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUESTATUS").and_return "JOINEMPTY"
|
74
74
|
subject.join! :allow_hangup => :everyone
|
75
75
|
|
76
|
-
mock_ee.
|
77
|
-
mock_ee.
|
76
|
+
mock_ee.should_receive(:execute).once.with("queue", queue_name, "H", '', '', '', '')
|
77
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUESTATUS").and_return "JOINEMPTY"
|
78
78
|
subject.join! :allow_hangup => :caller
|
79
79
|
|
80
|
-
mock_ee.
|
81
|
-
mock_ee.
|
80
|
+
mock_ee.should_receive(:execute).once.with("queue", queue_name, "h", '', '', '', '')
|
81
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUESTATUS").and_return "JOINEMPTY"
|
82
82
|
subject.join! :allow_hangup => :agent
|
83
83
|
end
|
84
84
|
|
85
85
|
it 'should join a queue properly with the :play argument' do
|
86
|
-
mock_ee.
|
87
|
-
mock_ee.
|
86
|
+
mock_ee.should_receive(:execute).once.with("queue", queue_name, "r", '', '', '', '')
|
87
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUESTATUS").and_return "JOINEMPTY"
|
88
88
|
subject.join! :play => :ringing
|
89
89
|
|
90
|
-
mock_ee.
|
91
|
-
mock_ee.
|
90
|
+
mock_ee.should_receive(:execute).once.with("queue", queue_name, "", '', '', '', '')
|
91
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUESTATUS").and_return "JOINEMPTY"
|
92
92
|
subject.join! :play => :music
|
93
93
|
end
|
94
94
|
|
95
95
|
it 'joining a queue with many options specified' do
|
96
|
-
mock_ee.
|
97
|
-
mock_ee.
|
96
|
+
mock_ee.should_receive(:execute).once.with("queue", queue_name, "rtHh", '', '', '120', '')
|
97
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUESTATUS").and_return "JOINEMPTY"
|
98
98
|
subject.join! :allow_transfer => :agent, :timeout => 2.minutes,
|
99
99
|
:play => :ringing, :allow_hangup => :everyone
|
100
100
|
end
|
@@ -115,41 +115,41 @@ module Adhearsion::Asterisk
|
|
115
115
|
end
|
116
116
|
|
117
117
|
it 'should return a correct boolean for #exists?' do
|
118
|
-
mock_ee.
|
119
|
-
mock_ee.
|
118
|
+
mock_ee.should_receive(:execute).once.with("RemoveQueueMember", queue_name, "SIP/AdhearsionQueueExistenceCheck")
|
119
|
+
mock_ee.should_receive(:get_variable).once.with("RQMSTATUS").and_return "NOTINQUEUE"
|
120
120
|
subject.exists?.should be true
|
121
121
|
|
122
|
-
mock_ee.
|
123
|
-
mock_ee.
|
122
|
+
mock_ee.should_receive(:execute).once.with("RemoveQueueMember", queue_name, "SIP/AdhearsionQueueExistenceCheck")
|
123
|
+
mock_ee.should_receive(:get_variable).once.with("RQMSTATUS").and_return "NOSUCHQUEUE"
|
124
124
|
subject.exists?.should be false
|
125
125
|
end
|
126
126
|
|
127
127
|
it 'waiting_count for a queue that does exist' do
|
128
|
-
mock_ee.
|
129
|
-
subject.
|
128
|
+
mock_ee.should_receive(:get_variable).once.with("QUEUE_WAITING_COUNT(#{queue_name})").and_return "50"
|
129
|
+
subject.should_receive(:exists?).once.and_return true
|
130
130
|
subject.waiting_count.should == 50
|
131
131
|
end
|
132
132
|
|
133
133
|
it 'waiting_count for a queue that does not exist' do
|
134
134
|
lambda {
|
135
|
-
subject.
|
135
|
+
subject.should_receive(:exists?).once.and_return false
|
136
136
|
subject.waiting_count
|
137
137
|
}.should raise_error Adhearsion::Asterisk::QueueProxy::QueueDoesNotExistError
|
138
138
|
end
|
139
139
|
|
140
140
|
it 'empty? should call waiting_count' do
|
141
|
-
subject.
|
141
|
+
subject.should_receive(:waiting_count).once.and_return 0
|
142
142
|
subject.empty?.should be true
|
143
143
|
|
144
|
-
subject.
|
144
|
+
subject.should_receive(:waiting_count).once.and_return 99
|
145
145
|
subject.empty?.should_not be true
|
146
146
|
end
|
147
147
|
|
148
148
|
it 'any? should call waiting_count' do
|
149
|
-
subject.
|
149
|
+
subject.should_receive(:waiting_count).once.and_return 0
|
150
150
|
subject.any?.should be false
|
151
151
|
|
152
|
-
subject.
|
152
|
+
subject.should_receive(:waiting_count).once.and_return 99
|
153
153
|
subject.any?.should be true
|
154
154
|
end
|
155
155
|
end
|