From 2c3b3d9d69a2d57cccf917e1b05bf9209bb4b69d Mon Sep 17 00:00:00 2001 From: Eric Allen Date: Sat, 6 Sep 2008 17:33:43 -0700 Subject: [PATCH] Fixed bug where todos got pulled out of tickler too early if user's timezone was behind UTC. --- app/models/user.rb | 3 +-- spec/models/user_spec.rb | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index b49db26c..9a61d87b 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -71,8 +71,7 @@ class User < ActiveRecord::Base :conditions => [ 'state = ?', 'deferred' ], :order => 'show_from ASC, todos.created_at DESC' do def find_and_activate_ready - # assumes that active record uses :utc to store datetime in db - find(:all, :conditions => ['show_from <= ?', Time.now.utc ]).collect { |t| t.activate! } + find(:all, :conditions => ['show_from <= ?', proxy_owner.date ]).collect { |t| t.activate! } end end has_many :completed_todos, diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 7f915fbd..25176c83 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -178,4 +178,19 @@ describe User do @user.remember_token_expires_at.should be_between(before, after) end end + + it "should not activate todos that are showing when UTC is tomorrow" do + context = Context.create(:name => 'a context') + user = User.create(:login => 'user7', :password => 'foobar', :password_confirmation => 'foobar') + user.save! + user.create_preference + user.preference.update_attribute('time_zone', 'Pacific Time (US & Canada)') + Time.stub!(:now).and_return(Time.new.end_of_day - 20.minutes) + todo = user.todos.build(:description => 'test task', :context => context, :show_from => user.date + 1) + todo.save! + + user.deferred_todos.find_and_activate_ready + user = User.find(user.id) + user.deferred_todos.should include(todo) + end end