groupdate 2.5.3 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2e5361eb118741ab6aae412f5463db1813f85fe2
4
- data.tar.gz: 0aa40c54eadeb578914db75567bff930fb0dbef8
3
+ metadata.gz: 1388ce20a1c1a41fdd0fe87d5cda7d28522ad2d2
4
+ data.tar.gz: 62660c4bb7aabbf6e619274038f2335c0dbed0dd
5
5
  SHA512:
6
- metadata.gz: e642a4eb6084d4a1d339a193b549dd34e13298d082f42ecc58b02803c37296e62d8f5df7773a5cfbe4e8ba087ece17b7b52c362219d0cc307ab2210e25a88f4e
7
- data.tar.gz: f55793c8987b1dd1d49ce7dbba35ddaf8033e5a4b627e983b208df5daf296b150afc4816fcd8c425bfaccc1c3842a83af631cb50e5d21b0fa700d36ef563b5e7
6
+ metadata.gz: 471f406dd29530940a51bd7b1547a3a19d8399098a6949d50a94e08be5fefb1e256cd3b996f0f964101541858b4744d85e6e85d1eb2c162e35ffc3fec2eb4df5
7
+ data.tar.gz: d199353fbccd7b4c1aa74609e4c28d187fc19036785c236cd23e4d0559a2c50a380fe3e273fd8a1f324d13b42e9e3b90b9ebc75bea7527a2661083bca1e2f43f
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 3.0.0
2
+
3
+ Breaking changes
4
+
5
+ - `Date` objects are now returned for day, week, month, quarter, and year by default. Use `dates: false` for the previous behavior, or change this globally with `Groupdate.dates = false`.
6
+ - Array and hash methods no longer return the entire series by default. Use `series: true` for the previous behavior.
7
+ - The `series: false` option now returns the correct types and order, and plays nicely with other options.
8
+
1
9
  ## 2.5.3
2
10
 
3
11
  - All tests green with `mysql` gem
data/README.md CHANGED
@@ -7,7 +7,7 @@ The simplest way to group by:
7
7
  - hour of the day
8
8
  - and more (complete list below)
9
9
 
10
- :tada: Time zones supported!! **the best part**
10
+ :tada: Time zones - including daylight saving time - supported!! **the best part**
11
11
 
12
12
  :cake: Get the entire series - **the other best part**
13
13
 
@@ -19,14 +19,16 @@ Supports PostgreSQL and MySQL, plus arrays and hashes
19
19
 
