aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2013-07-15 16:29:01 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2013-07-15 16:29:01 -0700
commit9675c7da28758432ec7bd6e7ca1814801b2591f5 (patch)
tree39219fc8b144defc071738cfa0d3cdf00182aa40 /activerecord/test
parentd345ed40b5783ec2cb43f4434872ea5b2d57d203 (diff)
downloadrails-9675c7da28758432ec7bd6e7ca1814801b2591f5.tar.gz
rails-9675c7da28758432ec7bd6e7ca1814801b2591f5.tar.bz2
rails-9675c7da28758432ec7bd6e7ca1814801b2591f5.zip
reorder bind parameters when merging relations
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/relation_test.rb9
-rw-r--r--activerecord/test/cases/relations_test.rb17
2 files changed, 25 insertions, 1 deletions
diff --git a/activerecord/test/cases/relation_test.rb b/activerecord/test/cases/relation_test.rb
index 7862d96bd7..7c90f54343 100644
--- a/activerecord/test/cases/relation_test.rb
+++ b/activerecord/test/cases/relation_test.rb
@@ -9,6 +9,9 @@ module ActiveRecord
fixtures :posts, :comments, :authors
class FakeKlass < Struct.new(:table_name, :name)
+ def self.connection
+ Post.connection
+ end
end
def test_construction
@@ -204,6 +207,10 @@ module ActiveRecord
def arel_table
Post.arel_table
end
+
+ def connection
+ Post.connection
+ end
end
def relation
@@ -295,7 +302,7 @@ module ActiveRecord
assert_equal({foo: 'bar'}, relation.create_with_value)
end
- test 'merge!' do
+ def test_merge!
assert relation.merge!(where: :foo).equal?(relation)
assert_equal [:foo], relation.where_values
end
diff --git a/activerecord/test/cases/relations_test.rb b/activerecord/test/cases/relations_test.rb
index b205472cf5..d0f8731b9a 100644
--- a/activerecord/test/cases/relations_test.rb
+++ b/activerecord/test/cases/relations_test.rb
@@ -1556,4 +1556,21 @@ class RelationTest < ActiveRecord::TestCase
merged = left.merge(right)
assert_equal binds, merged.bind_values
end
+
+ def test_merging_reorders_bind_params
+ post = Post.first
+ id_column = Post.columns_hash['id']
+ title_column = Post.columns_hash['title']
+
+ bv = Post.connection.substitute_at id_column, 0
+
+ right = Post.where(id: bv)
+ right.bind_values += [[id_column, post.id]]
+
+ left = Post.where(title: bv)
+ left.bind_values += [[title_column, post.title]]
+
+ merged = left.merge(right)
+ assert_equal post, merged.first
+ end
end