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 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 unless reference_date || range || !valid_ranges?
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 < max_date.to_f || min_hour.to_f < max_hour.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
@@ -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 = 0.days.ago
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
@@ -1,3 +1,3 @@
1
1
  class DateSetter
2
- VERSION = "0.0.1"
2
+ VERSION = "1.0.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: 0.0.1
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: