electric_slide 0.2.0 → 0.3.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 +4 -4
- data/.travis.yml +10 -0
- data/CHANGELOG.md +21 -0
- data/LICENSE +1 -1
- data/README.markdown +33 -6
- data/electric_slide.gemspec +3 -1
- data/lib/electric_slide.rb +36 -36
- data/lib/electric_slide/agent.rb +61 -38
- data/lib/electric_slide/agent_strategy/longest_idle.rb +1 -1
- data/lib/electric_slide/call_queue.rb +172 -38
- data/lib/electric_slide/version.rb +1 -1
- data/spec/electric_slide/agent_spec.rb +29 -3
- data/spec/electric_slide/agent_strategy/fixed_priority_spec.rb +7 -8
- data/spec/electric_slide/call_queue_spec.rb +436 -25
- data/spec/electric_slide_spec.rb +58 -14
- data/spec/spec_helper.rb +6 -0
- metadata +23 -6
data/spec/electric_slide_spec.rb
CHANGED
@@ -6,36 +6,80 @@ describe ElectricSlide do
|
|
6
6
|
ElectricSlide.shutdown_queue :fake
|
7
7
|
end
|
8
8
|
|
9
|
-
let(:queue_class) { double :fake_queue_class }
|
10
|
-
let(:queue_inst) { double :fake_queue_instance }
|
11
|
-
|
12
9
|
it "should default to an ElectricSlide::CallQueue if one is not specified" do
|
13
10
|
ElectricSlide.create :fake
|
14
|
-
expect
|
11
|
+
expect(ElectricSlide.get_queue :fake).to be_a(ElectricSlide::CallQueue)
|
15
12
|
end
|
16
13
|
|
17
14
|
it "should start the queue upon registration" do
|
18
|
-
|
19
|
-
expect(
|
15
|
+
ElectricSlide.create :fake
|
16
|
+
expect(ElectricSlide.get_queue(:fake).alive?).to be true
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should start a custom queue type" do
|
20
|
+
queue_class = Class.new(ElectricSlide::CallQueue)
|
20
21
|
ElectricSlide.create :fake, queue_class
|
22
|
+
expect(ElectricSlide.get_queue(:fake).alive?).to be true
|
21
23
|
end
|
22
24
|
|
23
25
|
it "should preserve additional queue arguments" do
|
24
|
-
|
25
|
-
expect(
|
26
|
-
expect(queue_inst).to receive(:terminate).once
|
27
|
-
ElectricSlide.create :fake, queue_class, :foo, :bar, :baz
|
26
|
+
ElectricSlide.create :fake, nil, agent_return_method: :manual
|
27
|
+
expect(ElectricSlide.get_queue(:fake).agent_return_method).to be(:manual)
|
28
28
|
end
|
29
29
|
|
30
30
|
it "should not allow a second queue to be created with the same name" do
|
31
31
|
ElectricSlide.create :fake
|
32
|
-
expect { ElectricSlide.create :fake }.to raise_error
|
32
|
+
expect { ElectricSlide.create :fake }.to raise_error(StandardError)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
describe "shutting down a queue" do
|
37
|
+
before do
|
38
|
+
ElectricSlide.create :fooqueue
|
39
|
+
ElectricSlide.shutdown_queue :fooqueue
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should make the queue inaccessible" do
|
43
|
+
expect(ElectricSlide.get_queue(:fooqueue)).to be_nil
|
44
|
+
end
|
45
|
+
|
46
|
+
context "more than once" do
|
47
|
+
it "should remain silent" do
|
48
|
+
expect {
|
49
|
+
ElectricSlide.shutdown_queue :fooqueue
|
50
|
+
ElectricSlide.shutdown_queue :fooqueue
|
51
|
+
}.not_to raise_error
|
52
|
+
end
|
53
|
+
end
|
39
54
|
end
|
40
55
|
|
56
|
+
describe '::queues_by_name' do
|
57
|
+
before do
|
58
|
+
ElectricSlide.create :barbe
|
59
|
+
ElectricSlide.create :banana
|
60
|
+
end
|
61
|
+
|
62
|
+
after do
|
63
|
+
ElectricSlide.shutdown_queue :barbe
|
64
|
+
ElectricSlide.shutdown_queue :banana
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'returns a hash of queues, with their names as keys' do
|
68
|
+
expect(ElectricSlide.queues_by_name).to eq({
|
69
|
+
barbe: ElectricSlide.get_queue(:barbe),
|
70
|
+
banana: ElectricSlide.get_queue(:banana)
|
71
|
+
})
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'when there are no queues' do
|
75
|
+
before do
|
76
|
+
ElectricSlide.shutdown_queue :barbe
|
77
|
+
ElectricSlide.shutdown_queue :banana
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'returns an empty hash' do
|
81
|
+
expect(ElectricSlide.queues_by_name).to eq({})
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
41
85
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -5,11 +5,17 @@ Thread.abort_on_exception = true
|
|
5
5
|
adhearsion
|
6
6
|
electric_slide
|
7
7
|
rspec/core
|
8
|
+
timecop
|
8
9
|
).each { |r| require r }
|
9
10
|
|
10
11
|
RSpec.configure do |config|
|
11
12
|
config.filter_run focus: true
|
12
13
|
config.run_all_when_everything_filtered = true
|
14
|
+
config.raise_errors_for_deprecations!
|
15
|
+
|
16
|
+
config.after :each do
|
17
|
+
Timecop.return
|
18
|
+
end
|
13
19
|
end
|
14
20
|
|
15
21
|
def dummy_call
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: electric_slide
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Klang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: adhearsion
|
@@ -54,18 +54,32 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: timecop
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - ">="
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
75
|
+
version: '0'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - ">="
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: ci_reporter
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -145,6 +159,8 @@ extra_rdoc_files: []
|
|
145
159
|
files:
|
146
160
|
- ".gitignore"
|
147
161
|
- ".rspec"
|
162
|
+
- ".travis.yml"
|
163
|
+
- CHANGELOG.md
|
148
164
|
- Gemfile
|
149
165
|
- Guardfile
|
150
166
|
- LICENSE
|
@@ -165,7 +181,8 @@ files:
|
|
165
181
|
- spec/electric_slide_spec.rb
|
166
182
|
- spec/spec_helper.rb
|
167
183
|
homepage: http://github.com/adhearsion/electric_slide
|
168
|
-
licenses:
|
184
|
+
licenses:
|
185
|
+
- MIT
|
169
186
|
metadata: {}
|
170
187
|
post_install_message:
|
171
188
|
rdoc_options: []
|
@@ -183,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
183
200
|
version: '0'
|
184
201
|
requirements: []
|
185
202
|
rubyforge_project:
|
186
|
-
rubygems_version: 2.
|
203
|
+
rubygems_version: 2.2.2
|
187
204
|
signing_key:
|
188
205
|
specification_version: 2
|
189
206
|
summary: Automatic Call Distributor for Adhearsion
|