active_reporter 0.6.1 → 0.6.5

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +9 -9
  3. data/lib/active_reporter/aggregator/array.rb +1 -1
  4. data/lib/active_reporter/aggregator/count.rb +2 -2
  5. data/lib/active_reporter/aggregator/count_if.rb +2 -2
  6. data/lib/active_reporter/aggregator/ratio.rb +1 -1
  7. data/lib/active_reporter/aggregator.rb +9 -9
  8. data/lib/active_reporter/calculator.rb +2 -2
  9. data/lib/active_reporter/dimension/base.rb +3 -3
  10. data/lib/active_reporter/dimension/bin/set.rb +3 -3
  11. data/lib/active_reporter/dimension/bin/table.rb +1 -1
  12. data/lib/active_reporter/dimension/bin.rb +23 -15
  13. data/lib/active_reporter/dimension/category.rb +1 -1
  14. data/lib/active_reporter/dimension/enum.rb +1 -1
  15. data/lib/active_reporter/dimension/number.rb +3 -3
  16. data/lib/active_reporter/dimension/time.rb +4 -4
  17. data/lib/active_reporter/dimension.rb +8 -8
  18. data/lib/active_reporter/evaluator.rb +2 -2
  19. data/lib/active_reporter/inflector.rb +1 -1
  20. data/lib/active_reporter/report/aggregation.rb +12 -12
  21. data/lib/active_reporter/report/definition.rb +6 -6
  22. data/lib/active_reporter/report/validation.rb +26 -15
  23. data/lib/active_reporter/report.rb +3 -3
  24. data/lib/active_reporter/serializer/base.rb +6 -6
  25. data/lib/active_reporter/serializer/csv.rb +2 -2
  26. data/lib/active_reporter/serializer/form_field.rb +5 -5
  27. data/lib/active_reporter/serializer/highcharts.rb +6 -6
  28. data/lib/active_reporter/serializer.rb +7 -7
  29. data/lib/active_reporter/tracker/base.rb +1 -1
  30. data/lib/active_reporter/tracker.rb +3 -3
  31. data/lib/active_reporter/version.rb +1 -1
  32. data/lib/active_reporter.rb +7 -3
  33. data/spec/acceptance/data_spec.rb +49 -49
  34. data/spec/active_reporter/aggregator_spec.rb +37 -37
  35. data/spec/active_reporter/dimension/base_spec.rb +29 -29
  36. data/spec/active_reporter/dimension/bin/set_spec.rb +29 -29
  37. data/spec/active_reporter/dimension/bin/table_spec.rb +7 -7
  38. data/spec/active_reporter/dimension/bin_spec.rb +12 -12
  39. data/spec/active_reporter/dimension/category_spec.rb +22 -22
  40. data/spec/active_reporter/dimension/enum_spec.rb +12 -12
  41. data/spec/active_reporter/dimension/number_spec.rb +11 -11
  42. data/spec/active_reporter/dimension/time_spec.rb +20 -20
  43. data/spec/active_reporter/report_spec.rb +162 -162
  44. data/spec/active_reporter/serializer/hash_table_spec.rb +13 -13
  45. data/spec/active_reporter/serializer/highcharts_spec.rb +30 -30
  46. data/spec/active_reporter/serializer/table_spec.rb +22 -22
  47. data/spec/dummy/Rakefile +1 -1
  48. data/spec/dummy/app/models/post_report.rb +1 -1
  49. data/spec/dummy/app/views/layouts/application.html.erb +2 -2
  50. data/spec/dummy/app/views/site/report.html.erb +5 -5
  51. data/spec/dummy/bin/bundle +2 -2
  52. data/spec/dummy/bin/rails +3 -3
  53. data/spec/dummy/bin/rake +2 -2
  54. data/spec/dummy/bin/setup +2 -2
  55. data/spec/dummy/config/application.rb +4 -4
  56. data/spec/dummy/config/boot.rb +3 -3
  57. data/spec/dummy/config/database.yml +3 -3
  58. data/spec/dummy/config/environment.rb +1 -1
  59. data/spec/dummy/config/environments/production.rb +4 -4
  60. data/spec/dummy/config/environments/test.rb +1 -1
  61. data/spec/dummy/config/initializers/assets.rb +1 -1
  62. data/spec/dummy/config/initializers/inflections.rb +4 -4
  63. data/spec/dummy/config/initializers/session_store.rb +1 -1
  64. data/spec/dummy/config/locales/en.yml +2 -2
  65. data/spec/dummy/config/routes.rb +9 -9
  66. data/spec/dummy/config.ru +1 -1
  67. data/spec/dummy/log/test.log +54769 -77257
  68. data/spec/spec_helper.rb +13 -13
  69. metadata +64 -44
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ActiveReporter::Dimension::Base do
4
4
  def new_dimension(dimension_params = {}, report_params = {}, opts = {})
