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 @@
<%= radio_button_tag('recurring_todo[monthly_selector]', 'monthly_every_x_day', true)%> Day <%=
- text_field_tag('recurring_todo[monthly_every_x_day]', Time.now.mday, {"size" => 3, "tabindex" => 9}) %> on every <%=
+ text_field_tag('recurring_todo[monthly_every_x_day]', Time.zone.now.mday, {"size" => 3, "tabindex" => 9}) %> on every <%=
text_field_tag('recurring_todo[monthly_every_x_month]', 1, {"size" => 3, "tabindex" => 10}) %> month
<%= radio_button_tag('recurring_todo[monthly_selector]', 'monthly_every_xth_day')%> The <%=
select_tag('recurring_todo[monthly_every_xth_day]', options_for_select(@xth_day), {}) %> <%=
- select_tag('recurring_todo[monthly_day_of_week]' , options_for_select(@days_of_week, Time.now.wday), {}) %> of every <%=
+ select_tag('recurring_todo[monthly_day_of_week]' , options_for_select(@days_of_week, Time.zone.now.wday), {}) %> of every <%=
text_field_tag('recurring_todo[monthly_every_x_month2]', 1, {"size" => 3, "tabindex" => 11}) %> month
<%= radio_button_tag('recurring_todo[yearly_selector]', 'yearly_every_x_day', true)%> Every <%=
- select_tag('recurring_todo[yearly_month_of_year]', options_for_select(@months_of_year, Time.now.month), {}) %> <%=
- text_field_tag('recurring_todo[yearly_every_x_day]', Time.now.day, "size" => 3, "tabindex" => 9) %>
+ select_tag('recurring_todo[yearly_month_of_year]', options_for_select(@months_of_year, Time.zone.now.month), {}) %> <%=
+ text_field_tag('recurring_todo[yearly_every_x_day]', Time.zone.now.day, "size" => 3, "tabindex" => 9) %>
<%= radio_button_tag('recurring_todo[yearly_selector]', 'yearly_every_xth_day')%> The <%=
select_tag('recurring_todo[yearly_every_xth_day]', options_for_select(@xth_day), {}) %> <%=
- select_tag('recurring_todo[yearly_day_of_week]', options_for_select(@days_of_week, Time.now.wday), {}) %> of <%=
- select_tag('recurring_todo[yearly_month_of_year2]', options_for_select(@months_of_year, Time.now.month), {}) %>
+ select_tag('recurring_todo[yearly_day_of_week]', options_for_select(@days_of_week, Time.zone.now.wday), {}) %> of <%=
+ select_tag('recurring_todo[yearly_month_of_year2]', options_for_select(@months_of_year, Time.zone.now.month), {}) %>
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