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 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: