Browse Source

better handle 500 error

pull/1620/head
Jack S 3 years ago
parent
commit
01785d7bf6
  1. 4
      app/controllers/application_controller.rb
  2. 2
      app/controllers/lettings_logs_controller.rb
  3. 2
      app/controllers/sales_logs_controller.rb
  4. 13
      spec/requests/lettings_logs_controller_spec.rb
  5. 13
      spec/requests/sales_logs_controller_spec.rb

4
app/controllers/application_controller.rb

@ -13,6 +13,10 @@ class ApplicationController < ActionController::Base
render "errors/not_found", status: :unauthorized render "errors/not_found", status: :unauthorized
end end
def render_internal_server_error
render "errors/internal_server_error", status: :internal_server_error
end
def render_not_found_json(class_name, id) def render_not_found_json(class_name, id)
render json: { error: "#{class_name} #{id} not found" }, status: :not_found render json: { error: "#{class_name} #{id} not found" }, status: :not_found
end end

2
app/controllers/lettings_logs_controller.rb

@ -75,7 +75,7 @@ class LettingsLogsController < LogsController
if @log.delete if @log.delete
redirect_to lettings_logs_path, notice: "Log #{@log.id} has been deleted" redirect_to lettings_logs_path, notice: "Log #{@log.id} has been deleted"
else else
render_not_found render_internal_server_error
end end
end end

2
app/controllers/sales_logs_controller.rb

@ -50,7 +50,7 @@ class SalesLogsController < LogsController
if @log.delete if @log.delete
redirect_to sales_logs_path, notice: "Log #{@log.id} has been deleted" redirect_to sales_logs_path, notice: "Log #{@log.id} has been deleted"
else else
render_not_found render_internal_server_error
end end
end end

13
spec/requests/lettings_logs_controller_spec.rb

@ -1323,6 +1323,19 @@ RSpec.describe LettingsLogsController, type: :request do
sign_in user sign_in user
end end
# rubocop:disable RSpec/AnyInstance
context "when log deletion errors" do
before do
allow_any_instance_of(LettingsLog).to receive(:delete).and_return(false)
end
it "renders 500 page" do
delete_request
expect(response).to have_http_status(:internal_server_error)
end
end
# rubocop:enable RSpec/AnyInstance
context "when delete permitted" do context "when delete permitted" do
it "redirects to lettings logs and shows message" do it "redirects to lettings logs and shows message" do
delete_request delete_request

13
spec/requests/sales_logs_controller_spec.rb

@ -668,6 +668,19 @@ RSpec.describe SalesLogsController, type: :request do
sign_in user sign_in user
end end
# rubocop:disable RSpec/AnyInstance
context "when log deletion errors" do
before do
allow_any_instance_of(SalesLog).to receive(:delete).and_return(false)
end
it "renders 500 page" do
delete_request
expect(response).to have_http_status(:internal_server_error)
end
end
# rubocop:enable RSpec/AnyInstance
context "when delete permitted" do context "when delete permitted" do
it "redirects to sales logs and shows message" do it "redirects to sales logs and shows message" do
delete_request delete_request

Loading…
Cancel
Save