diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index ff085e6dc..77486f635 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -13,6 +13,10 @@ class ApplicationController < ActionController::Base render "errors/not_found", status: :unauthorized end + def render_internal_server_error + render "errors/internal_server_error", status: :internal_server_error + end + def render_not_found_json(class_name, id) render json: { error: "#{class_name} #{id} not found" }, status: :not_found end diff --git a/app/controllers/lettings_logs_controller.rb b/app/controllers/lettings_logs_controller.rb index d940c8af9..2d19908b0 100644 --- a/app/controllers/lettings_logs_controller.rb +++ b/app/controllers/lettings_logs_controller.rb @@ -75,7 +75,7 @@ class LettingsLogsController < LogsController if @log.delete redirect_to lettings_logs_path, notice: "Log #{@log.id} has been deleted" else - render_not_found + render_internal_server_error end end diff --git a/app/controllers/sales_logs_controller.rb b/app/controllers/sales_logs_controller.rb index 6a5bebd78..80bfef9d7 100644 --- a/app/controllers/sales_logs_controller.rb +++ b/app/controllers/sales_logs_controller.rb @@ -50,7 +50,7 @@ class SalesLogsController < LogsController if @log.delete redirect_to sales_logs_path, notice: "Log #{@log.id} has been deleted" else - render_not_found + render_internal_server_error end end diff --git a/spec/requests/lettings_logs_controller_spec.rb b/spec/requests/lettings_logs_controller_spec.rb index b6afaeef0..aa766febd 100644 --- a/spec/requests/lettings_logs_controller_spec.rb +++ b/spec/requests/lettings_logs_controller_spec.rb @@ -1323,6 +1323,19 @@ RSpec.describe LettingsLogsController, type: :request do sign_in user 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 it "redirects to lettings logs and shows message" do delete_request diff --git a/spec/requests/sales_logs_controller_spec.rb b/spec/requests/sales_logs_controller_spec.rb index fbf2219fe..2e8cddaee 100644 --- a/spec/requests/sales_logs_controller_spec.rb +++ b/spec/requests/sales_logs_controller_spec.rb @@ -668,6 +668,19 @@ RSpec.describe SalesLogsController, type: :request do sign_in user 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 it "redirects to sales logs and shows message" do delete_request