diff --git a/app/controllers/application.rb b/app/controllers/application.rb index 5a9a6fa9..df939fa9 100644 --- a/app/controllers/application.rb +++ b/app/controllers/application.rb @@ -173,7 +173,7 @@ class ApplicationController < ActionController::Base if show_from_date.nil? todo.show_from=nil else - todo.show_from = show_from_date < Time.now.utc ? nil : show_from_date + todo.show_from = show_from_date < Time.zone.now ? nil : show_from_date end saved = todo.save diff --git a/app/models/project.rb b/app/models/project.rb index de0ad2c6..396d49cc 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -16,7 +16,7 @@ class Project < ActiveRecord::Base state :active state :hidden, :enter => :hide_todos, :exit => :unhide_todos - state :completed, :enter => Proc.new { |p| p.completed_at = Time.now.utc }, :exit => Proc.new { |p| p.completed_at = nil } + state :completed, :enter => Proc.new { |p| p.completed_at = Time.zone.now }, :exit => Proc.new { |p| p.completed_at = nil } event :activate do transitions :to => :active, :from => [:hidden, :completed] diff --git a/app/models/recurring_todo.rb b/app/models/recurring_todo.rb index e39a15e3..86b24dae 100644 --- a/app/models/recurring_todo.rb +++ b/app/models/recurring_todo.rb @@ -12,7 +12,7 @@ class RecurringTodo < ActiveRecord::Base t[:show_from], t.completed_at = nil, nil t.occurences_count = 0 } - state :completed, :enter => Proc.new { |t| t.completed_at = Time.now.utc }, :exit => Proc.new { |t| t.completed_at = nil } + state :completed, :enter => Proc.new { |t| t.completed_at = Time.zone.now }, :exit => Proc.new { |t| t.completed_at = nil } validates_presence_of :description validates_length_of :description, :maximum => 100 @@ -243,7 +243,7 @@ class RecurringTodo < ActiveRecord::Base if self.recurrence_selector == 0 return self.every_other2 else - return Time.now.month + return Time.zone.now.month end end @@ -257,7 +257,7 @@ class RecurringTodo < ActiveRecord::Base if self.recurrence_selector == 1 return self.every_other2 else - return Time.now.month + return Time.zone.now.month end end @@ -397,7 +397,7 @@ class RecurringTodo < ActiveRecord::Base # determine start if previous.nil? - start = self.start_from.nil? ? Time.now.utc : self.start_from + start = self.start_from.nil? ? Time.zone.now : self.start_from else # use the next day start = previous + 1.day @@ -429,7 +429,7 @@ class RecurringTodo < ActiveRecord::Base def get_weekly_date(previous) # determine start if previous == nil - start = self.start_from.nil? ? Time.now.utc : self.start_from + start = self.start_from.nil? ? Time.zone.now : self.start_from else start = previous + 1.day if start.wday() == 0 @@ -474,7 +474,7 @@ class RecurringTodo < ActiveRecord::Base start += n.months # go back to day end - return Time.utc(start.year, start.month, day) + return Time.zone.local(start.year, start.month, day) when 1 # relative weekday of a month the_next = get_xth_day_of_month(self.every_other3, self.every_count, start.month, start.year) @@ -496,14 +496,14 @@ class RecurringTodo < ActiveRecord::Base def get_xth_day_of_month(x, weekday, month, year) if x == 5 # last -> count backwards - last_day = Time.utc(year, month, Time.days_in_month(month)) + last_day = Time.zone.local(year, month, Time.days_in_month(month)) while last_day.wday != weekday last_day -= 1.day end return last_day else # 1-4th -> count upwards - start = Time.utc(year,month,1) + start = Time.zone.local(year,month,1) n = x while n > 0 while start.wday() != weekday @@ -526,14 +526,14 @@ class RecurringTodo < ActiveRecord::Base when 0 # specific day of a specific month # if there is no next month n in this year, search in next year if start.month >= month - start = Time.utc(start.year+1, month, 1) if start.day >= day - start = Time.utc(start.year, month, 1) if start.day <= day + start = Time.zone.local(start.year+1, month, 1) if start.day >= day + start = Time.zone.local(start.year, month, 1) if start.day <= day end - return Time.utc(start.year, month, day) + return Time.zone.local(start.year, month, day) when 1 # relative weekday of a specific month # if there is no next month n in this year, search in next year - the_next = start.month > month ? Time.utc(start.year+1, month, 1) : start + the_next = start.month > month ? Time.zone.local(start.year+1, month, 1) : start # get the xth day of the month the_next = get_xth_day_of_month(self.every_other3, self.every_count, month, the_next.year) @@ -602,7 +602,7 @@ class RecurringTodo < ActiveRecord::Base def determine_start(previous) if previous.nil? - start = self.start_from.nil? ? Time.now.utc : self.start_from + start = self.start_from.nil? ? Time.zone.now : self.start_from else start = previous diff --git a/app/models/todo.rb b/app/models/todo.rb index 6f70e664..8c99c1fb 100644 --- a/app/models/todo.rb +++ b/app/models/todo.rb @@ -13,7 +13,7 @@ class Todo < ActiveRecord::Base # of state completed is not run, see #679 state :active, :enter => Proc.new { |t| t[:show_from], t.completed_at = nil, nil } state :project_hidden - state :completed, :enter => Proc.new { |t| t.completed_at = Time.now.utc }, :exit => Proc.new { |t| t.completed_at = nil } + state :completed, :enter => Proc.new { |t| t.completed_at = Time.zone.now }, :exit => Proc.new { |t| t.completed_at = nil } state :deferred event :defer do diff --git a/app/models/user.rb b/app/models/user.rb index 702b5c62..0e8df5c4 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -71,7 +71,7 @@ class User < ActiveRecord::Base :conditions => [ 'state = ?', 'deferred' ], :order => 'show_from ASC, todos.created_at DESC' do def find_and_activate_ready - find(:all, :conditions => ['show_from <= ?', Time.now ]).collect { |t| t.activate! } + find(:all, :conditions => ['show_from <= ?', Time.zone.now ]).collect { |t| t.activate! } end end has_many :completed_todos, diff --git a/app/views/recurring_todos/_recurring_todo_form.erb b/app/views/recurring_todos/_recurring_todo_form.erb index 4a767661..a9709e45 100644 --- a/app/views/recurring_todos/_recurring_todo_form.erb +++ b/app/views/recurring_todos/_recurring_todo_form.erb @@ -101,22 +101,22 @@

