aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/core_ext/date_ext_test.rb
diff options
context:
space:
mode:
authorPan Thomakos <pan.thomakos@gmail.com>2012-07-10 17:10:23 -0700
committerPan Thomakos <pan.thomakos@gmail.com>2012-08-04 16:13:03 -0700
commitb530fd1083c0dc71606e13c30bf0b713ad416213 (patch)
tree6e708492caa7539db109a948edabda49f547671f /activesupport/test/core_ext/date_ext_test.rb
parentc5807728d52c98b76e9badd95093471044b98d07 (diff)
downloadrails-b530fd1083c0dc71606e13c30bf0b713ad416213.tar.gz
rails-b530fd1083c0dc71606e13c30bf0b713ad416213.tar.bz2
rails-b530fd1083c0dc71606e13c30bf0b713ad416213.zip
Refactored common date and time calculations.
* Added the `DateAndTime::Calculations` module that is included in Time and Date. It houses common calculations to reduce duplicated code. * Simplified and cleaned-up the calculation code. * Removed duplication in tests by adding a behavior module for shared tests. I also added some missing tests.
Diffstat (limited to 'activesupport/test/core_ext/date_ext_test.rb')
-rw-r--r--activesupport/test/core_ext/date_ext_test.rb173
1 files changed, 15 insertions, 158 deletions
diff --git a/activesupport/test/core_ext/date_ext_test.rb b/activesupport/test/core_ext/date_ext_test.rb
index 088b74a29a..7ae1f67785 100644
--- a/activesupport/test/core_ext/date_ext_test.rb
+++ b/activesupport/test/core_ext/date_ext_test.rb
@@ -1,7 +1,22 @@
require 'abstract_unit'
require 'active_support/time'
+require 'core_ext/date_and_time_behavior'
class DateExtCalculationsTest < ActiveSupport::TestCase
+ def date_time_init(year,month,day,*args)
+ Date.new(year,month,day)
+ end
+
+ include DateAndTimeBehavior
+
+ def test_yesterday_in_calendar_reform
+ assert_equal Date.new(1582,10,4), Date.new(1582,10,15).yesterday
+ end
+
+ def test_tomorrow_in_calendar_reform
+ assert_equal Date.new(1582,10,15), Date.new(1582,10,4).tomorrow
+ end
+
def test_to_s
date = Date.new(2005, 2, 21)
assert_equal "2005-02-21", date.to_s
@@ -46,22 +61,6 @@ class DateExtCalculationsTest < ActiveSupport::TestCase
assert_equal Date.new(2005,6,22), Date.new(2005,2,22).change(:month => 6)
end
- def test_beginning_of_week
- assert_equal Date.new(2005,1,31), Date.new(2005,2,4).beginning_of_week
- assert_equal Date.new(2005,11,28), Date.new(2005,11,28).beginning_of_week #monday
- assert_equal Date.new(2005,11,28), Date.new(2005,11,29).beginning_of_week #tuesday
- assert_equal Date.new(2005,11,28), Date.new(2005,11,30).beginning_of_week #wednesday
- assert_equal Date.new(2005,11,28), Date.new(2005,12,01).beginning_of_week #thursday
- assert_equal Date.new(2005,11,28), Date.new(2005,12,02).beginning_of_week #friday
- assert_equal Date.new(2005,11,28), Date.new(2005,12,03).beginning_of_week #saturday
- assert_equal Date.new(2005,11,28), Date.new(2005,12,04).beginning_of_week #sunday
- end
-
- def test_monday
- assert_equal Date.new(2005,11,28), Date.new(2005,11,28).monday
- assert_equal Date.new(2005,11,28), Date.new(2005,12,01).monday
- end
-
def test_sunday
assert_equal Date.new(2008,3,2), Date.new(2008,3,02).sunday
assert_equal Date.new(2008,3,2), Date.new(2008,2,29).sunday
@@ -71,41 +70,10 @@ class DateExtCalculationsTest < ActiveSupport::TestCase
assert_equal Date.new(1582,10,1), Date.new(1582,10,15).beginning_of_week #friday
end
- def test_beginning_of_month
- assert_equal Date.new(2005,2,1), Date.new(2005,2,22).beginning_of_month
- end
-
- def test_beginning_of_quarter
- assert_equal Date.new(2005,1,1), Date.new(2005,2,15).beginning_of_quarter
- assert_equal Date.new(2005,1,1), Date.new(2005,1,1).beginning_of_quarter
- assert_equal Date.new(2005,10,1), Date.new(2005,12,31).beginning_of_quarter
- assert_equal Date.new(2005,4,1), Date.new(2005,6,30).beginning_of_quarter
- end
-
- def test_end_of_week
- assert_equal Date.new(2008,2,24), Date.new(2008,2,22).end_of_week
- assert_equal Date.new(2008,3,2), Date.new(2008,2,25).end_of_week #monday
- assert_equal Date.new(2008,3,2), Date.new(2008,2,26).end_of_week #tuesday
- assert_equal Date.new(2008,3,2), Date.new(2008,2,27).end_of_week #wednesday
- assert_equal Date.new(2008,3,2), Date.new(2008,2,28).end_of_week #thursday
- assert_equal Date.new(2008,3,2), Date.new(2008,2,29).end_of_week #friday
- assert_equal Date.new(2008,3,2), Date.new(2008,3,01).end_of_week #saturday
- assert_equal Date.new(2008,3,2), Date.new(2008,3,02).end_of_week #sunday
- end
-
def test_end_of_week_in_calendar_reform
assert_equal Date.new(1582,10,17), Date.new(1582,10,4).end_of_week #thursday
end
- def test_end_of_quarter
- assert_equal Date.new(2008,3,31), Date.new(2008,2,15).end_of_quarter
- assert_equal Date.new(2008,3,31), Date.new(2008,3,31).end_of_quarter
- assert_equal Date.new(2008,12,31), Date.new(2008,10,8).end_of_quarter
- assert_equal Date.new(2008,6,30), Date.new(2008,4,14).end_of_quarter
- assert_equal Date.new(2008,6,30), Date.new(2008,5,31).end_of_quarter
- assert_equal Date.new(2008,9,30), Date.new(2008,8,21).end_of_quarter
- end
-
def test_end_of_year
assert_equal Date.new(2008,12,31).to_s, Date.new(2008,2,22).end_of_year.to_s
end
@@ -116,57 +84,6 @@ class DateExtCalculationsTest < ActiveSupport::TestCase
assert_equal Date.new(2005,4,30), Date.new(2005,4,20).end_of_month
end
- def test_beginning_of_year
- assert_equal Date.new(2005,1,1).to_s, Date.new(2005,2,22).beginning_of_year.to_s
- end
-
- def test_weeks_ago
- assert_equal Date.new(2005,5,10), Date.new(2005,5,17).weeks_ago(1)
- assert_equal Date.new(2005,5,10), Date.new(2005,5,24).weeks_ago(2)
- assert_equal Date.new(2005,5,10), Date.new(2005,5,31).weeks_ago(3)
- assert_equal Date.new(2005,5,10), Date.new(2005,6,7).weeks_ago(4)
- assert_equal Date.new(2006,12,31), Date.new(2007,2,4).weeks_ago(5)
- end
-
- def test_months_ago
- assert_equal Date.new(2005,5,5), Date.new(2005,6,5).months_ago(1)
- assert_equal Date.new(2004,11,5), Date.new(2005,6,5).months_ago(7)
- assert_equal Date.new(2004,12,5), Date.new(2005,6,5).months_ago(6)
- assert_equal Date.new(2004,6,5), Date.new(2005,6,5).months_ago(12)
- assert_equal Date.new(2003,6,5), Date.new(2005,6,5).months_ago(24)
- end
-
- def test_months_since
- assert_equal Date.new(2005,7,5), Date.new(2005,6,5).months_since(1)
- assert_equal Date.new(2006,1,5), Date.new(2005,12,5).months_since(1)
- assert_equal Date.new(2005,12,5), Date.new(2005,6,5).months_since(6)
- assert_equal Date.new(2006,6,5), Date.new(2005,12,5).months_since(6)
- assert_equal Date.new(2006,1,5), Date.new(2005,6,5).months_since(7)
- assert_equal Date.new(2006,6,5), Date.new(2005,6,5).months_since(12)
- assert_equal Date.new(2007,6,5), Date.new(2005,6,5).months_since(24)
- assert_equal Date.new(2005,4,30), Date.new(2005,3,31).months_since(1)
- assert_equal Date.new(2005,2,28), Date.new(2005,1,29).months_since(1)
- assert_equal Date.new(2005,2,28), Date.new(2005,1,30).months_since(1)
- assert_equal Date.new(2005,2,28), Date.new(2005,1,31).months_since(1)
- end
-
- def test_years_ago
- assert_equal Date.new(2004,6,5), Date.new(2005,6,5).years_ago(1)
- assert_equal Date.new(1998,6,5), Date.new(2005,6,5).years_ago(7)
- assert_equal Date.new(2003,2,28), Date.new(2004,2,29).years_ago(1) # 1 year ago from leap day
- end
-
- def test_years_since
- assert_equal Date.new(2006,6,5), Date.new(2005,6,5).years_since(1)
- assert_equal Date.new(2012,6,5), Date.new(2005,6,5).years_since(7)
- assert_equal Date.new(2182,6,5), Date.new(2005,6,5).years_since(177)
- assert_equal Date.new(2005,2,28), Date.new(2004,2,29).years_since(1) # 1 year since leap day
- end
-
- def test_prev_year
- assert_equal Date.new(2004,6,5), Date.new(2005,6,5).prev_year
- end
-
def test_prev_year_in_leap_years
assert_equal Date.new(1999,2,28), Date.new(2000,2,29).prev_year
end
@@ -187,10 +104,6 @@ class DateExtCalculationsTest < ActiveSupport::TestCase
assert_equal Date.new(1582,10,4), Date.new(1583,10,14).last_year
end
- def test_next_year
- assert_equal Date.new(2006,6,5), Date.new(2005,6,5).next_year
- end
-
def test_next_year_in_leap_years
assert_equal Date.new(2001,2,28), Date.new(2000,2,29).next_year
end
@@ -199,24 +112,6 @@ class DateExtCalculationsTest < ActiveSupport::TestCase
assert_equal Date.new(1582,10,4), Date.new(1581,10,10).next_year
end
- def test_yesterday
- assert_equal Date.new(2005,2,21), Date.new(2005,2,22).yesterday
- assert_equal Date.new(2005,2,28), Date.new(2005,3,2).yesterday.yesterday
- end
-
- def test_yesterday_in_calendar_reform
- assert_equal Date.new(1582,10,4), Date.new(1582,10,15).yesterday
- end
-
- def test_tomorrow
- assert_equal Date.new(2005,2,23), Date.new(2005,2,22).tomorrow
- assert_equal Date.new(2005,3,2), Date.new(2005,2,28).tomorrow.tomorrow
- end
-
- def test_tomorrow_in_calendar_reform
- assert_equal Date.new(1582,10,15), Date.new(1582,10,4).tomorrow
- end
-
def test_advance
assert_equal Date.new(2006,2,28), Date.new(2005,2,28).advance(:years => 1)
assert_equal Date.new(2005,6,28), Date.new(2005,2,28).advance(:months => 4)
@@ -249,14 +144,6 @@ class DateExtCalculationsTest < ActiveSupport::TestCase
end
end
- def test_prev_week
- assert_equal Date.new(2005,5,9), Date.new(2005,5,17).prev_week
- assert_equal Date.new(2006,12,25), Date.new(2007,1,7).prev_week
- assert_equal Date.new(2010,2,12), Date.new(2010,2,19).prev_week(:friday)
- assert_equal Date.new(2010,2,13), Date.new(2010,2,19).prev_week(:saturday)
- assert_equal Date.new(2010,2,27), Date.new(2010,3,4).prev_week(:saturday)
- end
-
def test_last_week
assert_equal Date.new(2005,5,9), Date.new(2005,5,17).last_week
assert_equal Date.new(2006,12,25), Date.new(2007,1,7).last_week
@@ -265,38 +152,15 @@ class DateExtCalculationsTest < ActiveSupport::TestCase
assert_equal Date.new(2010,2,27), Date.new(2010,3,4).last_week(:saturday)
end
- def test_next_week
- assert_equal Date.new(2005,2,28), Date.new(2005,2,22).next_week
- assert_equal Date.new(2005,3,4), Date.new(2005,2,22).next_week(:friday)
- assert_equal Date.new(2006,10,30), Date.new(2006,10,23).next_week
- assert_equal Date.new(2006,11,1), Date.new(2006,10,23).next_week(:wednesday)
- end
-
def test_next_week_in_calendar_reform
assert_equal Date.new(1582,10,15), Date.new(1582,9,30).next_week(:friday)
assert_equal Date.new(1582,10,18), Date.new(1582,10,4).next_week
end
- def test_next_month_on_31st
- assert_equal Date.new(2005, 9, 30), Date.new(2005, 8, 31).next_month
- end
-
- def test_prev_month_on_31st
- assert_equal Date.new(2004, 2, 29), Date.new(2004, 3, 31).prev_month
- end
-
def test_last_month_on_31st
assert_equal Date.new(2004, 2, 29), Date.new(2004, 3, 31).last_month
end
- def test_next_quarter_on_31st
- assert_equal Date.new(2005, 11, 30), Date.new(2005, 8, 31).next_quarter
- end
-
- def test_prev_quarter_on_31st
- assert_equal Date.new(2004, 2, 29), Date.new(2004, 5, 31).prev_quarter
- end
-
def test_last_quarter_on_31st
assert_equal Date.new(2004, 2, 29), Date.new(2004, 5, 31).last_quarter
end
@@ -420,13 +284,6 @@ class DateExtCalculationsTest < ActiveSupport::TestCase
end
end
- def test_today
- Date.stubs(:current).returns(Date.new(2000, 1, 1))
- assert_equal false, Date.new(1999, 12, 31).today?
- assert_equal true, Date.new(2000,1,1).today?
- assert_equal false, Date.new(2000,1,2).today?
- end
-
def test_past
Date.stubs(:current).returns(Date.new(2000, 1, 1))
assert_equal true, Date.new(1999, 12, 31).past?