aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/finder_test.rb
diff options
context:
space:
mode:
authorGodfrey Chan <godfreykfc@gmail.com>2014-08-24 05:01:59 -0700
committerGodfrey Chan <godfreykfc@gmail.com>2014-08-25 17:48:34 -0700
commit37939e28c953ab526c3fc9637f0239b095db1f70 (patch)
tree51fd57af3d01214480e0c0fabe05b67c5097e2f1 /activerecord/test/cases/finder_test.rb
parent58c5261efa6ca0134ebfac8a701915d5e36d2c25 (diff)
downloadrails-37939e28c953ab526c3fc9637f0239b095db1f70.tar.gz
rails-37939e28c953ab526c3fc9637f0239b095db1f70.tar.bz2
rails-37939e28c953ab526c3fc9637f0239b095db1f70.zip
Override #find_by! in core to enable AST caching
Diffstat (limited to 'activerecord/test/cases/finder_test.rb')
-rw-r--r--activerecord/test/cases/finder_test.rb22
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)