From 22cbcdf847caa9200b6cc566b7a2df2b10194d1a Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Fri, 23 Jul 2010 08:05:04 -0700 Subject: [PATCH] Converted RateFor test to Test::Unit. --- spec/models/rate_for_spec.rb | 76 ------------------------------------ test/unit/rate_for_test.rb | 74 +++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 76 deletions(-) delete mode 100644 spec/models/rate_for_spec.rb create mode 100644 test/unit/rate_for_test.rb diff --git a/spec/models/rate_for_spec.rb b/spec/models/rate_for_spec.rb deleted file mode 100644 index f13f4c9..0000000 --- a/spec/models/rate_for_spec.rb +++ /dev/null @@ -1,76 +0,0 @@ -require File.dirname(__FILE__) + '/../spec_helper' - -describe Rate, 'calculated for' do - before(:each) do - @user = User.new(:mail => 'metest@example.com', :lastname => 'Test', :firstname => 'Mr') - @user.login = 'mr-test' - @user.save! - end - - after(:each) do - User.destroy_all - end - - describe 'a user with no Rates' do - it 'should return nil' do - Rate.for(@user).should be_nil - end - end - - describe 'a user with one default Rate' do - it 'should return the Rate if the Rate is effective today' do - rate = Rate.create!({ :user_id => @user.id, :amount => 100.0, :date_in_effect => Date.today}) - Rate.for(@user).should eql(rate) - end - - it 'should return nil if the Rate is not effective yet' do - Rate.for(@user).should be_nil - end - - it 'should return the same default Rate on all projects' do - project = mock_model(Project) - rate = Rate.create!({ :user_id => @user.id, :amount => 100.0, :date_in_effect => Date.today}) - Rate.for(@user, project).should eql(rate) - end - end - - describe 'a user with two default Rates' do - it 'should return the newest Rate before the todays date' do - rate = Rate.create!({ :user_id => @user.id, :amount => 100.0, :date_in_effect => Date.yesterday}) - rate2 = Rate.create!({ :user_id => @user.id, :amount => 300.0, :date_in_effect => Date.today}) - Rate.for(@user).should eql(rate2) - end - end - - describe 'a user with a default Rate and Rate on a project' do - it 'should return the project Rate if its effective today' do - project = mock_model(Project) - rate = Rate.create!({ :user_id => @user.id, :project => project, :amount => 100.0, :date_in_effect => Date.yesterday}) - rate2 = Rate.create!({ :user_id => @user.id, :amount => 300.0, :date_in_effect => Date.today}) - Rate.for(@user, project).should eql(rate) - end - - it 'should return the default Rate if the project Rate isnt effective yet but the default Rate is' do - project = mock_model(Project) - rate = Rate.create!({ :user_id => @user.id, :project => project, :amount => 100.0, :date_in_effect => Date.tomorrow}) - rate2 = Rate.create!({ :user_id => @user.id, :amount => 300.0, :date_in_effect => Date.today}) - Rate.for(@user, project).should eql(rate2) - end - - it 'should return nil if neither Rate is effective yet' do - project = mock_model(Project) - rate = Rate.create!({ :user_id => @user.id, :project => project, :amount => 100.0, :date_in_effect => Date.tomorrow}) - rate2 = Rate.create!({ :user_id => @user.id, :amount => 300.0, :date_in_effect => Date.tomorrow}) - Rate.for(@user, project).should be_nil - end - end - - describe 'a user with two Rates on a project' do - it 'should return the newest Rate before the todays date' do - project = mock_model(Project) - rate = Rate.create!({ :user_id => @user.id, :project => project, :amount => 100.0, :date_in_effect => Date.yesterday}) - rate2 = Rate.create!({ :user_id => @user.id, :project => project, :amount => 300.0, :date_in_effect => Date.today}) - Rate.for(@user, project).should eql(rate2) - end - end -end diff --git a/test/unit/rate_for_test.rb b/test/unit/rate_for_test.rb new file mode 100644 index 0000000..9dfd263 --- /dev/null +++ b/test/unit/rate_for_test.rb @@ -0,0 +1,74 @@ +require File.dirname(__FILE__) + '/../test_helper' + +# Test cases for the main Rate#for API +class RateForTest < ActiveSupport::TestCase + context 'calculated for' do + setup do + @user = User.generate! + end + + context 'a user with no Rates' do + should 'should return nil' do + assert_nil Rate.for(@user) + end + end + + context 'a user with one default Rate' do + should 'should return the Rate if the Rate is effective today' do + rate = Rate.create!({ :user_id => @user.id, :amount => 100.0, :date_in_effect => Date.today}) + assert_equal rate, Rate.for(@user) + end + + should 'should return nil if the Rate is not effective yet' do + assert_nil Rate.for(@user) + end + + should 'should return the same default Rate on all projects' do + project = Project.generate! + rate = Rate.create!({ :user_id => @user.id, :amount => 100.0, :date_in_effect => Date.today}) + assert_equal rate, Rate.for(@user, project) + end + end + + context 'a user with two default Rates' do + should 'should return the newest Rate before the todays date' do + rate = Rate.create!({ :user_id => @user.id, :amount => 100.0, :date_in_effect => Date.yesterday}) + rate2 = Rate.create!({ :user_id => @user.id, :amount => 300.0, :date_in_effect => Date.today}) + assert_equal rate2, Rate.for(@user) + end + end + + context 'a user with a default Rate and Rate on a project' do + should 'should return the project Rate if its effective today' do + project = Project.generate! + rate = Rate.create!({ :user_id => @user.id, :project => project, :amount => 100.0, :date_in_effect => Date.yesterday}) + rate2 = Rate.create!({ :user_id => @user.id, :amount => 300.0, :date_in_effect => Date.today}) + assert_equal rate, Rate.for(@user, project) + end + + should 'should return the default Rate if the project Rate isnt effective yet but the default Rate is' do + project = Project.generate! + rate = Rate.create!({ :user_id => @user.id, :project => project, :amount => 100.0, :date_in_effect => Date.tomorrow}) + rate2 = Rate.create!({ :user_id => @user.id, :amount => 300.0, :date_in_effect => Date.today}) + assert_equal rate2, Rate.for(@user, project) + end + + should 'should return nil if neither Rate is effective yet' do + project = Project.generate! + rate = Rate.create!({ :user_id => @user.id, :project => project, :amount => 100.0, :date_in_effect => Date.tomorrow}) + rate2 = Rate.create!({ :user_id => @user.id, :amount => 300.0, :date_in_effect => Date.tomorrow}) + assert_nil Rate.for(@user, project) + end + end + + context 'a user with two Rates on a project' do + should 'should return the newest Rate before the todays date' do + project = Project.generate! + rate = Rate.create!({ :user_id => @user.id, :project => project, :amount => 100.0, :date_in_effect => Date.yesterday}) + rate2 = Rate.create!({ :user_id => @user.id, :project => project, :amount => 300.0, :date_in_effect => Date.today}) + assert_equal rate2, Rate.for(@user, project) + end + end + end + +end