diff options
author | Xavier Noria <fxn@hashref.com> | 2013-04-20 09:26:07 +0200 |
---|---|---|
committer | Xavier Noria <fxn@hashref.com> | 2013-04-20 09:26:11 +0200 |
commit | 0400a7ff574f83f2f5d5c3f7d7569bfb37963dda (patch) | |
tree | 9dfcd4ee3f38f502ecbf943f8d7c8301898e90d1 | |
parent | d32ef7c7a5a1e29f64eb3c2240c642c7b0c73f25 (diff) | |
download | rails-0400a7ff574f83f2f5d5c3f7d7569bfb37963dda.tar.gz rails-0400a7ff574f83f2f5d5c3f7d7569bfb37963dda.tar.bz2 rails-0400a7ff574f83f2f5d5c3f7d7569bfb37963dda.zip |
if singletons belong to the contract, test them
Object#respond_to? returns singletons and thus we inherit that contract.
The implementation of the predicate is good, but the test is only
checking boolean semantics, which in this case is not enough.
-rw-r--r-- | activerecord/lib/active_record/attribute_methods.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/relation_test.rb | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/attribute_methods.rb b/activerecord/lib/active_record/attribute_methods.rb index d0c51b77c2..7f59d0b4c6 100644 --- a/activerecord/lib/active_record/attribute_methods.rb +++ b/activerecord/lib/active_record/attribute_methods.rb @@ -167,7 +167,7 @@ module ActiveRecord self.class.define_attribute_methods unless self.class.attribute_methods_generated? result = super - # If the result is false then it means this method is not supported by ActiveModel too + # If the result is false the answer is false. return false unless result # If the result is true then check for the select case. diff --git a/activerecord/test/cases/relation_test.rb b/activerecord/test/cases/relation_test.rb index 06723b9d7f..482c1b3d48 100644 --- a/activerecord/test/cases/relation_test.rb +++ b/activerecord/test/cases/relation_test.rb @@ -186,8 +186,11 @@ module ActiveRecord end def test_respond_to_for_non_selected_element + post = Post.select(:title).first + assert_equal false, post.respond_to?(:body), "post should not respond_to?(:body) since invoking it raises exception" + post = Post.select("'title' as post_title").first - assert !post.respond_to?(:body), "post should not respond_to?(:body) since invoking it raises exception" + assert_equal false, post.respond_to?(:title), "post should not respond_to?(:body) since invoking it raises exception" end end |