From 1b323383a85b49df8bbfc73204ad0f17a5df55db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Thu, 9 May 2019 22:46:52 +0200 Subject: [PATCH] Don't destroy budgets with an associated poll We were getting an exception due to foreign key database violations. --- app/controllers/admin/budgets_controller.rb | 2 ++ config/locales/en/admin.yml | 1 + config/locales/es/admin.yml | 1 + spec/features/admin/budgets_spec.rb | 10 ++++++++++ 4 files changed, 14 insertions(+) diff --git a/app/controllers/admin/budgets_controller.rb b/app/controllers/admin/budgets_controller.rb index 955da3f1d..dcf6b0839 100644 --- a/app/controllers/admin/budgets_controller.rb +++ b/app/controllers/admin/budgets_controller.rb @@ -49,6 +49,8 @@ class Admin::BudgetsController < Admin::BaseController def destroy if @budget.investments.any? redirect_to admin_budgets_path, alert: t("admin.budgets.destroy.unable_notice") + elsif @budget.poll.present? + redirect_to admin_budgets_path, alert: t("admin.budgets.destroy.unable_notice_polls") else @budget.destroy redirect_to admin_budgets_path, notice: t("admin.budgets.destroy.success_notice") diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml index 1556b915d..1130f5b66 100644 --- a/config/locales/en/admin.yml +++ b/config/locales/en/admin.yml @@ -107,6 +107,7 @@ en: destroy: success_notice: Budget deleted successfully unable_notice: You cannot destroy a budget that has associated investments + unable_notice_polls: You cannot destroy a budget that has an associated poll new: title: New participatory budget winners: diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml index 54e7e9806..f350ee6a2 100644 --- a/config/locales/es/admin.yml +++ b/config/locales/es/admin.yml @@ -107,6 +107,7 @@ es: destroy: success_notice: Presupuesto eliminado correctamente unable_notice: No se puede eliminar un presupuesto con proyectos asociados + unable_notice_polls: No se puede eliminar un presupuesto con una votación asociada new: title: Nuevo presupuesto ciudadano winners: diff --git a/spec/features/admin/budgets_spec.rb b/spec/features/admin/budgets_spec.rb index 7417b3a96..a4c1620a6 100644 --- a/spec/features/admin/budgets_spec.rb +++ b/spec/features/admin/budgets_spec.rb @@ -151,6 +151,16 @@ feature "Admin budgets" do expect(page).to have_content("You cannot destroy a budget that has associated investments") expect(page).to have_content("There is 1 budget") end + + scenario "Try to destroy a budget with polls" do + create(:poll, budget: budget) + + visit edit_admin_budget_path(budget) + click_link "Delete budget" + + expect(page).to have_content("You cannot destroy a budget that has an associated poll") + expect(page).to have_content("There is 1 budget") + end end context "Edit" do