queri 0.0.2

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.
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