queri 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +96 -0
  7. data/Rakefile +7 -0
  8. data/lib/queri/realtime/agents.rb +80 -0
  9. data/lib/queri/realtime/queues.rb +64 -0
  10. data/lib/queri/realtime.rb +14 -0
  11. data/lib/queri/stats/agents_and_sessions/agent_availability.rb +76 -0
  12. data/lib/queri/stats/agents_and_sessions.rb +11 -0
  13. data/lib/queri/stats/answered_calls/agents_on_queue.rb +73 -0
  14. data/lib/queri/stats/answered_calls/all_calls.rb +81 -0
  15. data/lib/queri/stats/answered_calls.rb +11 -0
  16. data/lib/queri/stats/unanswered_calls/all_calls.rb +80 -0
  17. data/lib/queri/stats/unanswered_calls.rb +11 -0
  18. data/lib/queri/stats.rb +9 -0
  19. data/lib/queri/version.rb +3 -0
  20. data/lib/queri.rb +113 -0
  21. data/queri.gemspec +25 -0
  22. data/spec/queri_spec.rb +268 -0
  23. data/spec/realtime/agents_spec.rb +18 -0
  24. data/spec/realtime/queues_spec.rb +18 -0
  25. data/spec/realtime/realtime_spec.rb +10 -0
  26. data/spec/spec_helper.rb +11 -0
  27. data/spec/stats/agents_and_sessions/agent_availability_spec.rb +18 -0
  28. data/spec/stats/agents_and_sessions/agents_and_sessions_spec.rb +7 -0
  29. data/spec/stats/answered_calls/agents_on_queue_spec.rb +18 -0
  30. data/spec/stats/answered_calls/all_calls_spec.rb +18 -0
  31. data/spec/stats/answered_calls/answered_calls_spec.rb +7 -0
  32. data/spec/stats/stats_spec.rb +7 -0
  33. data/spec/stats/unanswered_calls/all_calls_spec.rb +18 -0
  34. data/spec/stats/unanswered_calls/unanswered_calls_spec.rb +7 -0
  35. data/spec/support/constantize.rb +27 -0
  36. data/spec/support/shared/shared_examples_for_agent_level_report_instance.rb +37 -0
  37. data/spec/support/shared/shared_examples_for_aggregate_report_instance.rb +37 -0
  38. data/spec/support/shared/shared_examples_for_private_constant.rb +9 -0
  39. data/spec/support/shared/shared_examples_for_queuemetrics_report.rb +25 -0
  40. data/spec/support/shared/shared_examples_for_realtime_report.rb +32 -0
  41. data/spec/support/shared/shared_examples_for_realtime_report_instance.rb +26 -0
  42. data/spec/support/shared/shared_examples_for_report_class.rb +13 -0
  43. data/spec/support/shared/shared_examples_for_report_method.rb +13 -0
  44. data/spec/support/shared/shared_examples_for_stats_report.rb +44 -0
  45. data/spec/support/time_helper.rb +17 -0
  46. metadata +154 -0
