do not compare at_midnight in different timezones.

Use localtime to make sure both dates are in the
same timezone
This commit is contained in:
Reinier Balt 2015-04-13 15:33:22 +02:00
parent 1dc21daef2
commit d08ffb3806
3 changed files with 11 additions and 11 deletions

View file

@ -1051,7 +1051,7 @@ end
if recurring_todo.todos.active.count == 0
# check for next todo either from the due date or the show_from date
date_to_check = todo.due.nil? ? todo.show_from : todo.due
date_to_check = todo.due.nil? ? todo.show_from.localtime : todo.due.localtime
# if both due and show_from are nil, check for a next todo from now
date_to_check = Time.zone.now if date_to_check.nil?

View file

@ -93,7 +93,7 @@ module RecurringTodos
# TODO: recheck if future rails versions have this problem too
start = Time.utc(start.year, start.month, start.day)+n.months
end
Time.zone.local(start.year, start.month, every_x_day)
Time.zone.local(start.year, start.month, every_x_day).localtime.at_midnight
end
def find_relative_day_of_month(start, n)

View file

@ -740,14 +740,14 @@ class TodosControllerTest < ActionController::TestCase
# locate the new todo in tickler
new_todo = Todo.where(:recurring_todo_id => recurring_todo_1.id, :state => 'deferred').first
assert !new_todo.nil?, "the todo should be in the tickler"
refute new_todo.nil?, "the todo should be in the tickler"
assert_equal "Call Bill Gates every day", new_todo.description
assert_not_equal todo_1.id, new_todo.id, "check that the new todo is not the same as todo_1"
assert !new_todo.show_from.nil?, "check that the new_todo is in the tickler to show next month"
refute new_todo.show_from.nil?, "check that the new_todo is in the tickler to show next month"
# do not use today here. It somehow gets messed up with the timezone calculation.
next_month = (Time.zone.now + 1.month).at_midnight
next_month = (today + 1.month).localtime.at_midnight
assert_equal next_month.utc.to_date.to_s(:db), new_todo.show_from.utc.to_date.to_s(:db)
end