@@ -10,18 +10,18 @@ describe ActiveReporter::Dimension::Base do
10
10
  )
11
11
  end
12
12
 
13
- describe '#filter_values' do
14
- it 'accepts one' do
15
- dimension = new_dimension(only: 'bar')
13
+ describe "#filter_values" do
14
+ it "accepts one" do
15
+ dimension = new_dimension(only: "bar")
16
16
  expect(dimension.filter_values).to eq %w(bar)
17
17
  end
18
18
 
19
- it 'accepts many' do
19
+ it "accepts many" do
20
20
  dimension = new_dimension(only: %w(bar baz))
21
21
  expect(dimension.filter_values).to eq %w(bar baz)
22
22
  end
23
23
 
24
- it 'determines #filtering?' do
24
+ it "determines #filtering?" do
25
25
  dimension = new_dimension(only: %w(bar baz))
26
26
  expect(dimension).to be_filtering
27
27
 
@@ -30,42 +30,42 @@ describe ActiveReporter::Dimension::Base do
30
30
  end
31
31
  end
32
32
 
33
- describe '#sort_order' do
34
- it 'can be desc/asc, falls back to root, defaults to asc' do
33
+ describe "#sort_order" do
34
+ it "can be desc/asc, falls back to root, defaults to asc" do
35
35
  dimension = new_dimension
36
- expect(dimension.sort_order).to eq 'ASC'
36
+ expect(dimension.sort_order).to eq "ASC"
37
37
 
38
38
  dimension = new_dimension(sort_desc: true)
39
- expect(dimension.sort_order).to eq 'DESC'
39
+ expect(dimension.sort_order).to eq "DESC"
40
40
 
41
41
  dimension = new_dimension(sort_desc: false)
42
- expect(dimension.sort_order).to eq 'ASC'
42
+ expect(dimension.sort_order).to eq "ASC"
43
43
 
44
44
  dimension = new_dimension({}, sort_desc: true)
45
- expect(dimension.sort_order).to eq 'DESC'
45
+ expect(dimension.sort_order).to eq "DESC"
46
46
 
47
47
  dimension = new_dimension({}, sort_desc: false)
48
- expect(dimension.sort_order).to eq 'ASC'
48
+ expect(dimension.sort_order).to eq "ASC"
49
49
  end
50
50
  end
51
51
 
52
- describe '#null_order' do
53
- it 'can be first/last, falls back to root, defaults to first (only if postgres)' do
52
+ describe "#null_order" do
53
+ it "can be first/last, falls back to root, defaults to first (only if postgres)" do
54
54
  if ActiveReporter.database_type == :postgres
55
55
  dimension = new_dimension
56
- expect(dimension.null_order).to eq 'NULLS FIRST'
56
+ expect(dimension.null_order).to eq "NULLS FIRST"
57
57
 
58
58
  dimension = new_dimension(nulls_last: true)
59
- expect(dimension.null_order).to eq 'NULLS LAST'
59
+ expect(dimension.null_order).to eq "NULLS LAST"
60
60
 
61
61
  dimension = new_dimension(nulls_last: false)
62
- expect(dimension.null_order).to eq 'NULLS FIRST'
62
+ expect(dimension.null_order).to eq "NULLS FIRST"
63
63
 
64
64
  dimension = new_dimension({}, nulls_last: true)
65
- expect(dimension.null_order).to eq 'NULLS LAST'
65
+ expect(dimension.null_order).to eq "NULLS LAST"
66
66
 
67
67
  dimension = new_dimension({}, nulls_last: false)
68
- expect(dimension.null_order).to eq 'NULLS FIRST'
68
+ expect(dimension.null_order).to eq "NULLS FIRST"
69
69
  else
70
70
  dimension = new_dimension
71
71
  expect(dimension.null_order).to be_blank
@@ -73,30 +73,30 @@ describe ActiveReporter::Dimension::Base do
73
73
  end
74
74
  end
75
75
 
76
- describe '#relate' do
77
- it 'defaults to the identity function' do
76
+ describe "#relate" do
77
+ it "defaults to the identity function" do
78
78
  dimension = new_dimension
79
79
  expect(dimension.relate(5)).to eq 5
80
80
  end
81
81
 
82
- it 'can be overridden, e.g. for joins' do
82
+ it "can be overridden, e.g. for joins" do
83
83
  dimension = new_dimension({}, {}, relation: ->(r) { r + 5 })
84
84
  expect(dimension.relate(5)).to eq 10
85
85
  end
86
86
  end
87
87
 
88
- describe '#expression' do
89
- it 'defaults to treating name as a column of the report klass table' do
88
+ describe "#expression" do
89
+ it "defaults to treating name as a column of the report klass table" do
90
90
  dimension = ActiveReporter::Dimension::Base.new(
91
91
  :bar,
92
- OpenStruct.new(table_name: 'foo')
92
+ OpenStruct.new(table_name: "foo")
93
93
  )
94
- expect(dimension.expression).to eq('foo.bar')
94
+ expect(dimension.expression).to eq("foo.bar")
95
95
  end
96
96
 
97
- it 'can be overridden' do
97
+ it "can be overridden" do
98
98
  dimension = new_dimension({}, {}, table_name: :baz, attribute: :bat)
99
- expect(dimension.expression).to eq 'baz.bat'
99
+ expect(dimension.expression).to eq "baz.bat"
100
100
  end
101
101
  end
102
102
  end
@@ -1,8 +1,8 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ActiveReporter::Dimension::Bin::Set do
4
- describe '.from_hash' do
5
- it 'builds a bin from a hash or nil' do
4
+ describe ".from_hash" do
5
+ it "builds a bin from a hash or nil" do
6
6
  bin = described_class.from_hash(min: 1, max: 2)
7
7
  expect(bin.min).to eq 1
8
8
  expect(bin.max).to eq 2
@@ -13,19 +13,19 @@ describe ActiveReporter::Dimension::Bin::Set do
13
13
  end
14
14
  end
15
15
 
16
- describe '.from_sql' do
17
- it 'builds a bin from a bin text string' do
16
+ describe ".from_sql" do
17
+ it "builds a bin from a bin text string" do
18
18
  bin = described_class.from_sql("1,2")
19
- expect(bin.min).to eq '1'
20
- expect(bin.max).to eq '2'
19
+ expect(bin.min).to eq "1"
20
+ expect(bin.max).to eq "2"
21
21
 
22
22
  bin = described_class.from_sql("1,")
23
- expect(bin.min).to eq '1'
23
+ expect(bin.min).to eq "1"
24
24
  expect(bin.max).to eq nil
25
25
 
26
26
  bin = described_class.from_sql(",2")
27
27
  expect(bin.min).to eq nil
28
- expect(bin.max).to eq '2'
28
+ expect(bin.max).to eq "2"
29
29
 
30
30
  bin = described_class.from_sql(",")
31
31
  expect(bin.min).to eq nil
@@ -33,51 +33,51 @@ describe ActiveReporter::Dimension::Bin::Set do
33
33
  end
34
34
  end
35
35
 
36
- describe '#contains_sql' do
37
- it 'returns SQL checking if expr is in the bin' do
36
+ describe "#contains_sql" do
37
+ it "returns SQL checking if expr is in the bin" do
38
38
  bin = described_class.new(1, 2)
39
- expect(bin.contains_sql('foo')).to eq "(foo >= 1 AND foo < 2)"
39
+ expect(bin.contains_sql("foo")).to eq "(foo >= 1 AND foo < 2)"
40
40
 
41
41
  bin = described_class.new(1, nil)
42
- expect(bin.contains_sql('foo')).to eq "foo >= 1"
42
+ expect(bin.contains_sql("foo")).to eq "foo >= 1"
43
43
 
44
44
  bin = described_class.new(nil, 2)
