aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/relation_test.rb
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2017-07-24 13:28:38 +0900
committerRyuta Kamizono <kamipo@gmail.com>2017-07-25 03:11:56 +0900
commit45955aed0085c453917aac2e2e5fbe5f3e73f705 (patch)
tree5072b898d6ddd12419395fb277174824cf5f7cfb /activerecord/test/cases/relation_test.rb
parentad3aaadce0f8fb977aa2bd1c551160e83d7dac03 (diff)
downloadrails-45955aed0085c453917aac2e2e5fbe5f3e73f705.tar.gz
rails-45955aed0085c453917aac2e2e5fbe5f3e73f705.tar.bz2
rails-45955aed0085c453917aac2e2e5fbe5f3e73f705.zip
`Relation::Merger` should not fill `values` with empty values
Currently `Relation#merge` will almost fill `values` with empty values (e.g. `other.order_values` is always true, it should be `other.order_values.any?`). This means that `Relation#merge` always changes `values` even if actually `values` is nothing changed. This behavior will makes `Relation#empty_scope?` fragile. So `Relation#merge` should avoid unnecessary changes.
Diffstat (limited to 'activerecord/test/cases/relation_test.rb')
-rw-r--r--activerecord/test/cases/relation_test.rb8
1 files changed, 8 insertions, 0 deletions
diff --git a/activerecord/test/cases/relation_test.rb b/activerecord/test/cases/relation_test.rb
index f22fcd7b5a..c1805aa592 100644
--- a/activerecord/test/cases/relation_test.rb
+++ b/activerecord/test/cases/relation_test.rb
@@ -100,6 +100,14 @@ module ActiveRecord
assert_equal({ "hello" => "world", "id" => 10 }, relation.scope_for_create)
end
+ def test_empty_scope
+ relation = Relation.new(Post, Post.arel_table, Post.predicate_builder)
+ assert relation.empty_scope?
+
+ relation.merge!(relation)
+ assert relation.empty_scope?
+ end
+
def test_bad_constants_raise_errors
assert_raises(NameError) do
ActiveRecord::Relation::HelloWorld