DateSetter 0.0.1 → 1.0.0
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.
- data/lib/DateSetter.rb +13 -2
- data/test/date_setter_test.rb +9 -5
- data/version.rb +1 -1
- metadata +1 -1
data/lib/DateSetter.rb
CHANGED
@@ -2,8 +2,19 @@ class DateSetter
|
|
2
2
|
Infinity = 1.0 / 0.0
|
3
3
|
attr_accessor :reference_date, :min_date, :max_date, :result, :range, :min_hour, :max_hour
|
4
4
|
|
5
|
+
def initialize(options = {})
|
6
|
+
options.each do |key, value|
|
7
|
+
send "#{key}=", value
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.set(reference_date, range, options = {})
|
12
|
+
options.merge!(reference_date: reference_date, range: range)
|
13
|
+
new(options).result
|
14
|
+
end
|
15
|
+
|
5
16
|
def valid?
|
6
|
-
return
|
17
|
+
return if !reference_date || !range || !valid_ranges?
|
7
18
|
(min_date.to_f..max_date.to_f).cover?(reference_date.to_f)
|
8
19
|
end
|
9
20
|
|
@@ -33,7 +44,7 @@ class DateSetter
|
|
33
44
|
|
34
45
|
private
|
35
46
|
def valid_ranges?
|
36
|
-
min_date.to_f
|
47
|
+
min_date.to_f <= max_date.to_f || min_hour.to_f <= max_hour.to_f
|
37
48
|
end
|
38
49
|
|
39
50
|
def min_date_in_range
|
data/test/date_setter_test.rb
CHANGED
@@ -4,6 +4,7 @@ class DateSetterTest < MiniTest::Unit::TestCase
|
|
4
4
|
|
5
5
|
def setup
|
6
6
|
@date_setter = DateSetter.new
|
7
|
+
@date_setter.reference_date = DateTime.now
|
7
8
|
@date_setter.range = 0.days
|
8
9
|
end
|
9
10
|
|
@@ -58,6 +59,7 @@ class DateSetterTest < MiniTest::Unit::TestCase
|
|
58
59
|
end
|
59
60
|
|
60
61
|
def test_is_invalid_without_reference_date
|
62
|
+
@date_setter.reference_date = nil
|
61
63
|
@date_setter.min_date = 2.days.ago
|
62
64
|
@date_setter.max_date = 2.days.from_now
|
63
65
|
|
@@ -65,21 +67,18 @@ class DateSetterTest < MiniTest::Unit::TestCase
|
|
65
67
|
end
|
66
68
|
|
67
69
|
def test_is_valid_when_reference_date_is_bigger_than_min
|
68
|
-
@date_setter.reference_date = 1.days.ago
|
69
70
|
@date_setter.min_date = 2.days.ago
|
70
71
|
|
71
72
|
assert @date_setter.valid?
|
72
73
|
end
|
73
74
|
|
74
75
|
def test_is_valid_when_reference_date_is_smaller_than_max
|
75
|
-
@date_setter.reference_date = 1.days.from_now
|
76
76
|
@date_setter.max_date = 2.days.from_now
|
77
77
|
|
78
78
|
assert @date_setter.valid?
|
79
79
|
end
|
80
80
|
|
81
81
|
def test_is_valid_when_reference_date_is_between_min_and_max
|
82
|
-
@date_setter.reference_date = 1.days.from_now
|
83
82
|
@date_setter.min_date = 2.days.ago
|
84
83
|
@date_setter.max_date = 2.days.from_now
|
85
84
|
|
@@ -99,17 +98,22 @@ class DateSetterTest < MiniTest::Unit::TestCase
|
|
99
98
|
end
|
100
99
|
|
101
100
|
def test_should_always_return_result_which_is_between_min_date_and_max_date
|
102
|
-
@date_setter.reference_date = @date_setter.min_date = @date_setter.max_date =
|
101
|
+
@date_setter.reference_date = @date_setter.min_date = @date_setter.max_date = DateTime.now
|
103
102
|
@date_setter.range = 5.days
|
104
103
|
|
105
104
|
assert (0.days.ago.at_midnight..1.days.from_now.at_midnight).cover?(@date_setter.result)
|
106
105
|
end
|
107
106
|
|
108
107
|
def test_should_always_return_result_which_is_between_min_hour_and_max_hour
|
109
|
-
@date_setter.reference_date = 0.days.ago
|
110
108
|
@date_setter.min_hour = 8.hours
|
111
109
|
@date_setter.max_hour = 9.hours
|
112
110
|
|
113
111
|
assert (8..9).cover?(@date_setter.result.hour)
|
114
112
|
end
|
113
|
+
|
114
|
+
def test_set_function_should_generate_correct_date
|
115
|
+
set_date_time = DateSetter.set(0.days.ago, 0.days)
|
116
|
+
|
117
|
+
assert_equal Date.today, set_date_time.to_date
|
118
|
+
end
|
115
119
|
end
|
data/version.rb
CHANGED