45
- expect(bin.contains_sql('foo')).to eq "foo < 2"
45
+ expect(bin.contains_sql("foo")).to eq "foo < 2"
46
46
 
47
47
  bin = described_class.new(nil, nil)
48
- expect(bin.contains_sql('foo')).to eq "foo IS NULL"
48
+ expect(bin.contains_sql("foo")).to eq "foo IS NULL"
49
49
  end
50
50
  end
51
51
 
52
- describe '#to_json' do
53
- it 'reexpresses the bin as a hash' do
52
+ describe "#to_json" do
53
+ it "reexpresses the bin as a hash" do
54
54
  bin = described_class.new(1, 2)
55
55
  json = { a: bin }.to_json
56
- expect(JSON.parse(json)).to eq('a' => { 'min' => 1, 'max' => 2 })
56
+ expect(JSON.parse(json)).to eq("a" => { "min" => 1, "max" => 2 })
57
57
  end
58
58
  end
59
59
 
60
- describe 'hashing' do
61
- it 'works with hashes' do
60
+ describe "hashing" do
61
+ it "works with hashes" do
62
62
  bin1 = described_class.new(1, 2)
63
63
  bin2 = described_class.new(1, 2)
64
64
  bin3 = { min: 1, max: 2 }
65
65
 
66
- h = { bin3 => 'foo' }
67
- expect(h[bin1]).to eq 'foo'
68
- expect(h[bin2]).to eq 'foo'
69
- expect(h[bin3]).to eq 'foo'
66
+ h = { bin3 => "foo" }
67
+ expect(h[bin1]).to eq "foo"
68
+ expect(h[bin2]).to eq "foo"
69
+ expect(h[bin3]).to eq "foo"
70
70
  end
71
71
 
72
- it 'works with nil' do
72
+ it "works with nil" do
73
73
  bin1 = described_class.new(nil, nil)
74
74
  bin2 = described_class.new(nil, nil)
75
75
  bin3 = nil
76
76
 
77
- h = { bin3 => 'foo' }
78
- expect(h[bin1]).to eq 'foo'
79
- expect(h[bin2]).to eq 'foo'
80
- expect(h[bin3]).to eq 'foo'
77
+ h = { bin3 => "foo" }
78
+ expect(h[bin1]).to eq "foo"
79
+ expect(h[bin2]).to eq "foo"
80
+ expect(h[bin3]).to eq "foo"
81
81
  end
82
82
  end
83
83
  end
@@ -1,10 +1,10 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ActiveReporter::Dimension::Bin::Table do
4
4
  let(:bin_set) { ActiveReporter::Dimension::Bin::Set }
5
5
 
6
- describe '#filter' do
7
- it 'ORs together predicates across bins' do
6
+ describe "#filter" do
7
+ it "ORs together predicates across bins" do
8
8
  table = described_class.new([
9
9
  bin_set.new(nil, nil),
10
10
  bin_set.new(0, nil),
@@ -12,14 +12,14 @@ describe ActiveReporter::Dimension::Bin::Table do
12
12
  bin_set.new(3, 5)
13
13
  ])
14
14
 
15
- sql = table.filter(Post, 'x').to_sql
15
+ sql = table.filter(Post, "x").to_sql
16
16
 
17
17
  expect(sql).to include "WHERE (x IS NULL OR x >= 0 OR x < 10 OR (x >= 3 AND x < 5))"
18
18
  end
19
19
  end
20
20
 
21
- describe '#group' do
22
- it 'joins to a union of bin rows, then groups by the range' do
21
+ describe "#group" do
22
+ it "joins to a union of bin rows, then groups by the range" do
23
23
  table = described_class.new([
24
24
  bin_set.new(nil, nil),
25
25
  bin_set.new(0, nil),
@@ -27,7 +27,7 @@ describe ActiveReporter::Dimension::Bin::Table do
27
27
  bin_set.new(3, 5)
28
28
  ])
29
29
 
30
- sql = table.group(Post, 'likes', 'likes').to_sql
30
+ sql = table.group(Post, "likes", "likes").to_sql
31
31
 
32
32
  expect(sql).to start_with "SELECT likes_bin_table.bin_text AS likes"
33
33
 
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ActiveReporter::Dimension::Bin do
4
4
  def new_dimension(dimension_params = {}, report_params = {}, opts = {})
