mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Ensure calculation methods execute no queries
This commit is contained in:
parent
f73742455f
commit
91565aea80
1 changed files with 14 additions and 60 deletions
|
@ -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
|
||||
[: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_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)
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue