Commit a2bf5d5e6dcec0a9032023600a19546b76cab6ed

Authored by Andrew Kane
2 parents 5f8bb0ad 574acf88

Merge branch 'hqm42-fix_multiple_group_by_x_of_y'

Showing 2 changed files with 35 additions and 9 deletions   Show diff stats
lib/groupdate/magic.rb
... ... @@ -212,20 +212,23 @@ module Groupdate
212 212 series << next_step
213 213 end
214 214  
215   - if multiple_groups
216   - keys = count.keys.map { |k| k[0...@group_index] + k[(@group_index + 1)..-1] }.uniq
217   - series = series.reverse if reverse
218   - keys.flat_map do |k|
219   - series.map { |s| k[0...@group_index] + [s] + k[@group_index..-1] }
220   - end
221   - else
222   - series
223   - end
  215 + series
224 216 else
225 217 []
226 218 end
227 219 end
228 220  
  221 + series =
  222 + if multiple_groups
  223 + keys = count.keys.map { |k| k[0...@group_index] + k[(@group_index + 1)..-1] }.uniq
  224 + series = series.reverse if reverse
  225 + keys.flat_map do |k|
  226 + series.map { |s| k[0...@group_index] + [s] + k[@group_index..-1] }
  227 + end
  228 + else
  229 + series
  230 + end
  231 +
229 232 # reversed above if multiple groups
230 233 if !multiple_groups && reverse
231 234 series = series.to_a.reverse
... ...
test/test_helper.rb
... ... @@ -636,6 +636,29 @@ module TestGroupdate
636 636 assert_equal expected, User.group_by_day(:created_at).group(:score).order(:score).count
637 637 end
638 638  
  639 + def test_group_day_of_week
  640 + create_user "2013-05-01 00:00:00 UTC", 1
  641 + create_user "2013-05-02 00:00:00 UTC", 2
  642 + create_user "2013-05-03 00:00:00 UTC", 2
  643 + expected = {
  644 + [1, 0] => 0,
  645 + [1, 1] => 0,
  646 + [1, 2] => 0,
  647 + [1, 3] => 1,
  648 + [1, 4] => 0,
  649 + [1, 5] => 0,
  650 + [1, 6] => 0,
  651 + [2, 0] => 0,
  652 + [2, 1] => 0,
  653 + [2, 2] => 0,
  654 + [2, 3] => 0,
  655 + [2, 4] => 1,
  656 + [2, 5] => 1,
  657 + [2, 6] => 0
  658 + }
  659 + assert_equal expected, User.group(:score).group_by_day_of_week(:created_at).count
  660 + end
  661 +
639 662 def test_groupdate_multiple
640 663 create_user "2013-05-01 00:00:00 UTC", 1
641 664 expected = {
... ...