@@ -13,23 +13,23 @@ describe ActiveReporter::Dimension::Bin do
13
13
  expect { yield }.to raise_error(ActiveReporter::InvalidParamsError)
14
14
  end
15
15
 
16
- describe 'param validation' do
17
- it 'yells unless :bin_count is numeric' do
18
- expect_error { new_dimension(bin_count: 'hey') }
16
+ describe "param validation" do
17
+ it "yells unless :bin_count is numeric" do
18
+ expect_error { new_dimension(bin_count: "hey") }
19
19
  expect_error { new_dimension(bin_count: nil) }
20
20
  new_dimension(bin_count: 5)
21
21
  new_dimension(bin_count: 1.24)
22
22
  end
23
23
  end
24
24
 
25
- describe '#min/max' do
26
- it 'finds the extremes in filter_values' do
25
+ describe "#min/max" do
26
+ it "finds the extremes in filter_values" do
27
27
  dimension = new_dimension(only: [{ min: 1, max: 3 }, { min: -3 }, { min: 17, max: 40 }])
28
28
  expect(dimension.min).to eq -3
29
29
  expect(dimension.max).to eq 40
30
30
  end
31
31
 
32
- it 'falls back to the smallest value in the data' do
32
+ it "falls back to the smallest value in the data" do
33
33
  dimension = ActiveReporter::Dimension::Bin.new(:likes,
34
34
  OpenStruct.new(records: Post, params: {}),
35
35
  model: :post, attribute: :likes
@@ -44,8 +44,8 @@ describe ActiveReporter::Dimension::Bin do
44
44
  end
45
45
  end
46
46
 
47
- describe '#group_values' do
48
- it 'defaults to dividing the domain into bins of bin_width' do
47
+ describe "#group_values" do
48
+ it "defaults to dividing the domain into bins of bin_width" do
49
49
  dimension = new_dimension(only: { min: 0, max: 3 })
50
50
  allow(dimension).to receive(:bin_width).and_return(1)
51
51
  allow(dimension).to receive(:data_contains_nil?).and_return(false)
@@ -56,10 +56,10 @@ describe ActiveReporter::Dimension::Bin do
56
56
  ]
57
57
  end
58
58
 
59
- it 'is inclusive of max if data-driven' do
59
+ it "is inclusive of max if data-driven" do
60
60
  dimension = new_dimension(only: { min: 0 })
61
61
  allow(dimension.report).to receive(:records).and_return(Post)
62
- allow(dimension).to receive(:expression).and_return('posts.likes')
62
+ allow(dimension).to receive(:expression).and_return("posts.likes")
63
63
  allow(dimension).to receive(:bin_width).and_return(1)
64
64
  create(:post, likes: 2)
65
65
  expect(dimension.group_values).to eq [
@@ -69,7 +69,7 @@ describe ActiveReporter::Dimension::Bin do
69
69
  ]
70
70
  end
71
71
 
72
- it 'can be customized' do
72
+ it "can be customized" do
73
73
  dimension = new_dimension(bins: { min: 0, max: 1 })
74
74
  expect(dimension.group_values).to eq [{ min: 0, max: 1 }]
75
75
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ActiveReporter::Dimension::Category do
4
4
  def author_dimension(report)
@@ -6,53 +6,53 @@ describe ActiveReporter::Dimension::Category do
6
6
  "LEFT OUTER JOIN authors ON authors.id = posts.author_id") })
7
7
  end
8
8
 
9
- describe '#filter' do
10
- it 'filters to rows matching at least one value' do
11
- p1 = create(:post, author: 'Alice')
12
- p2 = create(:post, author: 'Bob')
9
+ describe "#filter" do
10
+ it "filters to rows matching at least one value" do
11
+ p1 = create(:post, author: "Alice")
12
+ p2 = create(:post, author: "Bob")
13
13
  p3 = create(:post, author: nil)
14
14
 
15
15
  def filter_by(author_values)
16
16
  report = OpenStruct.new(
17
- table_name: 'posts',
17
+ table_name: "posts",
18
18
  params: { dimensions: { author: { only: author_values } } }
19
19
  )
20
20
  dimension = author_dimension(report)
21
21
  dimension.filter(dimension.relate(Post))
