mirror of
https://github.com/TracksApp/tracks.git
synced 2026-01-22 00:36:12 +01:00
Merge branch 'timezones' of git://github.com/epall/tracks into master.
Re-wrote all Date-related code to use Datetimes, created a migration to get rid of all date columns in the database, and got rid of Time.now calls that were not time zone-aware. Lots of time zone goodness!
This commit is contained in:
commit
ba9a9370cc
21 changed files with 111 additions and 78 deletions
|
|
@ -25,7 +25,7 @@ class ProjectsControllerTest < TodoContainerControllerTestBase
|
|||
assert_equal 1, assigns['deferred'].size
|
||||
|
||||
t = p.not_done_todos[0]
|
||||
t.show_from = 1.days.from_now.utc.to_date
|
||||
t.show_from = 1.days.from_now.utc
|
||||
t.save!
|
||||
|
||||
get :show, :id => p.to_param
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ class RecurringTodosControllerTest < ActionController::TestCase
|
|||
new_todo = Todo.find_by_recurring_todo_id 5
|
||||
|
||||
# due date should be the target_date
|
||||
assert_equal Time.utc(target_date.year, target_date.month, target_date.day), new_todo.due
|
||||
assert_equal users(:admin_user).at_midnight(Date.new(target_date.year, target_date.month, target_date.day)), new_todo.due
|
||||
|
||||
# show_from should be nil since now+4.days-10.days is in the past
|
||||
assert_equal nil, new_todo.show_from
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ class TodosControllerTest < Test::Rails::TestCase
|
|||
assert_equal "Call Warren Buffet to find out how much he makes per day", t.description
|
||||
assert_equal "foo, bar", t.tag_list
|
||||
expected = Date.new(2006,11,30)
|
||||
actual = t.due
|
||||
actual = t.due.to_date
|
||||
assert_equal expected, actual, "Expected #{expected.to_s(:db)}, was #{actual.to_s(:db)}"
|
||||
end
|
||||
|
||||
|
|
@ -328,7 +328,7 @@ class TodosControllerTest < Test::Rails::TestCase
|
|||
assert t.active?
|
||||
assert_equal 'test notes', t.notes
|
||||
assert_nil t.show_from
|
||||
assert_equal Date.new(2007,1,2).to_s, t.due.to_s
|
||||
assert_equal Date.new(2007,1,2), t.due.to_date
|
||||
end
|
||||
|
||||
def test_mobile_create_action_redirects_to_mobile_home_page_when_successful
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ class Test::Rails::TestCase < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def next_week
|
||||
1.week.from_now.utc.to_date
|
||||
1.week.from_now.utc
|
||||
end
|
||||
|
||||
# Courtesy of http://habtm.com/articles/2006/02/20/assert-yourself-man-redirecting-with-rjs
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ class PreferenceTest < Test::Rails::TestCase
|
|||
end
|
||||
|
||||
def test_parse_date
|
||||
assert_equal Date.new(2007, 5, 20).to_s, @admin_user.preference.parse_date('20/5/2007').to_s
|
||||
assert_equal @admin_user.at_midnight(Date.new(2007, 5, 20)).to_s, @admin_user.preference.parse_date('20/5/2007').to_s
|
||||
end
|
||||
|
||||
def test_parse_date_returns_nil_if_string_is_empty
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ class ProjectTest < Test::Rails::TestCase
|
|||
def test_deferred_todos
|
||||
assert_equal 1, @timemachine.deferred_todos.size
|
||||
t = @timemachine.not_done_todos[0]
|
||||
t.show_from = 1.days.from_now.utc.to_date
|
||||
t.show_from = 1.days.from_now.utc
|
||||
t.save!
|
||||
assert_equal 2, Project.find(@timemachine.id).deferred_todos.size
|
||||
end
|
||||
|
|
|
|||
|
|
@ -15,13 +15,13 @@ class RecurringTodoTest < Test::Rails::TestCase
|
|||
@in_three_days = Time.now.utc + 3.days
|
||||
@in_four_days = @in_three_days + 1.day # need a day after start_from
|
||||
|
||||
@friday = Time.utc(2008,6,6)
|
||||
@saturday = Time.utc(2008,6,7)
|
||||
@sunday = Time.utc(2008,6,8) # june 8, 2008 was a sunday
|
||||
@monday = Time.utc(2008,6,9)
|
||||
@tuesday = Time.utc(2008,6,10)
|
||||
@wednesday = Time.utc(2008,6,11)
|
||||
@thursday = Time.utc(2008,6,12)
|
||||
@friday = Time.zone.local(2008,6,6)
|
||||
@saturday = Time.zone.local(2008,6,7)
|
||||
@sunday = Time.zone.local(2008,6,8) # june 8, 2008 was a sunday
|
||||
@monday = Time.zone.local(2008,6,9)
|
||||
@tuesday = Time.zone.local(2008,6,10)
|
||||
@wednesday = Time.zone.local(2008,6,11)
|
||||
@thursday = Time.zone.local(2008,6,12)
|
||||
end
|
||||
|
||||
def test_pattern_text
|
||||
|
|
@ -134,19 +134,19 @@ class RecurringTodoTest < Test::Rails::TestCase
|
|||
|
||||
def test_monthly_pattern
|
||||
due_date = @monthly_every_last_friday.get_due_date(@sunday)
|
||||
assert_equal Time.utc(2008,6,27), due_date
|
||||
assert_equal Time.zone.local(2008,6,27), due_date
|
||||
|
||||
friday_is_last_day_of_month = Time.utc(2008,10,31)
|
||||
friday_is_last_day_of_month = Time.zone.local(2008,10,31)
|
||||
due_date = @monthly_every_last_friday.get_due_date(friday_is_last_day_of_month-1.day )
|
||||
assert_equal friday_is_last_day_of_month , due_date
|
||||
|
||||
@monthly_every_third_friday = @monthly_every_last_friday
|
||||
@monthly_every_third_friday.every_other3=3 #third
|
||||
due_date = @monthly_every_last_friday.get_due_date(@sunday) # june 8th 2008
|
||||
assert_equal Time.utc(2008, 6, 20), due_date
|
||||
assert_equal Time.zone.local(2008, 6, 20), due_date
|
||||
# set date past third friday of this month
|
||||
due_date = @monthly_every_last_friday.get_due_date(Time.utc(2008,6,21)) # june 21th 2008
|
||||
assert_equal Time.utc(2008, 8, 15), due_date # every 2 months, so aug
|
||||
due_date = @monthly_every_last_friday.get_due_date(Time.zone.local(2008,6,21)) # june 21th 2008
|
||||
assert_equal Time.zone.local(2008, 8, 15), due_date # every 2 months, so aug
|
||||
|
||||
@monthly = @monthly_every_last_friday
|
||||
@monthly.recurrence_selector=0
|
||||
|
|
@ -157,12 +157,12 @@ class RecurringTodoTest < Test::Rails::TestCase
|
|||
assert_equal @sunday, due_date # june 8th
|
||||
|
||||
due_date = @monthly.get_due_date(@sunday) # june 8th
|
||||
assert_equal Time.utc(2008,8,8), due_date # aug 8th
|
||||
assert_equal Time.zone.local(2008,8,8), due_date # aug 8th
|
||||
end
|
||||
|
||||
def test_yearly_pattern
|
||||
# beginning of same year
|
||||
due_date = @yearly.get_due_date(Time.utc(2008,2,10)) # feb 10th
|
||||
due_date = @yearly.get_due_date(Time.zone.local(2008,2,10)) # feb 10th
|
||||
assert_equal @sunday, due_date # june 8th
|
||||
|
||||
# same month, previous date
|
||||
|
|
@ -173,20 +173,20 @@ class RecurringTodoTest < Test::Rails::TestCase
|
|||
|
||||
# same month, day after
|
||||
due_date = @yearly.get_due_date(@monday) # june 9th
|
||||
assert_equal Time.utc(2009,6,8), due_date # june 8th next year
|
||||
assert_equal Time.zone.local(2009,6,8), due_date # june 8th next year
|
||||
|
||||
@yearly.recurrence_selector = 1
|
||||
@yearly.every_other3 = 2 # second
|
||||
@yearly.every_count = 3 # wednesday
|
||||
# beginning of same year
|
||||
due_date = @yearly.get_due_date(Time.utc(2008,2,10)) # feb 10th
|
||||
assert_equal Time.utc(2008,6,11), due_date # june 11th
|
||||
due_date = @yearly.get_due_date(Time.zone.local(2008,2,10)) # feb 10th
|
||||
assert_equal Time.zone.local(2008,6,11), due_date # june 11th
|
||||
# same month, before second wednesday
|
||||
due_date = @yearly.get_due_date(@saturday) # june 7th
|
||||
assert_equal Time.utc(2008,6,11), due_date # june 11th
|
||||
assert_equal Time.zone.local(2008,6,11), due_date # june 11th
|
||||
# same month, after second wednesday
|
||||
due_date = @yearly.get_due_date(Time.utc(2008,6,12)) # june 7th
|
||||
assert_equal Time.utc(2009,6,10), due_date # june 10th
|
||||
due_date = @yearly.get_due_date(Time.zone.local(2008,6,12)) # june 7th
|
||||
assert_equal Time.zone.local(2009,6,10), due_date # june 10th
|
||||
|
||||
# test handling of nil
|
||||
due_date1 = @yearly.get_due_date(nil)
|
||||
|
|
@ -207,24 +207,24 @@ class RecurringTodoTest < Test::Rails::TestCase
|
|||
due_date = @every_day.get_due_date(@in_four_days)
|
||||
assert_equal @in_four_days+1.day, due_date
|
||||
|
||||
@weekly_every_day.start_from = Time.utc(2020,1,1)
|
||||
assert_equal Time.utc(2020,1,1), @weekly_every_day.get_due_date(nil)
|
||||
assert_equal Time.utc(2020,1,1), @weekly_every_day.get_due_date(Time.utc(2019,10,1))
|
||||
assert_equal Time.utc(2020,1,10), @weekly_every_day.get_due_date(Time.utc(2020,1,9))
|
||||
@weekly_every_day.start_from = Time.zone.local(2020,1,1)
|
||||
assert_equal Time.zone.local(2020,1,1), @weekly_every_day.get_due_date(nil)
|
||||
assert_equal Time.zone.local(2020,1,1), @weekly_every_day.get_due_date(Time.zone.local(2019,10,1))
|
||||
assert_equal Time.zone.local(2020,1,10), @weekly_every_day.get_due_date(Time.zone.local(2020,1,9))
|
||||
|
||||
@monthly_every_last_friday.start_from = Time.utc(2020,1,1)
|
||||
assert_equal Time.utc(2020,1,31), @monthly_every_last_friday.get_due_date(nil) # last friday of jan
|
||||
assert_equal Time.utc(2020,1,31), @monthly_every_last_friday.get_due_date(Time.utc(2019,12,1)) # last friday of jan
|
||||
assert_equal Time.utc(2020,2,28), @monthly_every_last_friday.get_due_date(Time.utc(2020,2,1)) # last friday of feb
|
||||
@monthly_every_last_friday.start_from = Time.zone.local(2020,1,1)
|
||||
assert_equal Time.zone.local(2020,1,31), @monthly_every_last_friday.get_due_date(nil) # last friday of jan
|
||||
assert_equal Time.zone.local(2020,1,31), @monthly_every_last_friday.get_due_date(Time.zone.local(2019,12,1)) # last friday of jan
|
||||
assert_equal Time.zone.local(2020,2,28), @monthly_every_last_friday.get_due_date(Time.zone.local(2020,2,1)) # last friday of feb
|
||||
|
||||
# start from after june 8th 2008
|
||||
@yearly.start_from = Time.utc(2020,6,12)
|
||||
assert_equal Time.utc(2021,6,8), @yearly.get_due_date(nil) # jun 8th next year
|
||||
assert_equal Time.utc(2021,6,8), @yearly.get_due_date(Time.utc(2019,6,1)) # also next year
|
||||
assert_equal Time.utc(2021,6,8), @yearly.get_due_date(Time.utc(2020,6,15)) # also next year
|
||||
@yearly.start_from = Time.zone.local(2020,6,12)
|
||||
assert_equal Time.zone.local(2021,6,8), @yearly.get_due_date(nil) # jun 8th next year
|
||||
assert_equal Time.zone.local(2021,6,8), @yearly.get_due_date(Time.zone.local(2019,6,1)) # also next year
|
||||
assert_equal Time.zone.local(2021,6,8), @yearly.get_due_date(Time.zone.local(2020,6,15)) # also next year
|
||||
|
||||
this_year = Time.now.utc.year
|
||||
@yearly.start_from = Time.utc(this_year+1,6,12)
|
||||
@yearly.start_from = Time.zone.local(this_year+1,6,12)
|
||||
due_date = @yearly.get_due_date(nil)
|
||||
assert_equal due_date.year, this_year+2
|
||||
end
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ class TodoCreateParamsHelperTest < Test::Rails::TestCase
|
|||
end
|
||||
|
||||
def test_show_from_accessor
|
||||
expected_date = Time.now.to_date
|
||||
expected_date = Time.now
|
||||
params = { 'todo' => { 'show_from' => expected_date}}
|
||||
prefs = flexmock()
|
||||
params_helper = TodosController::TodoCreateParamsHelper.new(params, prefs)
|
||||
|
|
@ -26,7 +26,7 @@ class TodoCreateParamsHelperTest < Test::Rails::TestCase
|
|||
end
|
||||
|
||||
def test_due_accessor
|
||||
expected_date = Time.now.to_date
|
||||
expected_date = Time.now
|
||||
params = { 'todo' => { 'due' => expected_date}}
|
||||
prefs = flexmock()
|
||||
params_helper = TodosController::TodoCreateParamsHelper.new(params, prefs)
|
||||
|
|
|
|||
|
|
@ -68,9 +68,8 @@ class TodoTest < Test::Rails::TestCase
|
|||
|
||||
def test_validate_show_from_must_be_a_date_in_the_future
|
||||
t = @not_completed2
|
||||
t[:show_from] = 1.week.ago.to_date # we have to set this via the indexer because show_from=() updates the state
|
||||
t[:show_from] = 1.week.ago # we have to set this via the indexer because show_from=() updates the state
|
||||
# and actual show_from value appropriately based on the date
|
||||
assert_equal 1.week.ago.to_date, t.show_from
|
||||
assert !t.save
|
||||
assert_equal 1, t.errors.count
|
||||
assert_equal "must be a date in the future", t.errors.on(:show_from)
|
||||
|
|
@ -118,7 +117,7 @@ class TodoTest < Test::Rails::TestCase
|
|||
|
||||
def test_activate_also_saves
|
||||
t = @not_completed1
|
||||
t.show_from = 1.week.from_now.to_date
|
||||
t.show_from = 1.week.from_now
|
||||
t.save!
|
||||
assert t.deferred?
|
||||
t.reload
|
||||
|
|
|
|||
|
|
@ -235,7 +235,7 @@ class UserTest < Test::Rails::TestCase
|
|||
|
||||
def test_find_and_activate_deferred_todos_that_are_ready
|
||||
assert_equal 1, @admin_user.deferred_todos.count
|
||||
@admin_user.deferred_todos[0].show_from = @admin_user.time.to_date
|
||||
@admin_user.deferred_todos[0].show_from = Time.now.utc - 5.seconds
|
||||
@admin_user.deferred_todos[0].save
|
||||
@admin_user.deferred_todos.reload
|
||||
@admin_user.deferred_todos.find_and_activate_ready
|
||||
|
|
|
|||
|
|
@ -20,28 +20,28 @@ class TodosHelperTest < Test::Rails::HelperTestCase
|
|||
end
|
||||
|
||||
def test_show_date_in_past
|
||||
date = 3.days.ago.to_date
|
||||
date = 3.days.ago
|
||||
html = show_date(date)
|
||||
formatted_date = format_date(date)
|
||||
assert_equal %Q{<a title="#{formatted_date}"><span class="red">Scheduled to show 3 days ago</span></a> }, html
|
||||
end
|
||||
|
||||
def test_show_date_today
|
||||
date = Time.zone.now.to_date
|
||||
date = Time.zone.now
|
||||
html = show_date(date)
|
||||
formatted_date = format_date(date)
|
||||
assert_equal %Q{<a title="#{formatted_date}"><span class="amber">Show Today</span></a> }, html
|
||||
end
|
||||
|
||||
def test_show_date_tomorrow
|
||||
date = 1.day.from_now.to_date
|
||||
date = 1.day.from_now
|
||||
html = show_date(date)
|
||||
formatted_date = format_date(date)
|
||||
assert_equal %Q{<a title="#{formatted_date}"><span class="amber">Show Tomorrow</span></a> }, html
|
||||
end
|
||||
|
||||
def test_show_date_future
|
||||
date = 10.days.from_now.to_date
|
||||
date = 10.days.from_now
|
||||
html = show_date(date)
|
||||
formatted_date = format_date(date)
|
||||
assert_equal %Q{<a title="#{formatted_date}"><span class="green">Show in 10 days</span></a> }, html
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue