Add ActiveRecord::RecordNotFound catching. Add tests.

This commit is contained in:
Marco Colli 2014-12-22 12:36:09 +01:00
parent d75071bac9
commit 76cc5e2d5c
2 changed files with 17 additions and 1 deletions

View file

@ -15,7 +15,7 @@ class LikesController < ApplicationController
@like = if target
current_user.like!(target)
end
rescue ActiveRecord::RecordInvalid => e
rescue ActiveRecord::RecordNotFound, ActiveRecord::RecordInvalid => e
# do nothing
end

View file

@ -72,6 +72,22 @@ describe LikesController, :type => :controller do
expect(response.code).to eq('422')
end
end
context "when an the exception is raised" do
it "should be catched when it means that the target is not found" do
allow(@target).to receive(:id).and_return(-1)
post :create, like_hash.merge(:format => :json)
expect(response.code).to eq('422')
end
it "should not be catched when it is unexpected" do
@target = alice.post :status_message, :text => "AWESOME", :to => @alices_aspect.id
@target = alice.comment!(@target, "hey") if class_const == Comment
allow(alice).to receive(:like!).and_raise("something")
allow(@controller).to receive(:current_user).and_return(alice)
expect { post :create, like_hash.merge(:format => :json) }.to raise_error("something")
end
end
end
describe '#index' do