22
22
  end
23
23
 
24
- expect(filter_by(['Alice'])).to eq [p1]
24
+ expect(filter_by(["Alice"])).to eq [p1]
25
25
  expect(filter_by([nil])).to eq [p3]
26
- expect(filter_by(['Alice', nil])).to eq [p1, p3]
27
- expect(filter_by(['Alice', 'Bob'])).to eq [p1, p2]
26
+ expect(filter_by(["Alice", nil])).to eq [p1, p3]
27
+ expect(filter_by(["Alice", "Bob"])).to eq [p1, p2]
28
28
  expect(filter_by([])).to eq []
29
29
  end
30
30
  end
31
31
 
32
- describe '#group' do
33
- it 'groups the relation by the exact value of the SQL expression' do
34
- p1 = create(:post, author: 'Alice')
35
- p2 = create(:post, author: 'Alice')
32
+ describe "#group" do
33
+ it "groups the relation by the exact value of the SQL expression" do
34
+ p1 = create(:post, author: "Alice")
35
+ p2 = create(:post, author: "Alice")
36
36
  p3 = create(:post, author: nil)
37
- p4 = create(:post, author: 'Bob')
38
- p5 = create(:post, author: 'Bob')
39
- p6 = create(:post, author: 'Bob')
37
+ p4 = create(:post, author: "Bob")
38
+ p5 = create(:post, author: "Bob")
39
+ p6 = create(:post, author: "Bob")
40
40
 
41
- report = OpenStruct.new(table_name: 'posts', params: {})
41
+ report = OpenStruct.new(table_name: "posts", params: {})
42
42
  dimension = author_dimension(report)
43
43
 
44
44
  results = dimension.group(dimension.relate(Post)).select("COUNT(*) AS count").map do |r|
45
- r.attributes.values_at(dimension.send(:sql_value_name), 'count')
45
+ r.attributes.values_at(dimension.send(:sql_value_name), "count")
46
46
  end
47
47
 
48
- expect(results).to eq [[nil, 1], ['Alice', 2], ['Bob', 3]]
48
+ expect(results).to eq [[nil, 1], ["Alice", 2], ["Bob", 3]]
49
49
  end
50
50
  end
51
51
 
52
- describe '#group_values' do
53
- it 'echoes filter_values if filtering' do
52
+ describe "#group_values" do
53
+ it "echoes filter_values if filtering" do
54
54
  dimension = author_dimension(OpenStruct.new(params: {
55
- dimensions: { author: { only: ['foo', 'bar'] } }
55
+ dimensions: { author: { only: ["foo", "bar"] } }
56
56
  }))
57
57
  expect(dimension.group_values).to eq %w(foo bar)
58
58
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ActiveReporter::Dimension::Enum do
4
4
  let(:report_model) { :post }
@@ -7,12 +7,12 @@ describe ActiveReporter::Dimension::Enum do
7
7
  let(:report) { OpenStruct.new(params: { dimensions: { status: status_dimension_options } }, groupers: [:status, :category], raw_data: raw_data) }
8
8
 
9
9
  let(:raw_data) { {
10
- ['published', 'post_count'] => 5, ['published', 'post_total'] => 500.00, ['published', 'post_average'] => 100.00,
11
- ['archived', 'post_count'] => 7, ['archived', 'post_total'] => 530.25, ['archived', 'post_average'] => 75.75,
10
+ ["published", "post_count"] => 5, ["published", "post_total"] => 500.00, ["published", "post_average"] => 100.00,
11
+ ["archived", "post_count"] => 7, ["archived", "post_total"] => 530.25, ["archived", "post_average"] => 75.75,
12
12
  } }
13
13
 
14
- let(:enum_values) { { 'draft' => 0, 'unpublished' => 1, 'published' => 2, 'archived' => 3 } }
15
- let(:group_values) { ['published', 'archived'] }
14
+ let(:enum_values) { { "draft" => 0, "unpublished" => 1, "published" => 2, "archived" => 3 } }
15
+ let(:group_values) { ["published", "archived"] }
16
16
  let(:all_values) { enum_values.keys.unshift(nil) }
17
17
 
18
18
  let(:status_dimension) do
@@ -23,24 +23,24 @@ describe ActiveReporter::Dimension::Enum do
23
23
  dimension
