Commit c9834472f09fb40ddba9402565ccedfb1925282b
1 parent
9df6106d
Exists in
master
and in
4 other branches
Better date range handling for range option - #149
Showing
3 changed files
with
35 additions
and
1 deletions
Show diff stats
CHANGELOG.md
lib/groupdate/magic.rb
... | ... | @@ -174,7 +174,12 @@ module Groupdate |
174 | 174 | def time_range |
175 | 175 | @time_range ||= begin |
176 | 176 | time_range = options[:range] |
177 | - if !time_range && options[:last] | |
177 | + if time_range.is_a?(Range) && time_range.first.is_a?(Date) | |
178 | + # convert range of dates to range of times | |
179 | + last = time_range.last.in_time_zone(time_zone) | |
180 | + last += 1.day unless time_range.exclude_end? | |
181 | + time_range = Range.new(time_range.first.in_time_zone(time_zone), last, true) | |
182 | + elsif !time_range && options[:last] | |
178 | 183 | step = 1.send(field) if 1.respond_to?(field) |
179 | 184 | if step |
180 | 185 | now = Time.now | ... | ... |
test/test_helper.rb
... | ... | @@ -1059,6 +1059,31 @@ module TestGroupdate |
1059 | 1059 | assert_equal expected, result(:day, "2013-05-03", true, dates: true) |
1060 | 1060 | end |
1061 | 1061 | |
1062 | + # date range | |
1063 | + | |
1064 | + def test_date_range | |
1065 | + ENV["TZ"] = "Europe/Oslo" | |
1066 | + expected = { | |
1067 | + Date.parse("2013-05-01") => 0, | |
1068 | + Date.parse("2013-05-02") => 0, | |
1069 | + Date.parse("2013-05-03") => 0 | |
1070 | + } | |
1071 | + assert_equal expected, User.group_by_day(:created_at, range: Date.parse("2013-05-01")..Date.parse("2013-05-03")).count | |
1072 | + ensure | |
1073 | + ENV["TZ"] = "UTC" | |
1074 | + end | |
1075 | + | |
1076 | + def test_date_range_exclude_end | |
1077 | + ENV["TZ"] = "Europe/Oslo" | |
1078 | + expected = { | |
1079 | + Date.parse("2013-05-01") => 0, | |
1080 | + Date.parse("2013-05-02") => 0 | |
1081 | + } | |
1082 | + assert_equal expected, User.group_by_day(:created_at, range: Date.parse("2013-05-01")...Date.parse("2013-05-03")).count | |
1083 | + ensure | |
1084 | + ENV["TZ"] = "UTC" | |
1085 | + end | |
1086 | + | |
1062 | 1087 | # day start |
1063 | 1088 | |
1064 | 1089 | def test_day_start_decimal_end_of_day | ... | ... |