Reputation: 2081
How do I tell RSpec/Capybara to expect a RoutingError? The reason is I want users to click a link to "claim a plate" via PUT, not via GET/visiting the path.
Basically I want to expect ActionController::RoutingError: No route matches [GET] "/plates/claim/1"
.
scenario 'they have to click the claim link' do
create_plates
sign_in_as_doctor
visit claim_plate_path(@plates.first.id)
?????
end
Upvotes: 14
Views: 3832
Reputation: 1
Accepted answer didn't work for me. What I had to do is:
create_plates
sign_in_as_doctor
expect do
visit claim_plate_path(@plates.first.id)
expect(page).to have_content("make sure visit is completed")
end.to raise_error(ActionController::RoutingError)
Upvotes: 0
Reputation: 29349
Try this
scenario 'they have to click the claim link' do
create_plates
sign_in_as_doctor
expect{visit claim_plate_path(@plates.first.id)}.to raise_error( ActionController::RoutingError)
end
Upvotes: 15