diff --git a/spec/models/todo_spec.rb b/spec/models/todo_spec.rb index 410860a1..5cc542f0 100644 --- a/spec/models/todo_spec.rb +++ b/spec/models/todo_spec.rb @@ -10,7 +10,7 @@ describe Todo do def create_todo(attributes={}) todo = Todo.new(valid_attributes(attributes)) - todo.stub!(:user).and_return(mock_model(User, :date => Time.now)) + todo.stub!(:user).and_return(mock_model(User, :date => Time.zone.now)) todo.save! todo end @@ -32,7 +32,7 @@ describe Todo do it 'ensures that show_from is a date in the future' do todo = Todo.new(valid_attributes) - todo.stub!(:user).and_return(mock_model(User, :date => Time.now)) + todo.stub!(:user).and_return(mock_model(User, :date => Time.zone.now)) todo.show_from = 3.days.ago todo.should have(1).error_on(:show_from) end diff --git a/test/functional/recurring_todos_controller_test.rb b/test/functional/recurring_todos_controller_test.rb index a1e40b77..e9485c5b 100644 --- a/test/functional/recurring_todos_controller_test.rb +++ b/test/functional/recurring_todos_controller_test.rb @@ -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 diff --git a/test/unit/recurring_todo_test.rb b/test/unit/recurring_todo_test.rb index b3982d4e..bd256eba 100644 --- a/test/unit/recurring_todo_test.rb +++ b/test/unit/recurring_todo_test.rb @@ -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 diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index 7f48861c..efadc277 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -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 = Time.now - 5.seconds + @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