Class: TimeExtensionsTest
- Inherits:
-
Minitest::Test
- Object
- Minitest::Test
- TimeExtensionsTest
- Defined in:
- lib/tests/support/time_extension_test.rb
Instance Method Summary collapse
- #setup ⇒ Object
- #test_add_and_subtract_roundtrip ⇒ Object
-
#test_add_days ⇒ Object
---------- add_days ----------.
- #test_add_days_crosses_month ⇒ Object
- #test_add_days_zero ⇒ Object
- #test_all_day_begin ⇒ Object
- #test_all_day_end ⇒ Object
- #test_all_day_includes_noon ⇒ Object
-
#test_all_day_returns_range ⇒ Object
---------- all_day ----------.
-
#test_at ⇒ Object
---------- at ----------.
- #test_at_preserves_date ⇒ Object
- #test_beginning_and_end_of_today_same_date ⇒ Object
-
#test_beginning_of_day ⇒ Object
---------- beginning_of_day ----------.
- #test_beginning_of_day_preserves_date ⇒ Object
- #test_beginning_of_today ⇒ Object
- #test_closest_future_working_day_from_saturday ⇒ Object
- #test_closest_future_working_day_from_sunday ⇒ Object
-
#test_closest_future_working_day_from_weekday ⇒ Object
---------- closest_future_working_day ----------.
- #test_closest_future_working_day_not_weekend ⇒ Object
-
#test_days_seconds ⇒ Object
---------- days_seconds ----------.
- #test_days_seconds_end_of_day ⇒ Object
- #test_days_seconds_midnight ⇒ Object
-
#test_end_of_day ⇒ Object
---------- end_of_day ----------.
- #test_end_of_day_preserves_date ⇒ Object
- #test_end_of_today ⇒ Object
- #test_start_of_today_equals_beginning_of_today ⇒ Object
-
#test_subtract_days ⇒ Object
---------- subtract_days ----------.
- #test_subtract_days_crosses_month ⇒ Object
- #test_subtract_days_zero ⇒ Object
- #test_today_is_roughly_now ⇒ Object
-
#test_today_is_time ⇒ Object
---------- class methods ----------.
- #test_tomorrow_is_one_day_ahead ⇒ Object
-
#test_with_current_time_preserves_date ⇒ Object
---------- with_current_time ----------.
- #test_with_current_time_uses_current_hours ⇒ Object
- #test_yesterday_is_one_day_behind ⇒ Object
Instance Method Details
#setup ⇒ Object
4 5 6 7 8 9 |
# File 'lib/tests/support/time_extension_test.rb', line 4 def setup @time = Time.new(2026, 6, 15, 14, 30, 45) # Sunday @weekday = Time.new(2026, 6, 16, 9, 0, 0) # Monday @saturday = Time.new(2026, 6, 20, 9, 0, 0) # Saturday @sunday = Time.new(2026, 6, 21, 9, 0, 0) # Sunday end |
#test_add_and_subtract_roundtrip ⇒ Object
121 122 123 |
# File 'lib/tests/support/time_extension_test.rb', line 121 def test_add_and_subtract_roundtrip assert_equal @time, @time.add_days(7).subtract_days(7) end |
#test_add_days ⇒ Object
---------- add_days ----------
89 90 91 92 |
# File 'lib/tests/support/time_extension_test.rb', line 89 def test_add_days result = @time.add_days(3) assert_equal Time.new(2026, 6, 18, 14, 30, 45), result end |
#test_add_days_crosses_month ⇒ Object
98 99 100 101 102 |
# File 'lib/tests/support/time_extension_test.rb', line 98 def test_add_days_crosses_month result = Time.new(2026, 6, 30, 0, 0, 0).add_days(1) assert_equal 7, result.month assert_equal 1, result.day end |
#test_add_days_zero ⇒ Object
94 95 96 |
# File 'lib/tests/support/time_extension_test.rb', line 94 def test_add_days_zero assert_equal @time, @time.add_days(0) end |
#test_all_day_begin ⇒ Object
74 75 76 |
# File 'lib/tests/support/time_extension_test.rb', line 74 def test_all_day_begin assert_equal @time.beginning_of_day, @time.all_day.first end |
#test_all_day_end ⇒ Object
78 79 80 |
# File 'lib/tests/support/time_extension_test.rb', line 78 def test_all_day_end assert_equal @time.end_of_day, @time.all_day.last end |
#test_all_day_includes_noon ⇒ Object
82 83 84 85 |
# File 'lib/tests/support/time_extension_test.rb', line 82 def test_all_day_includes_noon noon = Time.new(2026, 6, 15, 12, 0, 0) assert @time.all_day.include?(noon) end |
#test_all_day_returns_range ⇒ Object
---------- all_day ----------
70 71 72 |
# File 'lib/tests/support/time_extension_test.rb', line 70 def test_all_day_returns_range assert_kind_of Range, @time.all_day end |
#test_at ⇒ Object
---------- at ----------
56 57 58 59 |
# File 'lib/tests/support/time_extension_test.rb', line 56 def test_at result = @time.at(10, 20, 30) assert_equal Time.new(2026, 6, 15, 10, 20, 30), result end |
#test_at_preserves_date ⇒ Object
61 62 63 64 65 66 |
# File 'lib/tests/support/time_extension_test.rb', line 61 def test_at_preserves_date result = @time.at(0, 0, 0) assert_equal @time.year, result.year assert_equal @time.month, result.month assert_equal @time.day, result.day end |
#test_beginning_and_end_of_today_same_date ⇒ Object
203 204 205 206 207 208 209 |
# File 'lib/tests/support/time_extension_test.rb', line 203 def test_beginning_and_end_of_today_same_date b = Time.beginning_of_today e = Time.end_of_today assert_equal b.year, e.year assert_equal b.month, e.month assert_equal b.day, e.day end |
#test_beginning_of_day ⇒ Object
---------- beginning_of_day ----------
30 31 32 33 |
# File 'lib/tests/support/time_extension_test.rb', line 30 def test_beginning_of_day result = @time.beginning_of_day assert_equal Time.new(2026, 6, 15, 0, 0, 0), result end |
#test_beginning_of_day_preserves_date ⇒ Object
35 36 37 38 39 |
# File 'lib/tests/support/time_extension_test.rb', line 35 def test_beginning_of_day_preserves_date assert_equal @time.year, @time.beginning_of_day.year assert_equal @time.month, @time.beginning_of_day.month assert_equal @time.day, @time.beginning_of_day.day end |
#test_beginning_of_today ⇒ Object
183 184 185 186 187 188 189 |
# File 'lib/tests/support/time_extension_test.rb', line 183 def test_beginning_of_today t = Time.beginning_of_today assert_equal 0, t.hour assert_equal 0, t.min assert_equal 0, t.sec assert_equal Time.now.day, t.day end |
#test_closest_future_working_day_from_saturday ⇒ Object
132 133 134 135 136 |
# File 'lib/tests/support/time_extension_test.rb', line 132 def test_closest_future_working_day_from_saturday result = @saturday.closest_future_working_day assert_equal 1, result.wday # Monday assert_equal 22, result.day end |
#test_closest_future_working_day_from_sunday ⇒ Object
138 139 140 141 142 |
# File 'lib/tests/support/time_extension_test.rb', line 138 def test_closest_future_working_day_from_sunday result = @sunday.closest_future_working_day assert_equal 1, result.wday # Monday assert_equal 22, result.day end |
#test_closest_future_working_day_from_weekday ⇒ Object
---------- closest_future_working_day ----------
127 128 129 130 |
# File 'lib/tests/support/time_extension_test.rb', line 127 def test_closest_future_working_day_from_weekday # Monday — already a working day, should not advance assert_equal @weekday, @weekday.closest_future_working_day end |
#test_closest_future_working_day_not_weekend ⇒ Object
144 145 146 147 |
# File 'lib/tests/support/time_extension_test.rb', line 144 def test_closest_future_working_day_not_weekend result = @saturday.closest_future_working_day refute [0, 6].include?(result.wday) end |
#test_days_seconds ⇒ Object
---------- days_seconds ----------
13 14 15 16 |
# File 'lib/tests/support/time_extension_test.rb', line 13 def test_days_seconds t = Time.new(2026, 6, 15, 1, 2, 3) assert_equal 1 * 3600 + 2 * 60 + 3, t.days_seconds end |
#test_days_seconds_end_of_day ⇒ Object
23 24 25 26 |
# File 'lib/tests/support/time_extension_test.rb', line 23 def test_days_seconds_end_of_day t = Time.new(2026, 6, 15, 23, 59, 59) assert_equal 23 * 3600 + 59 * 60 + 59, t.days_seconds end |
#test_days_seconds_midnight ⇒ Object
18 19 20 21 |
# File 'lib/tests/support/time_extension_test.rb', line 18 def test_days_seconds_midnight t = Time.new(2026, 6, 15, 0, 0, 0) assert_equal 0, t.days_seconds end |
#test_end_of_day ⇒ Object
---------- end_of_day ----------
43 44 45 46 |
# File 'lib/tests/support/time_extension_test.rb', line 43 def test_end_of_day result = @time.end_of_day assert_equal Time.new(2026, 6, 15, 23, 59, 59), result end |
#test_end_of_day_preserves_date ⇒ Object
48 49 50 51 52 |
# File 'lib/tests/support/time_extension_test.rb', line 48 def test_end_of_day_preserves_date assert_equal @time.year, @time.end_of_day.year assert_equal @time.month, @time.end_of_day.month assert_equal @time.day, @time.end_of_day.day end |
#test_end_of_today ⇒ Object
191 192 193 194 195 196 197 |
# File 'lib/tests/support/time_extension_test.rb', line 191 def test_end_of_today t = Time.end_of_today assert_equal 23, t.hour assert_equal 59, t.min assert_equal 59, t.sec assert_equal Time.now.day, t.day end |
#test_start_of_today_equals_beginning_of_today ⇒ Object
199 200 201 |
# File 'lib/tests/support/time_extension_test.rb', line 199 def test_start_of_today_equals_beginning_of_today assert_equal Time.beginning_of_today, Time.start_of_today end |
#test_subtract_days ⇒ Object
---------- subtract_days ----------
106 107 108 109 |
# File 'lib/tests/support/time_extension_test.rb', line 106 def test_subtract_days result = @time.subtract_days(5) assert_equal Time.new(2026, 6, 10, 14, 30, 45), result end |
#test_subtract_days_crosses_month ⇒ Object
115 116 117 118 119 |
# File 'lib/tests/support/time_extension_test.rb', line 115 def test_subtract_days_crosses_month result = Time.new(2026, 6, 1, 0, 0, 0).subtract_days(1) assert_equal 5, result.month assert_equal 31, result.day end |
#test_subtract_days_zero ⇒ Object
111 112 113 |
# File 'lib/tests/support/time_extension_test.rb', line 111 def test_subtract_days_zero assert_equal @time, @time.subtract_days(0) end |
#test_today_is_roughly_now ⇒ Object
171 172 173 |
# File 'lib/tests/support/time_extension_test.rb', line 171 def test_today_is_roughly_now assert_in_delta Time.now.to_i, Time.today.to_i, 2 end |
#test_today_is_time ⇒ Object
---------- class methods ----------
167 168 169 |
# File 'lib/tests/support/time_extension_test.rb', line 167 def test_today_is_time assert_kind_of Time, Time.today end |
#test_tomorrow_is_one_day_ahead ⇒ Object
175 176 177 |
# File 'lib/tests/support/time_extension_test.rb', line 175 def test_tomorrow_is_one_day_ahead assert_in_delta Time.today.to_i + 86_400, Time.tomorrow.to_i, 2 end |
#test_with_current_time_preserves_date ⇒ Object
---------- with_current_time ----------
151 152 153 154 155 156 |
# File 'lib/tests/support/time_extension_test.rb', line 151 def test_with_current_time_preserves_date result = @time.with_current_time assert_equal @time.year, result.year assert_equal @time.month, result.month assert_equal @time.day, result.day end |
#test_with_current_time_uses_current_hours ⇒ Object
158 159 160 161 162 163 |
# File 'lib/tests/support/time_extension_test.rb', line 158 def test_with_current_time_uses_current_hours result = @time.with_current_time now = Time.now assert_in_delta now.hour, result.hour, 1 assert_in_delta now.min, result.min, 1 end |