diff options
author | Ben Munat <bmunat@gmail.com> | 2008-06-11 16:26:35 -0700 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2008-06-11 18:07:57 -0700 |
commit | ddab9d7fdf49eb064f3f669bbf6ebb41e75e9fb5 (patch) | |
tree | 9fd10026edaf41bb723f8fa06c3ee0c880d2c212 /activerecord/test/cases | |
parent | e170d34a634c93efef471f9c0c1dac7377f1fc40 (diff) | |
download | rails-ddab9d7fdf49eb064f3f669bbf6ebb41e75e9fb5.tar.gz rails-ddab9d7fdf49eb064f3f669bbf6ebb41e75e9fb5.tar.bz2 rails-ddab9d7fdf49eb064f3f669bbf6ebb41e75e9fb5.zip |
Add :from option to calculations. [#397 state:resolved]
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r-- | activerecord/test/cases/calculations_test.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/activerecord/test/cases/calculations_test.rb b/activerecord/test/cases/calculations_test.rb index aefb13ea9a..754fd58f35 100644 --- a/activerecord/test/cases/calculations_test.rb +++ b/activerecord/test/cases/calculations_test.rb @@ -1,6 +1,7 @@ require "cases/helper" require 'models/company' require 'models/topic' +require 'models/edge' Company.has_many :accounts @@ -274,4 +275,49 @@ class CalculationsTest < ActiveRecord::TestCase def test_should_sum_expression assert_equal 636, Account.sum("2 * credit_limit") end + + def test_count_with_from_option + assert_equal Company.count(:all), Company.count(:all, :from => 'companies') + assert_equal Account.count(:all, :conditions => "credit_limit = 50"), + Account.count(:all, :from => 'accounts', :conditions => "credit_limit = 50") + assert_equal Company.count(:type, :conditions => {:type => "Firm"}), + Company.count(:type, :conditions => {:type => "Firm"}, :from => 'companies') + end + + def test_sum_with_from_option + assert_equal Account.sum(:credit_limit), Account.sum(:credit_limit, :from => 'accounts') + assert_equal Account.sum(:credit_limit, :conditions => "credit_limit > 50"), + Account.sum(:credit_limit, :from => 'accounts', :conditions => "credit_limit > 50") + end + + def test_average_with_from_option + assert_equal Account.average(:credit_limit), Account.average(:credit_limit, :from => 'accounts') + assert_equal Account.average(:credit_limit, :conditions => "credit_limit > 50"), + Account.average(:credit_limit, :from => 'accounts', :conditions => "credit_limit > 50") + end + + def test_minimum_with_from_option + assert_equal Account.minimum(:credit_limit), Account.minimum(:credit_limit, :from => 'accounts') + assert_equal Account.minimum(:credit_limit, :conditions => "credit_limit > 50"), + Account.minimum(:credit_limit, :from => 'accounts', :conditions => "credit_limit > 50") + end + + def test_maximum_with_from_option + assert_equal Account.maximum(:credit_limit), Account.maximum(:credit_limit, :from => 'accounts') + assert_equal Account.maximum(:credit_limit, :conditions => "credit_limit > 50"), + Account.maximum(:credit_limit, :from => 'accounts', :conditions => "credit_limit > 50") + end + + def test_from_option_with_specified_index + if Edge.connection.adapter_name == 'MySQL' + assert_equal Edge.count(:all), Edge.count(:all, :from => 'edges USE INDEX(unique_edge_index)') + assert_equal Edge.count(:all, :conditions => 'sink_id < 5'), + Edge.count(:all, :from => 'edges USE INDEX(unique_edge_index)', :conditions => 'sink_id < 5') + end + end + + def test_from_option_with_table_different_than_class + assert_equal Account.count(:all), Company.count(:all, :from => 'accounts') + end + end |