From 08b267741b456dae8954972d44b3942e0ba0456f Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Fri, 16 Jan 2009 16:40:50 -0800 Subject: [PATCH] Rate#for should handle invalid users. #1920 --- app/models/rate.rb | 5 +---- spec/models/rate_spec.rb | 6 ++++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/models/rate.rb b/app/models/rate.rb index ec9d5e3..9db4aab 100644 --- a/app/models/rate.rb +++ b/app/models/rate.rb @@ -26,6 +26,7 @@ class Rate < ActiveRecord::Base # API to find the Rate for a +user+ on a +project+ at a +date+ def self.for(user, project = nil, date = Date.today.to_s) + return nil unless user.is_a?(User) rate = self.for_user_project_and_date(user, project, date) return nil if rate.nil? @@ -45,8 +46,4 @@ class Rate < ActiveRecord::Base ]) end - - def self.for_user_and_date(user, date) - self.for_user_project_and_date(user, nil, date) - end end diff --git a/spec/models/rate_spec.rb b/spec/models/rate_spec.rb index e86e7c3..314a6a2 100644 --- a/spec/models/rate_spec.rb +++ b/spec/models/rate_spec.rb @@ -190,6 +190,12 @@ describe Rate, 'for' do Rate.for(@user).should eql(@rate.amount) end end + + it 'with an invalid user should be nil' do + object = mock('random_object_with_id_attribute') + Rate.should_not_receive(:for_user_project_and_date) + Rate.for(object).should be_nil + end end describe Rate, 'for_user_project_and_date (private)' do