diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2017-07-15 23:15:49 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2017-07-15 23:21:31 +0900 |
commit | 91565aea80864642fe4ad8e28f4ef8e3aa563d7e (patch) | |
tree | 3b2ad5d51e2603f01c96bce2793c273765207da0 /activerecord | |
parent | f73742455ffd3db0462b18d3d686dbe13a07ee56 (diff) | |
download | rails-91565aea80864642fe4ad8e28f4ef8e3aa563d7e.tar.gz rails-91565aea80864642fe4ad8e28f4ef8e3aa563d7e.tar.bz2 rails-91565aea80864642fe4ad8e28f4ef8e3aa563d7e.zip |
Ensure calculation methods execute no queries
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/test/cases/null_relation_test.rb | 74 |
1 files changed, 14 insertions, 60 deletions
diff --git a/activerecord/test/cases/null_relation_test.rb b/activerecord/test/cases/null_relation_test.rb index 0bb9097495..56f5a89686 100644 --- a/activerecord/test/cases/null_relation_test.rb +++ b/activerecord/test/cases/null_relation_test.rb @@ -1,6 +1,4 @@ require "cases/helper" -require "models/aircraft" -require "models/engine" require "models/developer" require "models/comment" require "models/post" @@ -50,14 +48,6 @@ class NullRelationTest < ActiveRecord::TestCase end end - def test_null_relation_calculations_methods - assert_no_queries(ignore_none: false) do - assert_equal 0, Developer.none.count - assert_equal 0, Developer.none.calculate(:count, nil) - assert_nil Developer.none.calculate(:average, "salary") - end - end - def test_null_relation_metadata_methods assert_equal "", Developer.none.to_sql assert_equal({}, Developer.none.where_values_hash) @@ -67,58 +57,22 @@ class NullRelationTest < ActiveRecord::TestCase assert_equal({ "salary" => 100_000 }, Developer.none.where(salary: 100_000).where_values_hash) end - def test_null_relation_sum - ac = Aircraft.new - assert_equal Hash.new, ac.engines.group(:id).sum(:id) - assert_equal 0, ac.engines.count - ac.save - assert_equal Hash.new, ac.engines.group(:id).sum(:id) - assert_equal 0, ac.engines.count - end - - def test_null_relation_count - ac = Aircraft.new - assert_equal Hash.new, ac.engines.group(:id).count - assert_equal 0, ac.engines.count - ac.save - assert_equal Hash.new, ac.engines.group(:id).count - assert_equal 0, ac.engines.count - end - - def test_null_relation_size - ac = Aircraft.new - assert_equal Hash.new, ac.engines.group(:id).size - assert_equal 0, ac.engines.size - ac.save - assert_equal Hash.new, ac.engines.group(:id).size - assert_equal 0, ac.engines.size - end - - def test_null_relation_average - ac = Aircraft.new - assert_equal Hash.new, ac.engines.group(:car_id).average(:id) - assert_nil ac.engines.average(:id) - ac.save - assert_equal Hash.new, ac.engines.group(:car_id).average(:id) - assert_nil ac.engines.average(:id) - end - - def test_null_relation_minimum - ac = Aircraft.new - assert_equal Hash.new, ac.engines.group(:car_id).minimum(:id) - assert_nil ac.engines.minimum(:id) - ac.save - assert_equal Hash.new, ac.engines.group(:car_id).minimum(:id) - assert_nil ac.engines.minimum(:id) + [:count, :sum].each do |method| + define_method "test_null_relation_#{method}" do + assert_no_queries(ignore_none: false) do + assert_equal 0, Comment.none.public_send(method, :id) + assert_equal Hash.new, Comment.none.group(:post_id).public_send(method, :id) + end + end end - def test_null_relation_maximum - ac = Aircraft.new - assert_equal Hash.new, ac.engines.group(:car_id).maximum(:id) - assert_nil ac.engines.maximum(:id) - ac.save - assert_equal Hash.new, ac.engines.group(:car_id).maximum(:id) - assert_nil ac.engines.maximum(:id) + [:average, :minimum, :maximum].each do |method| + define_method "test_null_relation_#{method}" do + assert_no_queries(ignore_none: false) do + assert_nil Comment.none.public_send(method, :id) + assert_equal Hash.new, Comment.none.group(:post_id).public_send(method, :id) + end + end end def test_null_relation_in_where_condition |