24
24
  end
25
25
 
26
- describe '#group_values' do
27
- context 'when filtering' do
28
- let(:filter_values) { ['unpublished', 'published', 'archived'] }
26
+ describe "#group_values" do
27
+ context "when filtering" do
28
+ let(:filter_values) { ["unpublished", "published", "archived"] }
29
29
 
30
- it 'returns filter_values' do
30
+ it "returns filter_values" do
31
31
  expect(status_dimension).to be_filtering
32
32
  expect(status_dimension.group_values).to eq filter_values
33
33
  end
34
34
  end
35
35
 
36
- it 'returns group enum values' do
36
+ it "returns group enum values" do
37
37
  expect(status_dimension).not_to be_filtering
38
38
  expect(status_dimension.group_values).to match group_values
39
39
  end
40
40
  end
41
41
 
42
- describe '#all_values' do
43
- it 'returns model enum values' do
42
+ describe "#all_values" do
43
+ it "returns model enum values" do
44
44
  expect(status_dimension.all_values).to match all_values
45
45
  end
46
46
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ActiveReporter::Dimension::Number do
4
4
  def new_dimension(dimension_params = {}, report_params = {}, opts = {})
@@ -14,23 +14,23 @@ describe ActiveReporter::Dimension::Number do
14
14
  expect { yield }.to raise_error(ActiveReporter::InvalidParamsError)
15
15
  end
16
16
 
17
- describe 'param validation' do
18
- it 'yells unless :bin_width is numeric' do
19
- expect_error { new_dimension(bin_width: '') }
20
- expect_error { new_dimension(bin_width: '49er') }
17
+ describe "param validation" do
18
+ it "yells unless :bin_width is numeric" do
19
+ expect_error { new_dimension(bin_width: "") }
20
+ expect_error { new_dimension(bin_width: "49er") }
21
21
  expect_error { new_dimension(bin_width: { seconds: 1 }) }
22
22
  expect(new_dimension(bin_width: 10.5).bin_width).to eq 10.5
23
- expect(new_dimension(bin_width: '10').bin_width).to eq 10.0
23
+ expect(new_dimension(bin_width: "10").bin_width).to eq 10.0
24
24
  end
25
25
  end
26
26
 
27
- describe '#bin_width' do
28
- it 'reads from params' do
27
+ describe "#bin_width" do
28
+ it "reads from params" do
29
29
  dimension = new_dimension(bin_width: 7)
30
30
  expect(dimension.bin_width).to eq 7
31
31
  end
32
32
 
33
- it 'can divide the domain into :bin_count bins' do
33
+ it "can divide the domain into :bin_count bins" do
34
34
  dimension = new_dimension(bin_count: 5, only: { min: 0, max: 5 })
35
35
  expect(dimension.bin_width).to eq 1
36
36
  allow(dimension).to receive(:data_contains_nil?).and_return(false)
@@ -43,7 +43,7 @@ describe ActiveReporter::Dimension::Number do
43
43
  ]
44
44
  end
45
45
 
46
- it 'can include nils if they are present in the data' do
46
+ it "can include nils if they are present in the data" do
47
47
  dimension = new_dimension(bin_count: 3, only: { min: 0, max: 3 })
48
48
  allow(dimension).to receive(:data_contains_nil?).and_return(true)
49
49
  expect(dimension.group_values).to eq [
@@ -63,7 +63,7 @@ describe ActiveReporter::Dimension::Number do
63
63
  ]
64
64
  end
65
65
 
66
- it 'defaults to 10 equal bins' do
66
+ it "defaults to 10 equal bins" do
67
67
  dimension = new_dimension(only: { min: 0, max: 5 })
68
68
  expect(dimension.bin_width).to eq 0.5
69
69
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ActiveReporter::Dimension::Time do
4
4
  def new_dimension(dimension_params = {}, report_params = {}, opts = {})
@@ -14,47 +14,47 @@ describe ActiveReporter::Dimension::Time do
14
14
  expect { yield }.to raise_error(ActiveReporter::InvalidParamsError)
15
15
  end
16
16
 
