aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2017-05-06 06:02:01 +0900
committerRyuta Kamizono <kamipo@gmail.com>2017-06-29 23:09:05 +0900
commitd9fca84d218f0ed784c7bf6470df42d41838e507 (patch)
treeedb7f0595cb56f93adc833bc4dae69b7d586df9b /activerecord/test
parent4448873c8755524ccadd639d1a08df53496c36d7 (diff)
downloadrails-d9fca84d218f0ed784c7bf6470df42d41838e507.tar.gz
rails-d9fca84d218f0ed784c7bf6470df42d41838e507.tar.bz2
rails-d9fca84d218f0ed784c7bf6470df42d41838e507.zip
Deprecate delegating to `arel` in `Relation`
Active Record doesn't rely delegating to `arel` in the internal since 425f2ca. The delegation is a lower priority than delegating to `klass`, so it is pretty unclear which method is delegated to `arel`. For example, `bind_values` method was removed at b06f64c (a series of changes https://github.com/rails/rails/compare/79f71d3...b06f64c). But a relation still could respond to the method because `arel` also have the same named method (#28976). Removing the delegation will achieve predictable behavior.
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/relation/delegation_test.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/activerecord/test/cases/relation/delegation_test.rb b/activerecord/test/cases/relation/delegation_test.rb
index cb6e4d76d3..3b15f051b2 100644
--- a/activerecord/test/cases/relation/delegation_test.rb
+++ b/activerecord/test/cases/relation/delegation_test.rb
@@ -21,8 +21,22 @@ module ActiveRecord
end
end
+ module DeprecatedArelDelegationTests
+ AREL_METHODS = [
+ :with, :orders, :froms, :project, :projections, :taken, :constraints, :exists, :locked, :where_sql,
+ :ast, :source, :join_sources, :to_dot, :bind_values, :create_insert, :create_true, :create_false
+ ]
+
+ def test_deprecate_arel_delegation
+ AREL_METHODS.each do |method|
+ assert_deprecated { target.public_send(method) }
+ end
+ end
+ end
+
class DelegationAssociationTest < ActiveRecord::TestCase
include DelegationWhitelistTests
+ include DeprecatedArelDelegationTests
fixtures :posts
@@ -33,6 +47,7 @@ module ActiveRecord
class DelegationRelationTest < ActiveRecord::TestCase
include DelegationWhitelistTests
+ include DeprecatedArelDelegationTests
fixtures :comments