DateSetter 0.0.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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