17
- describe 'param validation' do
18
- it 'yells unless :bin_width is a duration hash' do
19
- expect_error { new_dimension(bin_width: '') }
17
+ describe "param validation" do
18
+ it "yells unless :bin_width is a duration hash" do
19
+ expect_error { new_dimension(bin_width: "") }
20
20
  expect_error { new_dimension(bin_width: 5) }
21
- expect_error { new_dimension(bin_width: { seconds: 'hey' }) }
21
+ expect_error { new_dimension(bin_width: { seconds: "hey" }) }
22
22
  expect_error { new_dimension(bin_width: { seconds: 1, chickens: 0 }) }
23
23
  new_dimension(bin_width: { seconds: 1, minutes: 2 })
24
24
  new_dimension(bin_width: { weeks: 12, years: 7 })
25
25
  end
26
26
 
27
- it 'yells unless :bins and :only values are times' do
28
- expect_error { new_dimension(bins: { min: 'hey' }) }
29
- expect_error { new_dimension(only: { min: 'hey' }) }
30
- expect_error { new_dimension(only: [{ min: '2015-01-01', max: '2015-01-10' }, { min: 'chicken' }]) }
31
- new_dimension(bins: { min: '2015-01-01', max: '2015-01-10' })
32
- new_dimension(only: { min: '2015-01-01', max: '2015-01-10' })
33
- new_dimension(only: [nil, { min: '2015-01-01', max: '2015-01-10' }, { max: '2015-02-10' }])
27
+ it "yells unless :bins and :only values are times" do
28
+ expect_error { new_dimension(bins: { min: "hey" }) }
29
+ expect_error { new_dimension(only: { min: "hey" }) }
30
+ expect_error { new_dimension(only: [{ min: "2015-01-01", max: "2015-01-10" }, { min: "chicken" }]) }
31
+ new_dimension(bins: { min: "2015-01-01", max: "2015-01-10" })
32
+ new_dimension(only: { min: "2015-01-01", max: "2015-01-10" })
33
+ new_dimension(only: [nil, { min: "2015-01-01", max: "2015-01-10" }, { max: "2015-02-10" }])
34
34
  end
35
35
  end
36
36
 
37
- describe '#bin_width' do
38
- it 'can translate a duration hash into an ActiveSupport::Duration' do
37
+ describe "#bin_width" do
38
+ it "can translate a duration hash into an ActiveSupport::Duration" do
39
39
  dimension = new_dimension(bin_width: { seconds: 10, minutes: 1 })
40
40
  expect(dimension.bin_width).to eq 70.seconds
41
41
  dimension = new_dimension(bin_width: { days: 8, weeks: 1 })
42
42
  expect(dimension.bin_width).to eq 15.days
43
43
  end
44
44
 
45
- it 'can divide the domain into :bin_count bins' do
46
- dimension = new_dimension(bin_count: 10, only: [{ min: '2015-01-01' }, { max: '2015-01-11' }])
45
+ it "can divide the domain into :bin_count bins" do
46
+ dimension = new_dimension(bin_count: 10, only: [{ min: "2015-01-01" }, { max: "2015-01-11" }])
47
47
  allow(dimension).to receive(:data_contains_nil?).and_return(false)
48
48
  expect(dimension.bin_width).to eq 1.day
49
49
  expect(dimension.group_values.map(&:min).map(&:day)).to eq (1..10).to_a
50
50
  end
51
51
 
52
- it 'defaults to a sensical, standard duration' do
53
- dimension = new_dimension(only: [{ min: '2015-01-01' }, { max: '2015-01-02' }])
52
+ it "defaults to a sensical, standard duration" do
53
+ dimension = new_dimension(only: [{ min: "2015-01-01" }, { max: "2015-01-02" }])
54
54
  expect(dimension.bin_width).to eq 1.hour
55
- dimension = new_dimension(only: [{ min: '2015-01-01' }, { max: '2015-01-11' }])
55
+ dimension = new_dimension(only: [{ min: "2015-01-01" }, { max: "2015-01-11" }])
56
56
  expect(dimension.bin_width).to eq 1.day
57
- dimension = new_dimension(only: [{ min: '2015-01-01' }, { max: '2015-02-11' }])
57
+ dimension = new_dimension(only: [{ min: "2015-01-01" }, { max: "2015-02-11" }])
58
58
  expect(dimension.bin_width).to eq 1.week
59
59
  end
60
60
  end