aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/enum_test.rb
diff options
context:
space:
mode:
authorChen Kinnrot <kinnrot@gmail.com>2017-11-18 21:22:00 +0200
committerChen Kinnrot <kinnrot@gmail.com>2017-11-28 15:50:18 +0200
commit6552ce0361f30a46a58a8bcb659866f06c8b7430 (patch)
tree9dafcb449cade201f9979ba94d935d93501a37e2 /activerecord/test/cases/enum_test.rb
parentf2b6406066888aaa10aba6c3cb95c2eb6dda760e (diff)
downloadrails-6552ce0361f30a46a58a8bcb659866f06c8b7430.tar.gz
rails-6552ce0361f30a46a58a8bcb659866f06c8b7430.tar.bz2
rails-6552ce0361f30a46a58a8bcb659866f06c8b7430.zip
Prevent scope named same as a ActiveRecord::Relation instance method.
Due to inconsistent behavior when chaining scopes and one scope named after a Relation method Validation code added in 2 places: - scope, to prevent problematic scope names. - enum, cause it tries to auto define scope.
Diffstat (limited to 'activerecord/test/cases/enum_test.rb')
-rw-r--r--activerecord/test/cases/enum_test.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/activerecord/test/cases/enum_test.rb b/activerecord/test/cases/enum_test.rb
index 78cb89ccc5..7cda712112 100644
--- a/activerecord/test/cases/enum_test.rb
+++ b/activerecord/test/cases/enum_test.rb
@@ -308,6 +308,24 @@ class EnumTest < ActiveRecord::TestCase
end
end
+ test "reserved enum values for relation" do
+ relation_method_samples = [
+ :records,
+ :to_ary,
+ :scope_for_create
+ ]
+
+ relation_method_samples.each do |value|
+ e = assert_raises(ArgumentError, "enum value `#{value}` should not be allowed") do
+ Class.new(ActiveRecord::Base) do
+ self.table_name = "books"
+ enum category: [:other, value]
+ end
+ end
+ assert_match(/You tried to define an enum named .* on the model/, e.message)
+ end
+ end
+
test "overriding enum method should not raise" do
assert_nothing_raised do
Class.new(ActiveRecord::Base) do