1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Merge pull request #15791 from zev/add_model_to_recordnotfound_message

Update RecordNotFound exception cases to include a message with the
This commit is contained in:
Aaron Patterson 2014-09-19 23:15:44 -07:00
commit 808070b065
2 changed files with 26 additions and 18 deletions

View file

@ -103,7 +103,7 @@ module ActiveRecord
# Same as +take+ but raises <tt>ActiveRecord::RecordNotFound</tt> if no record
# is found. Note that <tt>take!</tt> accepts no arguments.
def take!
take or raise RecordNotFound
take or raise RecordNotFound.new("Couldn't find #{@klass.name} with [#{arel.where_sql}]")
end
# Find the first record (or first N records if a parameter is supplied).
@ -138,7 +138,7 @@ module ActiveRecord
# Same as +first+ but raises <tt>ActiveRecord::RecordNotFound</tt> if no record
# is found. Note that <tt>first!</tt> accepts no arguments.
def first!
first or raise RecordNotFound
first or raise RecordNotFound.new("Couldn't find #{@klass.name} with [#{arel.where_sql}]")
end
# Find the last record (or last N records if a parameter is supplied).
@ -171,7 +171,7 @@ module ActiveRecord
# Same as +last+ but raises <tt>ActiveRecord::RecordNotFound</tt> if no record
# is found. Note that <tt>last!</tt> accepts no arguments.
def last!
last or raise RecordNotFound
last or raise RecordNotFound.new("Couldn't find #{@klass.name} with [#{arel.where_sql}]")
end
# Find the second record.
@ -187,7 +187,7 @@ module ActiveRecord
# Same as +second+ but raises <tt>ActiveRecord::RecordNotFound</tt> if no record
# is found.
def second!
second or raise RecordNotFound
second or raise RecordNotFound.new("Couldn't find #{@klass.name} with [#{arel.where_sql}]")
end
# Find the third record.
@ -203,7 +203,7 @@ module ActiveRecord
# Same as +third+ but raises <tt>ActiveRecord::RecordNotFound</tt> if no record
# is found.
def third!
third or raise RecordNotFound
third or raise RecordNotFound.new("Couldn't find #{@klass.name} with [#{arel.where_sql}]")
end
# Find the fourth record.
@ -219,7 +219,7 @@ module ActiveRecord
# Same as +fourth+ but raises <tt>ActiveRecord::RecordNotFound</tt> if no record
# is found.
def fourth!
fourth or raise RecordNotFound
fourth or raise RecordNotFound.new("Couldn't find #{@klass.name} with [#{arel.where_sql}]")
end
# Find the fifth record.
@ -235,7 +235,7 @@ module ActiveRecord
# Same as +fifth+ but raises <tt>ActiveRecord::RecordNotFound</tt> if no record
# is found.
def fifth!
fifth or raise RecordNotFound
fifth or raise RecordNotFound.new("Couldn't find #{@klass.name} with [#{arel.where_sql}]")
end
# Find the forty-second record. Also known as accessing "the reddit".
@ -251,7 +251,7 @@ module ActiveRecord
# Same as +forty_two+ but raises <tt>ActiveRecord::RecordNotFound</tt> if no record
# is found.
def forty_two!
forty_two or raise RecordNotFound
forty_two or raise RecordNotFound.new("Couldn't find #{@klass.name} with [#{arel.where_sql}]")
end
# Returns +true+ if a record exists in the table that matches the +id+ or

View file

@ -262,7 +262,7 @@ class FinderTest < ActiveRecord::TestCase
end
def test_take_bang_missing
assert_raises ActiveRecord::RecordNotFound do
assert_raises_with_message ActiveRecord::RecordNotFound, "Couldn't find Topic" do
Topic.where("title = 'This title does not exist'").take!
end
end
@ -282,7 +282,7 @@ class FinderTest < ActiveRecord::TestCase
end
def test_first_bang_missing
assert_raises ActiveRecord::RecordNotFound do
assert_raises_with_message ActiveRecord::RecordNotFound, "Couldn't find Topic" do
Topic.where("title = 'This title does not exist'").first!
end
end
@ -296,7 +296,7 @@ class FinderTest < ActiveRecord::TestCase
def test_model_class_responds_to_first_bang
assert Topic.first!
Topic.delete_all
assert_raises ActiveRecord::RecordNotFound do
assert_raises_with_message ActiveRecord::RecordNotFound, "Couldn't find Topic" do
Topic.first!
end
end
@ -318,7 +318,7 @@ class FinderTest < ActiveRecord::TestCase
def test_model_class_responds_to_second_bang
assert Topic.second!
Topic.delete_all
assert_raises ActiveRecord::RecordNotFound do
assert_raises_with_message ActiveRecord::RecordNotFound, "Couldn't find Topic" do
Topic.second!
end
end
@ -340,7 +340,7 @@ class FinderTest < ActiveRecord::TestCase
def test_model_class_responds_to_third_bang
assert Topic.third!
Topic.delete_all
assert_raises ActiveRecord::RecordNotFound do
assert_raises_with_message ActiveRecord::RecordNotFound, "Couldn't find Topic" do
Topic.third!
end
end
@ -362,7 +362,7 @@ class FinderTest < ActiveRecord::TestCase
def test_model_class_responds_to_fourth_bang
assert Topic.fourth!
Topic.delete_all
assert_raises ActiveRecord::RecordNotFound do
assert_raises_with_message ActiveRecord::RecordNotFound, "Couldn't find Topic" do
Topic.fourth!
end
end
@ -384,7 +384,7 @@ class FinderTest < ActiveRecord::TestCase
def test_model_class_responds_to_fifth_bang
assert Topic.fifth!
Topic.delete_all
assert_raises ActiveRecord::RecordNotFound do
assert_raises_with_message ActiveRecord::RecordNotFound, "Couldn't find Topic" do
Topic.fifth!
end
end
@ -396,14 +396,14 @@ class FinderTest < ActiveRecord::TestCase
end
def test_last_bang_missing
assert_raises ActiveRecord::RecordNotFound do
assert_raises_with_message ActiveRecord::RecordNotFound, "Couldn't find Topic" do
Topic.where("title = 'This title does not exist'").last!
end
end
def test_model_class_responds_to_last_bang
assert_equal topics(:fifth), Topic.last!
assert_raises ActiveRecord::RecordNotFound do
assert_raises_with_message ActiveRecord::RecordNotFound, "Couldn't find Topic" do
Topic.delete_all
Topic.last!
end
@ -802,7 +802,9 @@ class FinderTest < ActiveRecord::TestCase
def test_find_by_one_attribute_bang
assert_equal topics(:first), Topic.find_by_title!("The First Topic")
assert_raise(ActiveRecord::RecordNotFound) { Topic.find_by_title!("The First Topic!") }
assert_raises_with_message(ActiveRecord::RecordNotFound, "Couldn't find Topic") do
Topic.find_by_title!("The First Topic!")
end
end
def test_find_by_on_attribute_that_is_a_reserved_word
@ -1113,4 +1115,10 @@ class FinderTest < ActiveRecord::TestCase
end
end)
end
def assert_raises_with_message(exception_class, message, &block)
err = assert_raises(exception_class) { block.call }
assert_match message, err.message
end
end