20
20
  :cupid: Goes hand in hand with [Chartkick](http://ankane.github.io/chartkick/)
21
21
 
22
+ **Groupdate 3.0 was just released!** See [instructions for upgrading](#30). If you use Chartkick with Groupdate, we recommend Chartkick 2.0 and above.
23
+
22
24
  ## Get Started
23
25
 
24
26
  ```ruby
25
27
  User.group_by_day(:created_at).count
26
28
  # {
27
- # 2013-04-16 00:00:00 UTC => 50,
28
- # 2013-04-17 00:00:00 UTC => 100,
29
- # 2013-04-18 00:00:00 UTC => 34
29
+ # Sat, 28 May 2016 => 50,
30
+ # Sun, 29 May 2016 => 100,
31
+ # Mon, 30 May 2016 => 34
30
32
  # }
31
33
  ```
32
34
 
@@ -65,9 +67,9 @@ or
65
67
  ```ruby
66
68
  User.group_by_week(:created_at, time_zone: "Pacific Time (US & Canada)").count
67
69
  # {
68
- # 2013-03-10 00:00:00 PST => 70,
69
- # 2013-03-17 00:00:00 PDT => 54,
70
- # 2013-03-24 00:00:00 PDT => 80
70
+ # Sun, 06 Mar 2016 => 70,
71
+ # Sun, 13 Mar 2016 => 54,
72
+ # Sun, 20 Mar 2016 => 80
71
73
  # }
72
74
  ```
73
75
 
@@ -137,24 +139,7 @@ User.group_by_day(:created_at).order("day desc").count
137
139
 
138
140
  ### Keys
139
141
 
140
- Keys are returned as time objects for the start of the period.
141
-
142
- To get keys as date objects instead, use:
143
-
144
- ```ruby
145
- User.group_by_day(:created_at, dates: true).count
146
- # {
147
- # 2013-03-10 => 70,
148
- # 2013-03-17 => 54,
149
- # 2013-03-24 => 80
150
- # }
151
- ```
152
-
153
- or make this the default with:
154
-
155
- ```ruby
156
- Groupdate.dates = true
157
- ```
142
+ Keys are returned as date or time objects for the start of the period.
158
143
 
159
144
  To get keys in a different format, use:
160
145
 
@@ -229,9 +214,19 @@ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
229
214
 
230
215
  or copy and paste [these statements](https://gist.githubusercontent.com/ankane/1d6b0022173186accbf0/raw/time_zone_support.sql) into a SQL console.
231
216
 
232
- ## Upgrading to 2.0
217
+ ## Upgrading
218
+
219
+ ### 3.0
220
+
221
+ Groupdate 3.0 brings a number of improvements. Here are a few to be aware of:
222
+
223
+ - `Date` objects are now returned for day, week, month, quarter, and year by default. Use `dates: false` for the previous behavior, or change this globally with `Groupdate.dates = false`.
224
+ - Array and hash methods no longer return the entire series by default. Use `series: true` for the previous behavior.
225
+ - The `series: false` option now returns the correct type and order, and plays nicely with other options.
226
+
227
+ ### 2.0
233
228
 
234
- Groupdate 2.0 brings a number a great improvements. Here are two things to be aware of:
229
+ Groupdate 2.0 brings a number of improvements. Here are two things to be aware of:
235
230
 
236
231
  - the entire series is returned by default
237
232
  - `ActiveSupport::TimeWithZone` keys are now returned for every database adapter - adapters previously returned `Time` or `String` keys
data/groupdate.gemspec CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.homepage = "https://github.com/ankane/groupdate"
14
14
  spec.license = "MIT"
15
15
 
16
- spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
16
+ spec.files = `git ls-files`.split($/)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
data/lib/groupdate.rb CHANGED
@@ -12,7 +12,7 @@ module Groupdate
12
12
  mattr_accessor :week_start, :day_start, :time_zone, :dates
13
13
  self.week_start = :sun
14
14
  self.day_start = 0
15
- self.dates = false
15
+ self.dates = true
16
16
  end
17
17
 
18
18
  require "groupdate/enumerable"
@@ -26,7 +26,7 @@ module ActiveRecord
26
26
  module Associations
27
27
  class CollectionProxy
28
28
  if ActiveRecord::VERSION::MAJOR == 3
29
- delegate *Groupdate::METHODS, to: :scoped
29
+ delegate(*Groupdate::METHODS, to: :scoped)
30
30
  end
31
31
  end
32
32
  end
@@ -15,11 +15,7 @@ module Groupdate
15
15
 
16
16
  def group_by(enum, &_block)
17
17
  group = enum.group_by { |v| v = yield(v); v ? round_time(v) : nil }
18
- if options[:series] == false
19
- group
20
- else
21
- series(group, [])
22
- end
18
+ series(group, [], false, false, false)
23
19
  end
24
20
 
25
21
  def relation(column, relation)
@@ -90,22 +86,18 @@ module Groupdate
90
86
  end
91
87
 
92
88
  group = relation.group(Groupdate::OrderHack.new(relation.send(:sanitize_sql_array, query), field, time_zone))
93
- if options[:series] == false
94
- group
95
- else
96
- relation =
97
- if time_range.is_a?(Range)
98
- # doesn't matter whether we include the end of a ... range - it will be excluded later
99
- group.where("#{column} >= ? AND #{column} <= ?", time_range.first, time_range.last)
100
- else
101
- group.where("#{column} IS NOT NULL")
102
- end
89
+ relation =
90
+ if time_range.is_a?(Range)
91
+ # doesn't matter whether we include the end of a ... range - it will be excluded later
92
+ group.where("#{column} >= ? AND #{column} <= ?", time_range.first, time_range.last)
93
+ else
94
+ group.where("#{column} IS NOT NULL")
95
+ end
103
96
 
104
- # TODO do not change object state
105
- @group_index = group.group_values.size - 1
97
+ # TODO do not change object state
98
+ @group_index = group.group_values.size - 1
106
99
 
107
- Groupdate::Series.new(self, relation)
108
- end
100
+ Groupdate::Series.new(self, relation)
109
101
  end
110
102
 
111
103
  def perform(relation, method, *args, &block)
@@ -175,7 +167,7 @@ module Groupdate
175
167
  end
176
168
  end
177
169
 
178
- def series(count, default_value, multiple_groups = false, reverse = false)
170
+ def series(count, default_value, multiple_groups = false, reverse = false, series_default = true)
179
171
  reverse = !reverse if options[:reverse]
180
172
 
181
173
  series =
@@ -238,6 +230,7 @@ module Groupdate
238
230
  series = series.to_a.reverse if !multiple_groups && reverse
239
231
 
240
232
  locale = options[:locale] || I18n.locale
233
+ use_dates = options.key?(:dates) ? options[:dates] : Groupdate.dates
241
234
  key_format =
242
235
  if options[:format]
243
236
  if options[:format].respond_to?(:call)
@@ -258,12 +251,17 @@ module Groupdate
258
251
  I18n.localize(key, format: options[:format], locale: locale)
259
252
  end
260
253
  end
261
- elsif (options[:dates] || (Groupdate.dates && !options.key?(:dates))) && [:day, :week, :month, :quarter, :year].include?(field)
254
+ elsif [:day, :week, :month, :quarter, :year].include?(field) && use_dates
262
255
  lambda { |k| k.to_date }
263
256
  else
264
257
  lambda { |k| k }
265
258
  end
266
259
 
260
+ use_series = options.key?(:series) ? options[:series] : series_default
261
+ if use_series == false
262
+ series = series.select { |k| count[k] }
263
+ end
264
+
267
265
  value = 0
268
266
  Hash[series.map do |k|
269
267
  value = count[k] || (@options[:carry_forward] && value) || default_value
@@ -1,3 +1,3 @@
1
1
  module Groupdate
2
- VERSION = "2.5.3"
2
+ VERSION = "3.0.0"
3
3
  end
@@ -8,13 +8,23 @@ class TestEnumerable < Minitest::Test
8
8
  user_a = create_user("2014-01-21")
9
9
  user_b = create_user("2014-03-14")
10
10
  expected = {
11
- utc.parse("2014-01-01") => [user_a],
12
- utc.parse("2014-02-01") => [],
13
- utc.parse("2014-03-01") => [user_b]
11
+ Date.parse("2014-01-01") => [user_a],
12
+ Date.parse("2014-03-01") => [user_b]
14
13
  }
15
14
  assert_equal expected, [user_a, user_b].group_by_month(&:created_at)
16
15
  end
17
16
 
17
+ def test_enumerable_series
18
+ user_a = create_user("2014-01-21")
19
+ user_b = create_user("2014-03-14")
20
+ expected = {
21
+ Date.parse("2014-01-01") => [user_a],
22
+ Date.parse("2014-02-01") => [],
23
+ Date.parse("2014-03-01") => [user_b]
24
+ }
25
+ assert_equal expected, [user_a, user_b].group_by_month(series: true, &:created_at)
26
+ end
27
+
18
28
  def test_no_block
19
29
  assert_raises(ArgumentError) { [].group_by_day(:created_at) }
20
30
  end
@@ -3,4 +3,4 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in searchkick.gemspec
4
4
  gemspec path: "../../"
5
5
 
6
- gem "activerecord", "~> 5.0.0.beta1"
6
+ gem "activerecord", "~> 5.0.0.rc1"
data/test/test_helper.rb CHANGED
@@ -51,11 +51,11 @@ end
51
51
 
52
52
  module TestDatabase
53
53
  def test_zeros_previous_scope
54
- create_user "2013-05-01 00:00:00 UTC"
54
+ create_user "2013-05-01"
55
55
  expected = {
56
- utc.parse("2013-05-01 00:00:00 UTC") => 0
56
+ Date.parse("2013-05-01") => 0
57
57
  }
58
- assert_equal expected, User.where("id = 0").group_by_day(:created_at, range: Time.parse("2013-05-01 00:00:00 UTC")..Time.parse("2013-05-01 23:59:59 UTC")).count
58
+ assert_equal expected, User.where("id = 0").group_by_day(:created_at, range: Date.parse("2013-05-01")..Date.parse("2013-05-01 23:59:59 UTC")).count
59
59
  end
60
60
 
61
61
  def test_order_hour_of_day
@@ -81,51 +81,51 @@ module TestDatabase
81
81
  end
82
82
 
83
83
  def test_previous_scopes
84
- create_user "2013-05-01 00:00:00 UTC"
84
+ create_user "2013-05-01"
85
85
  assert_empty User.where("id = 0").group_by_day(:created_at).count
86
86
  end
87
87
 
88
88
  def test_where_after
89
- create_user "2013-05-01 00:00:00 UTC"
90
- create_user "2013-05-02 00:00:00 UTC"
91
- expected = {utc.parse("2013-05-02 00:00:00 UTC") => 1}
92
- assert_equal expected, User.group_by_day(:created_at).where("created_at > ?", "2013-05-01 00:00:00 UTC").count
89
+ create_user "2013-05-01"
90
+ create_user "2013-05-02"
91
+ expected = {Date.parse("2013-05-02") => 1}
92
+ assert_equal expected, User.group_by_day(:created_at).where("created_at > ?", "2013-05-01").count
93
93
  end
94
94
 
95
95
  def test_group_before
96
- create_user "2013-05-01 00:00:00 UTC", 1
97
- create_user "2013-05-02 00:00:00 UTC", 2
98
- create_user "2013-05-03 00:00:00 UTC", 2
96
+ create_user "2013-05-01", 1
97
+ create_user "2013-05-02", 2
98
+ create_user "2013-05-03", 2
99
99
  expected = {
100
- [1, utc.parse("2013-05-01 00:00:00 UTC")] => 1,
101
- [1, utc.parse("2013-05-02 00:00:00 UTC")] => 0,
102
- [1, utc.parse("2013-05-03 00:00:00 UTC")] => 0,
103
- [2, utc.parse("2013-05-01 00:00:00 UTC")] => 0,
104
- [2, utc.parse("2013-05-02 00:00:00 UTC")] => 1,
105
- [2, utc.parse("2013-05-03 00:00:00 UTC")] => 1
100
+ [1, Date.parse("2013-05-01")] => 1,
101
+ [1, Date.parse("2013-05-02")] => 0,
102
+ [1, Date.parse("2013-05-03")] => 0,
103
+ [2, Date.parse("2013-05-01")] => 0,
104
+ [2, Date.parse("2013-05-02")] => 1,
105
+ [2, Date.parse("2013-05-03")] => 1
106
106
  }
107
107
  assert_equal expected, User.group(:score).group_by_day(:created_at).order(:score).count
108
108
  end
109
109
 
110
110
  def test_group_after
111
- create_user "2013-05-01 00:00:00 UTC", 1
112
- create_user "2013-05-02 00:00:00 UTC", 2
113
- create_user "2013-05-03 00:00:00 UTC", 2
111
+ create_user "2013-05-01", 1
112
+ create_user "2013-05-02", 2
113
+ create_user "2013-05-03", 2
114
114
  expected = {
115
- [utc.parse("2013-05-01 00:00:00 UTC"), 1] => 1,
116
- [utc.parse("2013-05-02 00:00:00 UTC"), 1] => 0,
117
- [utc.parse("2013-05-03 00:00:00 UTC"), 1] => 0,
118
- [utc.parse("2013-05-01 00:00:00 UTC"), 2] => 0,
119
- [utc.parse("2013-05-02 00:00:00 UTC"), 2] => 1,
120
- [utc.parse("2013-05-03 00:00:00 UTC"), 2] => 1
115
+ [Date.parse("2013-05-01"), 1] => 1,
116
+ [Date.parse("2013-05-02"), 1] => 0,
117
+ [Date.parse("2013-05-03"), 1] => 0,
118
+ [Date.parse("2013-05-01"), 2] => 0,
119
+ [Date.parse("2013-05-02"), 2] => 1,
120
+ [Date.parse("2013-05-03"), 2] => 1
121
121
  }
122
122
  assert_equal expected, User.group_by_day(:created_at).group(:score).order(:score).count
123
123
  end
124
124
 
125
125
  def test_group_day_of_week
126
- create_user "2013-05-01 00:00:00 UTC", 1
127
- create_user "2013-05-02 00:00:00 UTC", 2
128
- create_user "2013-05-03 00:00:00 UTC", 2
126
+ create_user "2013-05-01", 1
127
+ create_user "2013-05-02", 2
128
+ create_user "2013-05-03", 2
129
129
  expected = {
130
130
  [1, 0] => 0,
131
131
  [1, 1] => 0,
@@ -146,9 +146,9 @@ module TestDatabase
146
146
  end
147
147
 
148
148
  def test_groupdate_multiple
149
- create_user "2013-05-01 00:00:00 UTC", 1
149
+ create_user "2013-05-01", 1
150
150
  expected = {
151
- [utc.parse("2013-05-01 00:00:00 UTC"), utc.parse("2013-01-01 00:00:00 UTC")] => 1
151
+ [Date.parse("2013-05-01"), Date.parse("2013-01-01")] => 1
152
152
  }
153
153
  assert_equal expected, User.group_by_day(:created_at).group_by_year(:created_at).count
154
154
  end
@@ -165,10 +165,10 @@ module TestDatabase
165
165
  end
166
166
 
167
167
  def test_not_modified
168
- create_user "2013-05-01 00:00:00 UTC"
169
- expected = {utc.parse("2013-05-01 00:00:00 UTC") => 1}
168
+ create_user "2013-05-01"
169
+ expected = {Date.parse("2013-05-01") => 1}
170
170
  relation = User.group_by_day(:created_at)
171
- relation.where("created_at > ?", "2013-05-01 00:00:00 UTC")
171
+ relation.where("created_at > ?", "2013-05-01")
172
172
  assert_equal expected, relation.count
173
173
  end
174
174
 
@@ -185,38 +185,38 @@ module TestDatabase
185
185
  end
186
186
 
187
187
  def test_last
188
- create_user "#{this_year - 3}-01-01 00:00:00 UTC"
189
- create_user "#{this_year - 1}-01-01 00:00:00 UTC"
188
+ create_user "#{this_year - 3}-01-01"
189
+ create_user "#{this_year - 1}-01-01"
190
190
  expected = {
191
- utc.parse("#{this_year - 2}-01-01 00:00:00 UTC") => 0,
192
- utc.parse("#{this_year - 1}-01-01 00:00:00 UTC") => 1,
193
- utc.parse("#{this_year}-01-01 00:00:00 UTC") => 0
191
+ Date.parse("#{this_year - 2}-01-01") => 0,
192
+ Date.parse("#{this_year - 1}-01-01") => 1,
193
+ Date.parse("#{this_year}-01-01") => 0
194
194
  }
195
195
  assert_equal expected, User.group_by_year(:created_at, last: 3).count
196
196
  end
197
197
 
198
198
  def test_current
199
- create_user "#{this_year - 3}-01-01 00:00:00 UTC"
200
- create_user "#{this_year - 1}-01-01 00:00:00 UTC"
199
+ create_user "#{this_year - 3}-01-01"
200
+ create_user "#{this_year - 1}-01-01"
201
201
  expected = {
202
- utc.parse("#{this_year - 2}-01-01 00:00:00 UTC") => 0,
203
- utc.parse("#{this_year - 1}-01-01 00:00:00 UTC") => 1
202
+ Date.parse("#{this_year - 2}-01-01") => 0,
203
+ Date.parse("#{this_year - 1}-01-01") => 1
204
204
  }
205
205
  assert_equal expected, User.group_by_year(:created_at, last: 2, current: false).count
206
206
  end
207
207
 
208
208
  def test_format_locale
209
- create_user "2014-10-01 00:00:00 UTC"
209
+ create_user "2014-10-01"
210
210
  assert_equal ({"Okt" => 1}), User.group_by_day(:created_at, format: "%b", locale: :de).count
211
211
  end
212
212
 
213
213
  def test_format_locale_by_symbol
214
- create_user "2014-10-01 00:00:00 UTC"
214
+ create_user "2014-10-01"
215
215
  assert_equal ({"Okt 1, 2014" => 1}), User.group_by_day(:created_at, format: :special, locale: :de).count
216
216
  end
217
217
 
218
218
  def test_format_locale_global
219
- create_user "2014-10-01 00:00:00 UTC"
219
+ create_user "2014-10-01"
220
220
  I18n.locale = :de
221
221
  assert_equal ({"Okt" => 1}), User.group_by_day(:created_at, format: "%b").count
222
222
  ensure
@@ -224,7 +224,7 @@ module TestDatabase
224
224
  end
225
225
 
226
226
  def test_format_multiple_groups
227
- create_user "2014-03-01 00:00:00 UTC"
227
+ create_user "2014-03-01"
228
228
  assert_equal ({["Sun", 1] => 1}), User.group_by_week(:created_at, format: "%a").group(:score).count
229
229
  assert_equal ({[1, "Sun"] => 1}), User.group(:score).group_by_week(:created_at, format: "%a").count
230
230
  end
@@ -258,10 +258,10 @@ module TestDatabase
258
258
  # default value
259
259
 
260
260
  def test_default_value
261
- create_user "#{this_year}-01-01 00:00:00 UTC"
261
+ create_user "#{this_year}-01-01"
262
262
  expected = {
263
- utc.parse("#{this_year - 1}-01-01 00:00:00 UTC") => nil,
264
- utc.parse("#{this_year}-01-01 00:00:00 UTC") => 1
263
+ Date.parse("#{this_year - 1}-01-01") => nil,
264
+ Date.parse("#{this_year}-01-01") => 1
265
265
  }
266
266
  assert_equal expected, User.group_by_year(:created_at, last: 2, default_value: nil).count
267
267
  end
@@ -269,10 +269,10 @@ module TestDatabase
269
269
  # associations
270
270
 
271
271
  def test_associations
272
- user = create_user("2014-03-01 00:00:00 UTC")
272
+ user = create_user("2014-03-01")
273
273
  user.posts.create!(created_at: "2014-04-01 00:00:00 UTC")
274
274
  expected = {
275
- utc.parse("2014-04-01 00:00:00 UTC") => 1
275
+ Date.parse("2014-04-01") => 1
276
276
  }
277
277
  assert_equal expected, user.posts.group_by_day(:created_at).count
278
278
  end
@@ -293,8 +293,8 @@ module TestDatabase
293
293
  create_user(brasilia.parse("2014-10-19 02:00:00").utc.to_s)
294
294
  create_user(brasilia.parse("2014-10-20 02:00:00").utc.to_s)
295
295
  expected = {
296
- brasilia.parse("2014-10-19 01:00:00") => 1,
297
- brasilia.parse("2014-10-20 00:00:00") => 1
296
+ Date.parse("2014-10-19") => 1,
297
+ Date.parse("2014-10-20") => 1
298
298
  }
299
299
  assert_equal expected, User.group_by_day(:created_at, time_zone: "Brasilia").count
300
300
  end
@@ -302,10 +302,10 @@ module TestDatabase
302
302
  # carry_forward option
303
303
 
304
304
  def test_carry_forward
305
- create_user "2014-05-01 00:00:00 UTC"
306
- create_user "2014-05-01 00:00:00 UTC"
307
- create_user "2014-05-03 00:00:00 UTC"
308
- assert_equal 2, User.group_by_day(:created_at, carry_forward: true).count[utc.parse("2014-05-02 00:00:00 UTC")]
305
+ create_user "2014-05-01"
306
+ create_user "2014-05-01"
307
+ create_user "2014-05-03"
308
+ assert_equal 2, User.group_by_day(:created_at, carry_forward: true).count[Date.parse("2014-05-02")]
309
309
  end
310
310
 
311
311
  # dates
@@ -333,7 +333,7 @@ module TestDatabase
333
333
  )
334
334
 
335
335
  # hack for MySQL adapter
336
- user.update_attributes(created_at: nil, created_on: nil) if created_at.nil?
336
+ # user.update_attributes(created_at: nil, created_on: nil) if created_at.nil?
337
337
 
338
338
  user
339
339
  end
@@ -389,217 +389,217 @@ module TestGroupdate
389
389
  # day
390
390
 
391
391
  def test_day_end_of_day
392
- assert_result_time :day, "2013-05-03 00:00:00 UTC", "2013-05-03 23:59:59"
392
+ assert_result_date :day, "2013-05-03", "2013-05-03 23:59:59"
393
393
  end
394
394
 
395
395
  def test_day_start_of_day
396
- assert_result_time :day, "2013-05-04 00:00:00 UTC", "2013-05-04 00:00:00"
396
+ assert_result_date :day, "2013-05-04", "2013-05-04 00:00:00"
397
397
  end
398
398
 
399
399
  def test_day_end_of_day_with_time_zone
400
- assert_result_time :day, "2013-05-02 00:00:00 PDT", "2013-05-03 06:59:59", true
400
+ assert_result_date :day, "2013-05-02", "2013-05-03 06:59:59", true
401
401
  end
402
402
 
403
403
  def test_day_start_of_day_with_time_zone
404
- assert_result_time :day, "2013-05-03 00:00:00 PDT", "2013-05-03 07:00:00", true
404
+ assert_result_date :day, "2013-05-03", "2013-05-03 07:00:00", true
405
405
  end
406
406
 
407
407
  # day hour starts at 2 am
408
408
 
409
409
  def test_test_day_end_of_day_day_start_2am
410
- assert_result_time :day, "2013-05-03 02:00:00 UTC", "2013-05-04 01:59:59", false, day_start: 2
410
+ assert_result_date :day, "2013-05-03", "2013-05-04 01:59:59", false, day_start: 2
411
411
  end
412
412
 
413
413
  def test_test_day_start_of_day_day_start_2am
414
- assert_result_time :day, "2013-05-03 02:00:00 UTC", "2013-05-03 02:00:00", false, day_start: 2
414
+ assert_result_date :day, "2013-05-03", "2013-05-03 02:00:00", false, day_start: 2
415
415
  end
416
416
 
417
417
  def test_test_day_end_of_day_with_time_zone_day_start_2am
418
- assert_result_time :day, "2013-05-03 02:00:00 PDT", "2013-05-04 07:59:59", true, day_start: 2
418
+ assert_result_date :day, "2013-05-03", "2013-05-04 07:59:59", true, day_start: 2
419
419
  end
420
420
 
421
421
  def test_test_day_start_of_day_with_time_zone_day_start_2am
422
- assert_result_time :day, "2013-05-03 02:00:00 PDT", "2013-05-03 09:00:00", true, day_start: 2
422
+ assert_result_date :day, "2013-05-03", "2013-05-03 09:00:00", true, day_start: 2
423
423
  end
424
424
 
425
425
  # week
426
426
 
427
427
  def test_week_end_of_week
428
- assert_result_time :week, "2013-03-17 00:00:00 UTC", "2013-03-23 23:59:59"
428
+ assert_result_date :week, "2013-03-17", "2013-03-23 23:59:59"
429
429
  end
430
430
 
431
431
  def test_week_start_of_week
432
- assert_result_time :week, "2013-03-24 00:00:00 UTC", "2013-03-24 00:00:00"
432
+ assert_result_date :week, "2013-03-24", "2013-03-24 00:00:00"
433
433
  end
434
434
 
435
435
  def test_week_end_of_week_with_time_zone
436
- assert_result_time :week, "2013-03-10 00:00:00 PST", "2013-03-17 06:59:59", true
436
+ assert_result_date :week, "2013-03-10", "2013-03-17 06:59:59", true
437
437
  end
438
438
 
439
439
  def test_week_start_of_week_with_time_zone
440
- assert_result_time :week, "2013-03-17 00:00:00 PDT", "2013-03-17 07:00:00", true
440
+ assert_result_date :week, "2013-03-17", "2013-03-17 07:00:00", true
441
441
  end
442
442
 
443
443
  # week starting on monday
444
444
 
445
445
  def test_week_end_of_week_mon
446
- assert_result_time :week, "2013-03-18 00:00:00 UTC", "2013-03-24 23:59:59", false, week_start: :mon
446
+ assert_result_date :week, "2013-03-18", "2013-03-24 23:59:59", false, week_start: :mon
447
447
  end
448
448
 
449
449
  def test_week_start_of_week_mon
450
- assert_result_time :week, "2013-03-25 00:00:00 UTC", "2013-03-25 00:00:00", false, week_start: :mon
450
+ assert_result_date :week, "2013-03-25", "2013-03-25 00:00:00", false, week_start: :mon
451
451
  end
452
452
 
453
453
  def test_week_end_of_week_with_time_zone_mon
454
- assert_result_time :week, "2013-03-11 00:00:00 PDT", "2013-03-18 06:59:59", true, week_start: :mon
454
+ assert_result_date :week, "2013-03-11", "2013-03-18 06:59:59", true, week_start: :mon
455
455
  end
456
456
 
457
457
  def test_week_start_of_week_with_time_zone_mon
458
- assert_result_time :week, "2013-03-18 00:00:00 PDT", "2013-03-18 07:00:00", true, week_start: :mon
458
+ assert_result_date :week, "2013-03-18", "2013-03-18 07:00:00", true, week_start: :mon
459
459
  end
460
460
 
461
461
  # week starting on saturday
462
462
 
463
463
  def test_week_end_of_week_sat
464
- assert_result_time :week, "2013-03-16 00:00:00 UTC", "2013-03-22 23:59:59", false, week_start: :sat
464
+ assert_result_date :week, "2013-03-16", "2013-03-22 23:59:59", false, week_start: :sat
465
465
  end
466
466
 
467
467
  def test_week_start_of_week_sat
468
- assert_result_time :week, "2013-03-23 00:00:00 UTC", "2013-03-23 00:00:00", false, week_start: :sat
468
+ assert_result_date :week, "2013-03-23", "2013-03-23 00:00:00", false, week_start: :sat
469
469
  end
470
470
 
471
471
  def test_week_end_of_week_with_time_zone_sat
472
- assert_result_time :week, "2013-03-09 00:00:00 PST", "2013-03-16 06:59:59", true, week_start: :sat
472
+ assert_result_date :week, "2013-03-09", "2013-03-16 06:59:59", true, week_start: :sat
473
473
  end
474
474
 
475
475
  def test_week_start_of_week_with_time_zone_sat
476
- assert_result_time :week, "2013-03-16 00:00:00 PDT", "2013-03-16 07:00:00", true, week_start: :sat
476
+ assert_result_date :week, "2013-03-16", "2013-03-16 07:00:00", true, week_start: :sat
477
477
  end
478
478
 
479
479
  # week starting at 2am
480
480
 
481
481
  def test_week_end_of_week_day_start_2am
482
- assert_result_time :week, "2013-03-17 02:00:00 UTC", "2013-03-24 01:59:59", false, day_start: 2
482
+ assert_result_date :week, "2013-03-17", "2013-03-24 01:59:59", false, day_start: 2
483
483
  end
484
484
 
485
485
  def test_week_start_of_week_day_start_2am
486
- assert_result_time :week, "2013-03-17 02:00:00 UTC", "2013-03-17 02:00:00", false, day_start: 2
486
+ assert_result_date :week, "2013-03-17", "2013-03-17 02:00:00", false, day_start: 2
487
487
  end
488
488
 
489
489
  def test_week_end_of_week_day_with_time_zone_start_2am
490
- assert_result_time :week, "2013-03-17 02:00:00 PDT", "2013-03-24 08:59:59", true, day_start: 2
490
+ assert_result_date :week, "2013-03-17", "2013-03-24 08:59:59", true, day_start: 2
491
491
  end
492
492
 
493
493
  def test_week_start_of_week_day_with_time_zone_start_2am
494
- assert_result_time :week, "2013-03-17 02:00:00 PDT", "2013-03-17 09:00:00", true, day_start: 2
494
+ assert_result_date :week, "2013-03-17", "2013-03-17 09:00:00", true, day_start: 2
495
495
  end
496
496
 
497
497
  # month
498
498
 
499
499
  def test_month_end_of_month
500
- assert_result_time :month, "2013-05-01 00:00:00 UTC", "2013-05-31 23:59:59"
500
+ assert_result_date :month, "2013-05-01", "2013-05-31 23:59:59"
501
501
  end
502
502
 
503
503
  def test_month_start_of_month
504
- assert_result_time :month, "2013-06-01 00:00:00 UTC", "2013-06-01 00:00:00"
504
+ assert_result_date :month, "2013-06-01", "2013-06-01 00:00:00"
505
505
  end
506
506
 
507
507
  def test_month_end_of_month_with_time_zone
508
- assert_result_time :month, "2013-05-01 00:00:00 PDT", "2013-06-01 06:59:59", true
508
+ assert_result_date :month, "2013-05-01", "2013-06-01 06:59:59", true
509
509
  end
510
510
 
511
511
  def test_month_start_of_month_with_time_zone
512
- assert_result_time :month, "2013-06-01 00:00:00 PDT", "2013-06-01 07:00:00", true
512
+ assert_result_date :month, "2013-06-01", "2013-06-01 07:00:00", true
513
513
  end
514
514
 
515
515
  # month starts at 2am
516
516
 
517
517
  def test_month_end_of_month_day_start_2am
518
- assert_result_time :month, "2013-03-01 02:00:00 UTC", "2013-04-01 01:59:59", false, day_start: 2
518
+ assert_result_date :month, "2013-03-01", "2013-04-01 01:59:59", false, day_start: 2
519
519
  end
520
520
 
521
521
  def test_month_start_of_month_day_start_2am
522
- assert_result_time :month, "2013-03-01 02:00:00 UTC", "2013-03-01 02:00:00", false, day_start: 2
522
+ assert_result_date :month, "2013-03-01", "2013-03-01 02:00:00", false, day_start: 2
523
523
  end
524
524
 
525
525
  def test_month_end_of_month_with_time_zone_day_start_2am
526
- assert_result_time :month, "2013-03-01 02:00:00 PST", "2013-04-01 08:59:59", true, day_start: 2
526
+ assert_result_date :month, "2013-03-01", "2013-04-01 08:59:59", true, day_start: 2
527
527
  end
528
528
 
529
529
  def test_month_start_of_month_with_time_zone_day_start_2am
530
- assert_result_time :month, "2013-03-01 02:00:00 PST", "2013-03-01 10:00:00", true, day_start: 2
530
+ assert_result_date :month, "2013-03-01", "2013-03-01 10:00:00", true, day_start: 2
531
531
  end
532
532
 
533
533
  # quarter
534
534
 
535
535
  def test_quarter_end_of_quarter
536
- assert_result_time :quarter, "2013-04-01 00:00:00 UTC", "2013-06-30 23:59:59"
536
+ assert_result_date :quarter, "2013-04-01", "2013-06-30 23:59:59"
537
537
  end
538
538
 
539
539
  def test_quarter_start_of_quarter
540
- assert_result_time :quarter, "2013-04-01 00:00:00 UTC", "2013-04-01 00:00:00"
540
+ assert_result_date :quarter, "2013-04-01", "2013-04-01 00:00:00"
541
541
  end
542
542
 
543
543
  def test_quarter_end_of_quarter_with_time_zone
544
- assert_result_time :quarter, "2013-04-01 00:00:00 PDT", "2013-07-01 06:59:59", true
544
+ assert_result_date :quarter, "2013-04-01", "2013-07-01 06:59:59", true
545
545
  end
546
546
 
547
547
  def test_quarter_start_of_quarter_with_time_zone
548
- assert_result_time :quarter, "2013-04-01 00:00:00 PDT", "2013-04-01 07:00:00", true
548
+ assert_result_date :quarter, "2013-04-01", "2013-04-01 07:00:00", true
549
549
  end
550
550
 
551
551
  # quarter starts at 2am
552
552
 
553
553
  def test_quarter_end_of_quarter_day_start_2am
554
- assert_result_time :quarter, "2013-04-01 02:00:00 UTC", "2013-07-01 01:59:59", false, day_start: 2
554
+ assert_result_date :quarter, "2013-04-01", "2013-07-01 01:59:59", false, day_start: 2
555
555
  end
556
556
 
557
557
  def test_quarter_start_of_quarter_day_start_2am
558
- assert_result_time :quarter, "2013-04-01 02:00:00 UTC", "2013-04-01 02:00:00", false, day_start: 2
558
+ assert_result_date :quarter, "2013-04-01", "2013-04-01 02:00:00", false, day_start: 2
559
559
  end
560
560
 
561
561
  def test_quarter_end_of_quarter_with_time_zone_day_start_2am
562
- assert_result_time :quarter, "2013-01-01 02:00:00 PST", "2013-04-01 08:59:59", true, day_start: 2
562
+ assert_result_date :quarter, "2013-01-01", "2013-04-01 08:59:59", true, day_start: 2
563
563
  end
564
564
 
565
565
  def test_quarter_start_of_quarter_with_time_zone_day_start_2am
566
- assert_result_time :quarter, "2013-01-01 02:00:00 PST", "2013-01-01 10:00:00", true, day_start: 2
566
+ assert_result_date :quarter, "2013-01-01", "2013-01-01 10:00:00", true, day_start: 2
567
567
  end
568
568
 
569
569
  # year
570
570
 
571
571
  def test_year_end_of_year
572
- assert_result_time :year, "2013-01-01 00:00:00 UTC", "2013-12-31 23:59:59"
572
+ assert_result_date :year, "2013-01-01", "2013-12-31 23:59:59"
573
573
  end
574
574
 
575
575
  def test_year_start_of_year
576
- assert_result_time :year, "2014-01-01 00:00:00 UTC", "2014-01-01 00:00:00"
576
+ assert_result_date :year, "2014-01-01", "2014-01-01 00:00:00"
577
577
  end
578
578
 
579
579
  def test_year_end_of_year_with_time_zone
580
- assert_result_time :year, "2013-01-01 00:00:00 PST", "2014-01-01 07:59:59", true
580
+ assert_result_date :year, "2013-01-01", "2014-01-01 07:59:59", true
581
581
  end
582
582
 
583
583
  def test_year_start_of_year_with_time_zone
584
- assert_result_time :year, "2014-01-01 00:00:00 PST", "2014-01-01 08:00:00", true
584
+ assert_result_date :year, "2014-01-01", "2014-01-01 08:00:00", true
585
585
  end
586
586
 
587
587
  # year starts at 2am
588
588
 
589
589
  def test_year_end_of_year_day_start_2am
590
- assert_result_time :year, "2013-01-01 02:00:00 UTC", "2014-01-01 01:59:59", false, day_start: 2
590
+ assert_result_date :year, "2013-01-01", "2014-01-01 01:59:59", false, day_start: 2
591
591
  end
592
592
 
593
593
  def test_year_start_of_year_day_start_2am
594
- assert_result_time :year, "2013-01-01 02:00:00 UTC", "2013-01-01 02:00:00", false, day_start: 2
594
+ assert_result_date :year, "2013-01-01", "2013-01-01 02:00:00", false, day_start: 2
595
595
  end
596
596
 
597
597
  def test_year_end_of_year_with_time_zone_day_start_2am
598
- assert_result_time :year, "2013-01-01 02:00:00 PST", "2014-01-01 09:59:59", true, day_start: 2
598
+ assert_result_date :year, "2013-01-01", "2014-01-01 09:59:59", true, day_start: 2
599
599
  end
600
600
 
601
601
  def test_year_start_of_year_with_time_zone_day_start_2am
602
- assert_result_time :year, "2013-01-01 02:00:00 PST", "2013-01-01 10:00:00", true, day_start: 2
602
+ assert_result_date :year, "2013-01-01", "2013-01-01 10:00:00", true, day_start: 2
603
603
  end
604
604
 
605
605
  # hour of day
@@ -765,68 +765,68 @@ module TestGroupdate
765
765
  end
766
766
 
767
767
  def test_zeros_day
768
- assert_zeros :day, "2013-05-01 20:00:00 UTC", ["2013-04-30 00:00:00 UTC", "2013-05-01 00:00:00 UTC", "2013-05-02 00:00:00 UTC"], "2013-04-30 00:00:00 UTC", "2013-05-02 23:59:59 UTC"
768
+ assert_zeros_date :day, "2013-05-01 20:00:00 UTC", ["2013-04-30", "2013-05-01", "2013-05-02"], "2013-04-30 00:00:00 UTC", "2013-05-02 23:59:59 UTC"
769
769
  end
770
770
 
771
771
  def test_zeros_day_time_zone
772
- assert_zeros :day, "2013-05-01 20:00:00 PDT", ["2013-04-30 00:00:00 PDT", "2013-05-01 00:00:00 PDT", "2013-05-02 00:00:00 PDT"], "2013-04-30 00:00:00 PDT", "2013-05-02 23:59:59 PDT", true
772
+ assert_zeros_date :day, "2013-05-01 20:00:00 PDT", ["2013-04-30", "2013-05-01", "2013-05-02"], "2013-04-30 00:00:00 PDT", "2013-05-02 23:59:59 PDT", true
773
773
  end
774
774
 
775
775
  def test_zeros_week
776
- assert_zeros :week, "2013-05-01 20:00:00 UTC", ["2013-04-21 00:00:00 UTC", "2013-04-28 00:00:00 UTC", "2013-05-05 00:00:00 UTC"], "2013-04-27 23:59:59 UTC", "2013-05-11 23:59:59 UTC"
776
+ assert_zeros_date :week, "2013-05-01 20:00:00 UTC", ["2013-04-21", "2013-04-28", "2013-05-05"], "2013-04-27 23:59:59 UTC", "2013-05-11 23:59:59 UTC"
777
777
  end
778
778
 
779
779
  def test_zeros_week_time_zone
780
- assert_zeros :week, "2013-05-01 20:00:00 PDT", ["2013-04-21 00:00:00 PDT", "2013-04-28 00:00:00 PDT", "2013-05-05 00:00:00 PDT"], "2013-04-27 23:59:59 PDT", "2013-05-11 23:59:59 PDT", true
780
+ assert_zeros_date :week, "2013-05-01 20:00:00 PDT", ["2013-04-21", "2013-04-28", "2013-05-05"], "2013-04-27 23:59:59 PDT", "2013-05-11 23:59:59 PDT", true
781
781
  end
782
782
 
783
783
  def test_zeros_week_mon
784
- assert_zeros :week, "2013-05-01 20:00:00 UTC", ["2013-04-22 00:00:00 UTC", "2013-04-29 00:00:00 UTC", "2013-05-06 00:00:00 UTC"], "2013-04-27 23:59:59 UTC", "2013-05-11 23:59:59 UTC", false, week_start: :mon
784
+ assert_zeros_date :week, "2013-05-01 20:00:00 UTC", ["2013-04-22", "2013-04-29", "2013-05-06"], "2013-04-27 23:59:59 UTC", "2013-05-11 23:59:59 UTC", false, week_start: :mon
785
785
  end
786
786
 
787
787
  def test_zeros_week_time_zone_mon
788
- assert_zeros :week, "2013-05-01 20:00:00 PDT", ["2013-04-22 00:00:00 PDT", "2013-04-29 00:00:00 PDT", "2013-05-06 00:00:00 PDT"], "2013-04-27 23:59:59 PDT", "2013-05-11 23:59:59 PDT", true, week_start: :mon
788
+ assert_zeros_date :week, "2013-05-01 20:00:00 PDT", ["2013-04-22", "2013-04-29", "2013-05-06"], "2013-04-27 23:59:59 PDT", "2013-05-11 23:59:59 PDT", true, week_start: :mon
789
789
  end
790
790
 
791
791
  def test_zeros_week_sat
792
- assert_zeros :week, "2013-05-01 20:00:00 UTC", ["2013-04-20 00:00:00 UTC", "2013-04-27 00:00:00 UTC", "2013-05-04 00:00:00 UTC"], "2013-04-26 23:59:59 UTC", "2013-05-10 23:59:59 UTC", false, week_start: :sat
792
+ assert_zeros_date :week, "2013-05-01 20:00:00 UTC", ["2013-04-20", "2013-04-27", "2013-05-04"], "2013-04-26 23:59:59 UTC", "2013-05-10 23:59:59 UTC", false, week_start: :sat
793
793
  end
794
794
 
795
795
  def test_zeros_week_time_zone_sat
796
- assert_zeros :week, "2013-05-01 20:00:00 PDT", ["2013-04-20 00:00:00 PDT", "2013-04-27 00:00:00 PDT", "2013-05-04 00:00:00 PDT"], "2013-04-26 23:59:59 PDT", "2013-05-10 23:59:59 PDT", true, week_start: :sat
796
+ assert_zeros_date :week, "2013-05-01 20:00:00 PDT", ["2013-04-20", "2013-04-27", "2013-05-04"], "2013-04-26 23:59:59 PDT", "2013-05-10 23:59:59 PDT", true, week_start: :sat
797
797
  end
798
798
 
799
799
  def test_zeros_month
800
- assert_zeros :month, "2013-04-16 20:00:00 UTC", ["2013-03-01 00:00:00 UTC", "2013-04-01 00:00:00 UTC", "2013-05-01 00:00:00 UTC"], "2013-03-01 00:00:00 UTC", "2013-05-31 23:59:59 UTC"
800
+ assert_zeros_date :month, "2013-04-16 20:00:00 UTC", ["2013-03-01", "2013-04-01", "2013-05-01"], "2013-03-01", "2013-05-31 23:59:59 UTC"
801
801
  end
802
802
 
803
803
  def test_zeros_month_time_zone
804
- assert_zeros :month, "2013-04-16 20:00:00 PDT", ["2013-03-01 00:00:00 PST", "2013-04-01 00:00:00 PDT", "2013-05-01 00:00:00 PDT"], "2013-03-01 00:00:00 PST", "2013-05-31 23:59:59 PDT", true
804
+ assert_zeros_date :month, "2013-04-16 20:00:00 PDT", ["2013-03-01", "2013-04-01", "2013-05-01"], "2013-03-01 00:00:00 PST", "2013-05-31 23:59:59 PDT", true
805
805
  end
806
806
 
807
807
  def test_zeros_quarter
808
- assert_zeros :quarter, "2013-04-16 20:00:00 UTC", ["2013-01-01 00:00:00 UTC", "2013-04-01 00:00:00 UTC", "2013-07-01 00:00:00 UTC"], "2013-01-01 00:00:00 UTC", "2013-09-30 23:59:59 UTC"
808
+ assert_zeros_date :quarter, "2013-04-16 20:00:00 UTC", ["2013-01-01", "2013-04-01", "2013-07-01"], "2013-01-01", "2013-09-30 23:59:59 UTC"
809
809
  end
810
810
 
811
811
  def test_zeros_quarter_time_zone
812
- assert_zeros :quarter, "2013-04-16 20:00:00 PDT", ["2013-01-01 00:00:00 PST", "2013-04-01 00:00:00 PDT", "2013-07-01 00:00:00 PDT"], "2013-01-01 00:00:00 PST", "2013-09-30 23:59:59 PDT", true
812
+ assert_zeros_date :quarter, "2013-04-16 20:00:00 PDT", ["2013-01-01", "2013-04-01", "2013-07-01"], "2013-01-01 00:00:00 PST", "2013-09-30 23:59:59 PDT", true
813
813
  end
814
814
 
815
815
  def test_zeros_year
816
- assert_zeros :year, "2013-04-16 20:00:00 UTC", ["2012-01-01 00:00:00 UTC", "2013-01-01 00:00:00 UTC", "2014-01-01 00:00:00 UTC"], "2012-01-01 00:00:00 UTC", "2014-12-31 23:59:59 UTC"
816
+ assert_zeros_date :year, "2013-04-16 20:00:00 UTC", ["2012-01-01", "2013-01-01", "2014-01-01"], "2012-01-01", "2014-12-31 23:59:59 UTC"
817
817
  end
818
818
 
819
819
  def test_zeros_year_time_zone
820
- assert_zeros :year, "2013-04-16 20:00:00 PDT", ["2012-01-01 00:00:00 PST", "2013-01-01 00:00:00 PST", "2014-01-01 00:00:00 PST"], "2012-01-01 00:00:00 PST", "2014-12-31 23:59:59 PST", true
820
+ assert_zeros_date :year, "2013-04-16 20:00:00 PDT", ["2012-01-01 00:00:00 PST", "2013-01-01 00:00:00 PST", "2014-01-01 00:00:00 PST"], "2012-01-01 00:00:00 PST", "2014-12-31 23:59:59 PST", true
821
821
  end
822
822
 
823
823
  def test_zeros_day_of_week
824
- create_user "2013-05-01 00:00:00 UTC"
824
+ create_user "2013-05-01"
825
825
  expected = {}
826
826
  7.times do |n|
827
827
  expected[n] = n == 3 ? 1 : 0
828
828
  end
829
- assert_equal expected, call_method(:day_of_week, :created_at, {})
829
+ assert_equal expected, call_method(:day_of_week, :created_at, {series: true})
830
830
  end
831
831
 
832
832
  def test_zeros_hour_of_day
@@ -835,130 +835,130 @@ module TestGroupdate
835
835
  24.times do |n|
836
836
  expected[n] = n == 20 ? 1 : 0
837
837
  end
838
- assert_equal expected, call_method(:hour_of_day, :created_at, {})
838
+ assert_equal expected, call_method(:hour_of_day, :created_at, {series: true})
839
839
  end
840
840
 
841
841
  def test_zeros_day_of_month
842
- create_user "1978-12-18 00:00:00 UTC"
842
+ create_user "1978-12-18"
843
843
  expected = {}
844
844
  (1..31).each do |n|
845
845
  expected[n] = n == 18 ? 1 : 0
846
846
  end
847
- assert_equal expected, call_method(:day_of_month, :created_at, {})
847
+ assert_equal expected, call_method(:day_of_month, :created_at, {series: true})
848
848
  end
849
849
 
850
850
  def test_zeros_month_of_year
851
- create_user "2013-05-01 00:00:00 UTC"
851
+ create_user "2013-05-01"
852
852
  expected = {}
853
853
  (1..12).each do |n|
854
854
  expected[n] = n == 5 ? 1 : 0
855
855
  end
856
- assert_equal expected, call_method(:month_of_year, :created_at, {})
856
+ assert_equal expected, call_method(:month_of_year, :created_at, {series: true})
857
857
  end
858
858
 
859
859
  def test_zeros_excludes_end
860
- create_user "2013-05-02 00:00:00 UTC"
860
+ create_user "2013-05-02"
861
861
  expected = {
862
- utc.parse("2013-05-01 00:00:00 UTC") => 0
862
+ Date.parse("2013-05-01") => 0
863
863
  }
864
- assert_equal expected, call_method(:day, :created_at, range: Time.parse("2013-05-01 00:00:00 UTC")...Time.parse("2013-05-02 00:00:00 UTC"))
864
+ assert_equal expected, call_method(:day, :created_at, range: Date.parse("2013-05-01")...Date.parse("2013-05-02"), series: true)
865
865
  end
866
866
 
867
867
  def test_zeros_datetime
868
- create_user "2013-05-01 00:00:00 UTC"
868
+ create_user "2013-05-01"
869
869
  expected = {
870
- utc.parse("2013-05-01 00:00:00 UTC") => 1
870
+ Date.parse("2013-05-01") => 1
871
871
  }
872
- assert_equal expected, call_method(:day, :created_at, range: DateTime.parse("2013-05-01 00:00:00 UTC")..DateTime.parse("2013-05-01 00:00:00 UTC"))
872
+ assert_equal expected, call_method(:day, :created_at, range: DateTime.parse("2013-05-01")..DateTime.parse("2013-05-01"), series: true)
873
873
  end
874
874
 
875
875
  def test_zeros_null_value
876
876
  create_user nil
877
- assert_equal 0, call_method(:hour_of_day, :created_at, range: true)[0]
877
+ assert_equal 0, call_method(:hour_of_day, :created_at, range: true, series: true)[0]
878
878
  end
879
879
 
880
880
  def test_zeroes_range_true
881
- create_user "2013-05-01 00:00:00 UTC"
882
- create_user "2013-05-03 00:00:00 UTC"
881
+ create_user "2013-05-01"
882
+ create_user "2013-05-03"
883
883
  expected = {
884
- utc.parse("2013-05-01 00:00:00 UTC") => 1,
885
- utc.parse("2013-05-02 00:00:00 UTC") => 0,
886
- utc.parse("2013-05-03 00:00:00 UTC") => 1
884
+ Date.parse("2013-05-01") => 1,
885
+ Date.parse("2013-05-02") => 0,
886
+ Date.parse("2013-05-03") => 1
887
887
  }
888
- assert_equal expected, call_method(:day, :created_at, range: true)
888
+ assert_equal expected, call_method(:day, :created_at, range: true, series: true)
889
889
  end
890
890
 
891
891
  # week_start
892
892
 
893
893
  def test_week_start
894
894
  Groupdate.week_start = :mon
895
- assert_result_time :week, "2013-03-18 00:00:00 UTC", "2013-03-24 23:59:59"
895
+ assert_result_date :week, "2013-03-18", "2013-03-24 23:59:59"
896
896
  end
897
897
 
898
898
  def test_week_start_and_start_option
899
899
  Groupdate.week_start = :mon
900
- assert_result_time :week, "2013-03-16 00:00:00 UTC", "2013-03-22 23:59:59", false, week_start: :sat
900
+ assert_result_date :week, "2013-03-16", "2013-03-22 23:59:59", false, week_start: :sat
901
901
  end
902
902
 
903
903
  # misc
904
904
 
905
905
  def test_order_hour_of_day_reverse_option
906
- assert_equal 23, call_method(:hour_of_day, :created_at, reverse: true).keys.first
906
+ assert_equal 23, call_method(:hour_of_day, :created_at, reverse: true, series: true).keys.first
907
907
  end
908
908
 
909
909
  def test_time_zone
910
- create_user "2013-05-01 00:00:00 UTC"
910
+ create_user "2013-05-01"
911
911
  time_zone = "Pacific Time (US & Canada)"
912
- assert_equal time_zone, call_method(:day, :created_at, time_zone: time_zone).keys.first.time_zone.name
912
+ assert_equal time_zone, call_method(:hour, :created_at, time_zone: time_zone).keys.first.time_zone.name
913
913
  end
914
914
 
915
915
  def test_format_day
916
- create_user "2014-03-01 00:00:00 UTC"
916
+ create_user "2014-03-01"
917
917
  assert_format :day, "March 1, 2014", "%B %-e, %Y"
918
918
  end
919
919
 
920
920
  def test_format_month
921
- create_user "2014-03-01 00:00:00 UTC"
921
+ create_user "2014-03-01"
922
922
  assert_format :month, "March 2014", "%B %Y"
923
923
  end
924
924
 
925
925
  def test_format_quarter
926
- create_user "2014-03-05 00:00:00 UTC"
926
+ create_user "2014-03-05"
927
927
  assert_format :quarter, "January 1, 2014", "%B %-e, %Y"
928
928
  end
929
929
 
930
930
  def test_format_year
931
- create_user "2014-03-01 00:00:00 UTC"
931
+ create_user "2014-03-01"
932
932
  assert_format :year, "2014", "%Y"
933
933
  end
934
934
 
935
935
  def test_format_hour_of_day
936
- create_user "2014-03-01 00:00:00 UTC"
936
+ create_user "2014-03-01"
937
937
  assert_format :hour_of_day, "12 am", "%-l %P"
938
938
  end
939
939
 
940
940
  def test_format_hour_of_day_day_start
941
- create_user "2014-03-01 00:00:00 UTC"
941
+ create_user "2014-03-01"
942
942
  assert_format :hour_of_day, "2 am", "%-l %P", day_start: 2
943
943
  end
944
944
 
945
945
  def test_format_day_of_week
946
- create_user "2014-03-01 00:00:00 UTC"
946
+ create_user "2014-03-01"
947
947
  assert_format :day_of_week, "Sun", "%a"
948
948
  end
949
949
 
950
950
  def test_format_day_of_week_week_start
951
- create_user "2014-03-01 00:00:00 UTC"
951
+ create_user "2014-03-01"
952
952
  assert_format :day_of_week, "Sun", "%a", week_start: :sat
953
953
  end
954
954
 
955
955
  def test_format_day_of_month
956
- create_user "2014-03-01 00:00:00 UTC"
956
+ create_user "2014-03-01"
957
957
  assert_format :day_of_month, " 1", "%e"
958
958
  end
959
959
 
960
960
  def test_format_month_of_year
961
- create_user "2014-01-01 00:00:00 UTC"
961
+ create_user "2014-01-01"
962
962
  assert_format :month_of_year, "Jan", "%b"
963
963
  end
964
964
 
@@ -983,17 +983,17 @@ module TestGroupdate
983
983
  # day start
984
984
 
985
985
  def test_day_start_decimal_end_of_day
986
- assert_result_time :day, "2013-05-03 02:30:00 UTC", "2013-05-04 02:29:59", false, day_start: 2.5
986
+ assert_result_date :day, "2013-05-03", "2013-05-04 02:29:59", false, day_start: 2.5
987
987
  end
988
988
 
989
989
  def test_day_start_decimal_start_of_day
990
- assert_result_time :day, "2013-05-03 02:30:00 UTC", "2013-05-03 02:30:00", false, day_start: 2.5
990
+ assert_result_date :day, "2013-05-03", "2013-05-03 02:30:00", false, day_start: 2.5
991
991
  end
992
992
 
993
993
  # helpers
994
994
 
995
995
  def assert_format(method, expected, format, options = {})
996
- assert_equal expected, call_method(method, :created_at, options.merge(format: format)).keys.first
996
+ assert_equal expected, call_method(method, :created_at, options.merge(format: format, series: true)).keys.first
997
997
  end
998
998
 
999
999
  def assert_result_time(method, expected, time_str, time_zone = false, options = {})
@@ -1001,6 +1001,15 @@ module TestGroupdate
1001
1001
  assert_equal expected, result(method, time_str, time_zone, options)
1002
1002
  end
1003
1003
 
1004
+ def assert_result_date(method, expected_str, time_str, time_zone = false, options = {})
1005
+ create_user time_str
1006
+ expected = {Date.parse(expected_str) => 1}
1007
+ assert_equal expected, call_method(method, :created_at, options.merge(time_zone: time_zone ? "Pacific Time (US & Canada)" : nil))
1008
+ expected = {(time_zone ? pt : utc).parse(expected_str) + options[:day_start].to_f.hours => 1}
1009
+ assert_equal expected, call_method(method, :created_at, options.merge(dates: false, time_zone: time_zone ? "Pacific Time (US & Canada)" : nil))
1010
+ # assert_equal expected, call_method(method, :created_on, options.merge(time_zone: time_zone ? "Pacific Time (US & Canada)" : nil))
1011
+ end
1012
+
1004
1013
  def assert_result(method, expected, time_str, time_zone = false, options = {})
1005
1014
  assert_equal 1, result(method, time_str, time_zone, options)[expected]
1006
1015
  end
@@ -1016,7 +1025,16 @@ module TestGroupdate
1016
1025
  keys.each_with_index do |key, i|
1017
1026
  expected[utc.parse(key).in_time_zone(time_zone ? "Pacific Time (US & Canada)" : utc)] = i == 1 ? 1 : 0
1018
1027
  end
1019
- assert_equal expected, call_method(method, :created_at, options.merge(time_zone: time_zone ? "Pacific Time (US & Canada)" : nil, range: Time.parse(range_start)..Time.parse(range_end)))
1028
+ assert_equal expected, call_method(method, :created_at, options.merge(series: true, time_zone: time_zone ? "Pacific Time (US & Canada)" : nil, range: Time.parse(range_start)..Time.parse(range_end)))
1029
+ end
1030
+
1031
+ def assert_zeros_date(method, created_at, keys, range_start, range_end, time_zone = nil, options = {})
1032
+ create_user created_at
1033
+ expected = {}
1034
+ keys.each_with_index do |key, i|
1035
+ expected[Date.parse(key)] = i == 1 ? 1 : 0
1036
+ end
1037
+ assert_equal expected, call_method(method, :created_at, options.merge(series: true, time_zone: time_zone ? "Pacific Time (US & Canada)" : nil, range: Time.parse(range_start)..Time.parse(range_end)))
1020
1038
  end
1021
1039
 
1022
1040
  def this_year
@@ -1027,6 +1045,10 @@ module TestGroupdate
1027
1045
  ActiveSupport::TimeZone["UTC"]
1028
1046
  end
1029
1047
 
1048
+ def pt
1049
+ ActiveSupport::TimeZone["Pacific Time (US & Canada)"]
1050
+ end
1051
+
1030
1052
  def brasilia
1031
1053
  ActiveSupport::TimeZone["Brasilia"]
1032
1054
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: groupdate
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.3
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-28 00:00:00.000000000 Z
11
+ date: 2016-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport