compendium 1.1.2 → 1.1.3
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 +8 -8
- data/CHANGELOG.md +5 -1
- data/lib/compendium.rb +1 -0
- data/lib/compendium/dsl.rb +3 -0
- data/lib/compendium/query.rb +1 -0
- data/lib/compendium/sum_query.rb +26 -0
- data/lib/compendium/version.rb +1 -1
- data/spec/dsl_spec.rb +18 -0
- data/spec/sum_query_spec.rb +42 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OGFjMjNjNDU4NzgwOWE0MGQzNmVhNjMyMDRmMzJjZDQwNjNiMzY3Mw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OTNhNjQ5NzIwYjc4NWFmYWJhNmMwN2M3ZjE3Y2M3NTRkMjExNDg0OA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MjZiZDVkYmRiOTRkMjdmMGMxMGY0YTdkZjIzYWM4ZGNlMDYyOTAyMTBmODFj
|
10
|
+
ZGY1Y2UwZGM4YmNlNmNiYzk5NWYwMWJkOTNlMTNhYzhjMjFmYWE3MTZhM2E0
|
11
|
+
NWQ0ZWY3MDIzMzM4ZTkyMWY5NzQwMzJhZDNhMjUzZjMzNWNjNTM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OTYxODI5ODBiNDIyNDBmZjg4MTAxYWI5YzNmNjJlNjk2ODEwMmY4ZDY0Njdj
|
14
|
+
NjIzNWVjMDhhM2EwMTA1ZTdmYzY4YTllZmYxMDgwNjM4NzcyZDZkYTA4NTAw
|
15
|
+
N2IxMmMwYmQwNTk1NzIzNGE2ZTM0Y2M0ZjU3NWQzMjUxN2E1NGI=
|
data/CHANGELOG.md
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 1.1.2
|
4
|
+
* Allow direct access to a chart object without having to render it (useful if the provider allows chart settings to be updated after initialization)
|
5
|
+
* Delegate missing methods from ChartProvider classes to the chart
|
6
|
+
|
3
7
|
## 1.1.1
|
4
8
|
* Fix crash regressions in Rails 3
|
5
9
|
* Added `CountQuery` query type which calls count on the result of the given block (for instance a query which is
|
6
|
-
grouped by day and then counted)
|
10
|
+
grouped by day and then counted)
|
7
11
|
* Added `ScalarParam` param type for collecting arbitrary data
|
8
12
|
|
9
13
|
## 1.1.0
|
data/lib/compendium.rb
CHANGED
@@ -15,6 +15,7 @@ module Compendium
|
|
15
15
|
autoload :Query, 'compendium/query'
|
16
16
|
autoload :ResultSet, 'compendium/result_set'
|
17
17
|
autoload :Report, 'compendium/report'
|
18
|
+
autoload :SumQuery, 'compendium/sum_query'
|
18
19
|
autoload :ThroughQuery, 'compendium/through_query'
|
19
20
|
|
20
21
|
autoload :Param, 'compendium/param_types'
|
data/lib/compendium/dsl.rb
CHANGED
@@ -101,6 +101,9 @@ module Compendium
|
|
101
101
|
params.insert(1, through)
|
102
102
|
elsif opts.fetch(:count, false)
|
103
103
|
query_type = CountQuery
|
104
|
+
elsif opts.fetch(:sum, false)
|
105
|
+
query_type = SumQuery
|
106
|
+
params.insert(1, opts[:sum])
|
104
107
|
end
|
105
108
|
|
106
109
|
query = query_type.new(*params)
|
data/lib/compendium/query.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'compendium/query'
|
2
|
+
|
3
|
+
module Compendium
|
4
|
+
# A SumQuery is a Query which runs an SQL sum statement (with a given column)
|
5
|
+
# Often useful in conjunction with a grouped query and counter cache
|
6
|
+
# (alternately, see CountQuery)
|
7
|
+
class SumQuery < Query
|
8
|
+
InvalidCommand = Class.new(StandardError)
|
9
|
+
|
10
|
+
attr_accessor :column
|
11
|
+
|
12
|
+
def initialize(*args)
|
13
|
+
@report = args.shift if arg_is_report?(args.first)
|
14
|
+
@column = args.slice!(1)
|
15
|
+
super(*args)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def execute_command(command)
|
21
|
+
return [] if command.nil?
|
22
|
+
raise InvalidCommand unless command.respond_to?(:sum)
|
23
|
+
command.sum(column)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/compendium/version.rb
CHANGED
data/spec/dsl_spec.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'spec_helper'
|
1
2
|
require 'compendium'
|
2
3
|
require 'compendium/dsl'
|
3
4
|
|
@@ -114,6 +115,23 @@ describe Compendium::DSL do
|
|
114
115
|
it { should_not be_a Compendium::CountQuery }
|
115
116
|
end
|
116
117
|
end
|
118
|
+
|
119
|
+
context 'when given a sum option' do
|
120
|
+
subject{ report_class.queries[:summed] }
|
121
|
+
|
122
|
+
context 'set to a truthy value' do
|
123
|
+
before { report_class.query :summed, sum: :assoc_count }
|
124
|
+
|
125
|
+
it { should be_a Compendium::SumQuery }
|
126
|
+
its(:column) { should == :assoc_count }
|
127
|
+
end
|
128
|
+
|
129
|
+
context 'set to false' do
|
130
|
+
before { report_class.query :summed, sum: false }
|
131
|
+
it { should be_a Compendium::Query }
|
132
|
+
it { should_not be_a Compendium::SumQuery }
|
133
|
+
end
|
134
|
+
end
|
117
135
|
end
|
118
136
|
|
119
137
|
describe "#chart" do
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'compendium/sum_query'
|
3
|
+
require 'compendium/report'
|
4
|
+
|
5
|
+
class SingleSummer
|
6
|
+
def sum(col)
|
7
|
+
1792
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
class MultipleSummer
|
12
|
+
def sum(col)
|
13
|
+
{ 1 => 123, 2 => 456, 3 => 789 }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe Compendium::SumQuery do
|
18
|
+
subject { described_class.new(:counted_query, :col, { sum: :col }, -> * { @counter }) }
|
19
|
+
|
20
|
+
describe "#run" do
|
21
|
+
it "should call sum on the proc result" do
|
22
|
+
@counter = SingleSummer.new
|
23
|
+
@counter.should_receive(:sum).with(:col).and_return(1234)
|
24
|
+
subject.run(nil, self)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should return the sum" do
|
28
|
+
@counter = SingleSummer.new
|
29
|
+
subject.run(nil, self).should == [1792]
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should return a hash if given" do
|
33
|
+
@counter = MultipleSummer.new
|
34
|
+
subject.run(nil, self).should == { 1 => 123, 2 => 456, 3 => 789 }
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should raise an error if the proc does not respond to sum" do
|
38
|
+
@counter = Class.new
|
39
|
+
expect { subject.run(nil, self) }.to raise_error Compendium::SumQuery::InvalidCommand
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: compendium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Vandersluis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
type: :runtime
|
@@ -144,6 +144,7 @@ files:
|
|
144
144
|
- lib/compendium/query.rb
|
145
145
|
- lib/compendium/report.rb
|
146
146
|
- lib/compendium/result_set.rb
|
147
|
+
- lib/compendium/sum_query.rb
|
147
148
|
- lib/compendium/through_query.rb
|
148
149
|
- lib/compendium/version.rb
|
149
150
|
- spec/collection_query_spec.rb
|
@@ -161,6 +162,7 @@ files:
|
|
161
162
|
- spec/report_spec.rb
|
162
163
|
- spec/result_set_spec.rb
|
163
164
|
- spec/spec_helper.rb
|
165
|
+
- spec/sum_query_spec.rb
|
164
166
|
- spec/through_query_spec.rb
|
165
167
|
homepage: https://github.com/dvandersluis/compendium
|
166
168
|
licenses:
|
@@ -202,5 +204,6 @@ test_files:
|
|
202
204
|
- spec/report_spec.rb
|
203
205
|
- spec/result_set_spec.rb
|
204
206
|
- spec/spec_helper.rb
|
207
|
+
- spec/sum_query_spec.rb
|
205
208
|
- spec/through_query_spec.rb
|
206
209
|
has_rdoc:
|