@@ -0,0 +1,9 @@
1
+ shared_examples "a private constant" do
2
+ it "should be defined" do
3
+ Queri.const_defined?(const_symbol).should be_true
4
+ end
5
+
6
+ it "should not be publically accessible" do
7
+ expect{ constant }.to raise_error NameError
8
+ end
9
+ end
@@ -0,0 +1,25 @@
1
+ shared_examples "a queuemetrics report" do
2
+ describe "::key_translations" do
3
+ subject { report_class.key_translations }
4
+
5
+ it "should respond" do
6
+ expect{ subject }.to_not raise_error
7
+ end
8
+
9
+ it "should be a Hash" do
10
+ subject.should be_a Hash
11
+ end
12
+ end
13
+
14
+ describe "::keys" do
15
+ subject { report_class.keys }
16
+
17
+ it "should respond" do
18
+ expect{ subject }.to_not raise_error
19
+ end
20
+
21
+ it "should be a Array" do
22
+ subject.should be_a Array
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,32 @@
1
+ shared_examples "a realtime report" do
2
+ describe "::new" do
3
+ let(:queues) { ["10000"] }
4
+
5
+ before do
6
+ @client = double(XMLRPC::Client)
7
+ @client.stub(:call).and_return( {xml_code => [report_class.keys]} )
8
+ end
9
+
10
+ subject { report_class.new(queues) }
11
+
12
+ it "should respond" do
13
+ expect{ subject }.to_not raise_error
14
+ end
15
+
16
+ context "missing arguments" do
17
+ subject { report_class.new }
18
+
19
+ it "should raise ArgumentError" do
20
+ expect{ subject }.to raise_error(ArgumentError, "expected argument: queues(Array)")
21
+ end
22
+ end
23
+
24
+ context "given an empty array for queues" do
25
+ let(:queues) { [] }
26
+
27
+ it "should raise ArgumentError" do
28
+ expect{ subject }.to raise_error(ArgumentError, "queues array cannot be empty")
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,26 @@
1
+ shared_examples "a realtime report instance" do
2
+ let(:queues) { ["10000"] }
3
+
4
+ before do
5
+ @client = double(XMLRPC::Client)
6
+ @client.stub(:call).and_return( {xml_code => [report_class.keys]} )
7
+ end
8
+
9
+ subject { report_class.new(queues) }
10
+
11
+ it { should_not respond_to :response= }
12
+
13
+ describe "#response" do
14
+ subject { report_class.new(queues).response }
15
+
16
+ it "should respond" do
17
+ XMLRPC::Client.stub(:new).and_return(@client)
18
+ expect{ subject }.to_not raise_error
19
+ end
20
+
21
+ it "should be an Array" do
22
+ XMLRPC::Client.stub(:new).and_return(@client)
23
+ subject.should be_a Array
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,13 @@
1
+ shared_examples "a report class" do
2
+ describe "::xml_code" do
3
+ subject { report_class.xml_code }
4
+
5
+ it "should respond" do
6
+ expect{ subject }.to_not raise_error
7
+ end
8
+
9
+ it "should be a String" do
10
+ subject.should be_a String
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ shared_examples "a report method" do
2
+ describe "::query_method" do
3
+ subject { report_class.query_method }
4
+
5
+ it "should respond" do
6
+ expect{ subject }.to_not raise_error
7
+ end
8
+
9
+ it "should be a String" do
10
+ subject.should be_a String
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,44 @@
1
+ shared_examples "a stats report" do
2
+ describe "::new" do
3
+ let(:queues) { ["10000"] }
4
+ let(:period_start) { Time.now - 7200 }
5
+ let(:period_end) { Time.now - 3600 }
6
+
7
+ before do
8
+ @client = double(XMLRPC::Client)
9
+ @client.stub(:call).and_return( {xml_code => [report_class.keys]} )
10
+ end
11
+
12
+ subject { report_class.new(queues, period_start, period_end) }
13
+
14
+ it "should respond" do
15
+ expect{ subject }.to_not raise_error
16
+ end
17
+
18
+ context "missing arguments" do
19
+ subject { report_class.new }
20
+
21
+ it "should raise ArgumentError" do
22
+ expect{ subject }.to raise_error(ArgumentError, "expected arguments: queues(Array), period_start(Time), period_end(Time)")
23
+ end
24
+ end
25
+
26
+ context "given a period_start greater than period_end" do
27
+ let(:period_start) { period_end + 1 }
28
+
29
+ before { XMLRPC::Client.stub(:new).and_return(@client) }
30
+
31
+ it "should reassign the values to make sense" do
32
+ subject.instance_variable_get(:@period_start).should < subject.instance_variable_get(:@period_end)
33
+ end
34
+ end
35
+
36
+ context "given an empty array for queues" do
37
+ let(:queues) { [] }
38
+
39
+ it "should raise ArgumentError" do
40
+ expect{ subject }.to raise_error(ArgumentError, "queues array cannot be empty")
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,17 @@
1
+ module TimeHelper
2
+ def most_recent_11_am_hour
3
+ t = Time.now - 3600
4
+ while t.hour != 11
5
+ t -= 3600
6
+ end
7
+ return t
8
+ end
9
+
10
+ def most_recent_12_pm_hour
11
+ t = Time.now
12
+ while t.hour != 12
13
+ t -= 3600
14
+ end
15
+ return t
16
+ end
17
+ end
metadata ADDED
@@ -0,0 +1,154 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: queri
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Brad Rice
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 2.14.1
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 2.14.1
55
+ description: Queuemetrics Reporting Interface
56
+ email:
57
+ - bradley_rice@mac.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - .gitignore
63
+ - .rspec
64
+ - Gemfile
65
+ - LICENSE.txt
66
+ - README.md
67
+ - Rakefile
68
+ - lib/queri.rb
69
+ - lib/queri/realtime.rb
70
+ - lib/queri/realtime/agents.rb
71
+ - lib/queri/realtime/queues.rb
72
+ - lib/queri/stats.rb
73
+ - lib/queri/stats/agents_and_sessions.rb
74
+ - lib/queri/stats/agents_and_sessions/agent_availability.rb
75
+ - lib/queri/stats/answered_calls.rb
76
+ - lib/queri/stats/answered_calls/agents_on_queue.rb
77
+ - lib/queri/stats/answered_calls/all_calls.rb
78
+ - lib/queri/stats/unanswered_calls.rb
79
+ - lib/queri/stats/unanswered_calls/all_calls.rb
80
+ - lib/queri/version.rb
81
+ - queri.gemspec
82
+ - spec/queri_spec.rb
83
+ - spec/realtime/agents_spec.rb
84
+ - spec/realtime/queues_spec.rb
85
+ - spec/realtime/realtime_spec.rb
86
+ - spec/spec_helper.rb
87
+ - spec/stats/agents_and_sessions/agent_availability_spec.rb
88
+ - spec/stats/agents_and_sessions/agents_and_sessions_spec.rb
89
+ - spec/stats/answered_calls/agents_on_queue_spec.rb
90
+ - spec/stats/answered_calls/all_calls_spec.rb
91
+ - spec/stats/answered_calls/answered_calls_spec.rb
92
+ - spec/stats/stats_spec.rb
93
+ - spec/stats/unanswered_calls/all_calls_spec.rb
94
+ - spec/stats/unanswered_calls/unanswered_calls_spec.rb
95
+ - spec/support/constantize.rb
96
+ - spec/support/shared/shared_examples_for_agent_level_report_instance.rb
97
+ - spec/support/shared/shared_examples_for_aggregate_report_instance.rb
98
+ - spec/support/shared/shared_examples_for_private_constant.rb
99
+ - spec/support/shared/shared_examples_for_queuemetrics_report.rb
100
+ - spec/support/shared/shared_examples_for_realtime_report.rb
101
+ - spec/support/shared/shared_examples_for_realtime_report_instance.rb
102
+ - spec/support/shared/shared_examples_for_report_class.rb
103
+ - spec/support/shared/shared_examples_for_report_method.rb
104
+ - spec/support/shared/shared_examples_for_stats_report.rb
105
+ - spec/support/time_helper.rb
106
+ homepage: ''
107
+ licenses:
108
+ - MIT
109
+ metadata: {}
110
+ post_install_message:
111
+ rdoc_options: []
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - '>='
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ requirements: []
125
+ rubyforge_project:
126
+ rubygems_version: 2.0.3
127
+ signing_key:
128
+ specification_version: 4
129
+ summary: Send requests to QM's XMLRPC client and receive human-readable responses
130
+ test_files:
131
+ - spec/queri_spec.rb
132
+ - spec/realtime/agents_spec.rb
133
+ - spec/realtime/queues_spec.rb
134
+ - spec/realtime/realtime_spec.rb
135
+ - spec/spec_helper.rb
136
+ - spec/stats/agents_and_sessions/agent_availability_spec.rb
137
+ - spec/stats/agents_and_sessions/agents_and_sessions_spec.rb
138
+ - spec/stats/answered_calls/agents_on_queue_spec.rb
139
+ - spec/stats/answered_calls/all_calls_spec.rb
140
+ - spec/stats/answered_calls/answered_calls_spec.rb
141
+ - spec/stats/stats_spec.rb
142
+ - spec/stats/unanswered_calls/all_calls_spec.rb
143
+ - spec/stats/unanswered_calls/unanswered_calls_spec.rb
144
+ - spec/support/constantize.rb
145
+ - spec/support/shared/shared_examples_for_agent_level_report_instance.rb
146
+ - spec/support/shared/shared_examples_for_aggregate_report_instance.rb
147
+ - spec/support/shared/shared_examples_for_private_constant.rb
148
+ - spec/support/shared/shared_examples_for_queuemetrics_report.rb
149
+ - spec/support/shared/shared_examples_for_realtime_report.rb
150
+ - spec/support/shared/shared_examples_for_realtime_report_instance.rb
151
+ - spec/support/shared/shared_examples_for_report_class.rb
152
+ - spec/support/shared/shared_examples_for_report_method.rb
153
+ - spec/support/shared/shared_examples_for_stats_report.rb
154
+ - spec/support/time_helper.rb