DateSetter 1.3.2 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/DateSetter.rb CHANGED
@@ -25,15 +25,23 @@ class DateSetter
25
25
  end
26
26
 
27
27
  def reference_date
28
- @reference_date.try(:to_datetime)
28
+ @reference_date.is_a?(Date) ? @reference_date.at_beginning_of_day : @reference_date
29
29
  end
30
30
 
31
31
  def min_date
32
- @min_date.try(:to_datetime) || min_date_range - 1.second
32
+ if @min_date.is_a?(Date)
33
+ @min_date.at_beginning_of_day
34
+ else
35
+ @min_date || min_date_range - 1.second
36
+ end
33
37
  end
34
38
 
35
39
  def max_date
36
- @max_date.try(:to_datetime) || max_date_range + 1.second
40
+ if @max_date.is_a?(Date)
41
+ @max_date.at_beginning_of_day
42
+ else
43
+ @max_date || max_date_range + 1.second
44
+ end
37
45
  end
38
46
 
39
47
  def result
@@ -116,7 +124,7 @@ class DateSetter
116
124
  end
117
125
 
118
126
  def min_date_time_hour
119
- valid_min_date_time_in_range.hour.hours + valid_min_date_time_in_range.min.minutes + valid_min_date_time_in_range.sec.seconds
127
+ (valid_min_date_time_in_range.to_i - valid_min_date_time_in_range.at_beginning_of_day.to_i).seconds
120
128
  end
121
129
 
122
130
  def min_date_in_range
@@ -140,8 +148,8 @@ class DateSetter
140
148
  end
141
149
 
142
150
  def max_date_time_hour
143
- if valid_max_date_time_in_range.hour > 0
144
- valid_max_date_time_in_range.hour.hours + valid_max_date_time_in_range.min.minutes + valid_max_date_time_in_range.sec.seconds
151
+ if valid_max_date_time_in_range.to_i - valid_max_date_time_in_range.at_beginning_of_day.to_i > 0
152
+ (valid_max_date_time_in_range.to_i - valid_max_date_time_in_range.at_beginning_of_day.to_i).seconds
145
153
  else
146
154
  24.hours - 1.second
147
155
  end
@@ -198,6 +198,19 @@ class DateSetterTest < MiniTest::Unit::TestCase
198
198
  @date_setter.start_of_day = 8.hours
199
199
  @date_setter.end_of_day = 20.hours
200
200
 
201
- @date_setter.valid?
201
+ assert @date_setter.valid?
202
+ end
203
+
204
+ def test_3_seconds_precision
205
+ @date_setter.reference_date = Date.today
206
+ @date_setter.range = 500.days
207
+ @date_setter.min_date = Date.today - 1.second
208
+ @date_setter.max_date = Date.today + 1.second
209
+
210
+ assert (@date_setter.min_date..@date_setter.max_date).cover?(@date_setter.result)
211
+ end
212
+
213
+ def test_3_seconds_precision_with_set_method
214
+ assert (Date.today - 1.second..Date.today + 1.second).cover?(DateSetter.set(Date.today, 500.days, min_date: Date.today - 1.second, max_date: Date.today + 1.second))
202
215
  end
203
216
  end
data/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class DateSetter
2
- VERSION = "1.3.2"
2
+ VERSION = "1.4.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: DateSetter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: