diff options
author | Godfrey Chan <godfreykfc@gmail.com> | 2014-08-24 05:01:59 -0700 |
---|---|---|
committer | Godfrey Chan <godfreykfc@gmail.com> | 2014-08-25 17:48:34 -0700 |
commit | 37939e28c953ab526c3fc9637f0239b095db1f70 (patch) | |
tree | 51fd57af3d01214480e0c0fabe05b67c5097e2f1 /activerecord/test | |
parent | 58c5261efa6ca0134ebfac8a701915d5e36d2c25 (diff) | |
download | rails-37939e28c953ab526c3fc9637f0239b095db1f70.tar.gz rails-37939e28c953ab526c3fc9637f0239b095db1f70.tar.bz2 rails-37939e28c953ab526c3fc9637f0239b095db1f70.zip |
Override #find_by! in core to enable AST caching
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/finder_test.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/activerecord/test/cases/finder_test.rb b/activerecord/test/cases/finder_test.rb index 9129dbaf63..befbec4e1b 100644 --- a/activerecord/test/cases/finder_test.rb +++ b/activerecord/test/cases/finder_test.rb @@ -1047,6 +1047,28 @@ class FinderTest < ActiveRecord::TestCase assert_sql(/^((?!ORDER).)*$/) { Post.find_by(id: posts(:eager_other).id) } end + test "find_by! with hash conditions returns the first matching record" do + assert_equal posts(:eager_other), Post.find_by!(id: posts(:eager_other).id) + end + + test "find_by! with non-hash conditions returns the first matching record" do + assert_equal posts(:eager_other), Post.find_by!("id = #{posts(:eager_other).id}") + end + + test "find_by! with multi-arg conditions returns the first matching record" do + assert_equal posts(:eager_other), Post.find_by!('id = ?', posts(:eager_other).id) + end + + test "find_by! doesn't have implicit ordering" do + assert_sql(/^((?!ORDER).)*$/) { Post.find_by!(id: posts(:eager_other).id) } + end + + test "find_by! raises RecordNotFound if the record is missing" do + assert_raises(ActiveRecord::RecordNotFound) do + Post.find_by!("1 = 0") + end + end + protected def bind(statement, *vars) if vars.first.is_a?(Hash) |