From 771f7b0393b74d85aae6a590d1967d6f7bf16894 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Wed, 2 Mar 2022 11:00:04 +0100 Subject: [PATCH 1/3] Delete coordinators_fees linked to an order_cycle when it is destroyed --- app/models/order_cycle.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/order_cycle.rb b/app/models/order_cycle.rb index c6e2d4a0aa..26fe34eec7 100644 --- a/app/models/order_cycle.rb +++ b/app/models/order_cycle.rb @@ -10,7 +10,8 @@ class OrderCycle < ApplicationRecord belongs_to :coordinator, class_name: 'Enterprise' has_many :coordinator_fee_refs, class_name: 'CoordinatorFee' - has_many :coordinator_fees, through: :coordinator_fee_refs, source: :enterprise_fee + has_many :coordinator_fees, through: :coordinator_fee_refs, source: :enterprise_fee, + dependent: :destroy has_many :exchanges, dependent: :destroy From 5fc7d72b09b9bc508bf31e9b587b5029b8f1fe49 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Thu, 3 Mar 2022 09:06:38 +0100 Subject: [PATCH 2/3] Check destroying order_cycle will delete associated coordinator fees --- .../admin/order_cycles_controller_spec.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/spec/controllers/admin/order_cycles_controller_spec.rb b/spec/controllers/admin/order_cycles_controller_spec.rb index 9ac31eb77a..0db0b83dfb 100644 --- a/spec/controllers/admin/order_cycles_controller_spec.rb +++ b/spec/controllers/admin/order_cycles_controller_spec.rb @@ -401,6 +401,20 @@ module Admin expect(flash[:error]).to eq I18n.t('admin.order_cycles.destroy_errors.schedule_present') end end + + describe "when an order cycle has any coordinator_fees", :debug do + let(:enterprise_fee1) { create(:enterprise_fee) } + + before do + oc.coordinator_fees << enterprise_fee1 + end + + it "displays an error message when we attempt to delete it" do + get :destroy, params: { id: oc.id } + expect(OrderCycle.find_by(id: oc.id)).to be nil + expect(response).to redirect_to admin_order_cycles_path + end + end end end end From 7ca6434b1410b9b2eb831a4592dd96131b996f59 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Fri, 4 Mar 2022 11:34:19 +0100 Subject: [PATCH 3/3] Improve the test to delete a cloned order_cycle --- .../admin/order_cycles_controller_spec.rb | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/spec/controllers/admin/order_cycles_controller_spec.rb b/spec/controllers/admin/order_cycles_controller_spec.rb index 0db0b83dfb..747eb6107a 100644 --- a/spec/controllers/admin/order_cycles_controller_spec.rb +++ b/spec/controllers/admin/order_cycles_controller_spec.rb @@ -402,18 +402,31 @@ module Admin end end - describe "when an order cycle has any coordinator_fees", :debug do + describe "when an order cycle has any coordinator_fees" do let(:enterprise_fee1) { create(:enterprise_fee) } before do oc.coordinator_fees << enterprise_fee1 end - it "displays an error message when we attempt to delete it" do + it "actually delete the order cycle" do get :destroy, params: { id: oc.id } expect(OrderCycle.find_by(id: oc.id)).to be nil expect(response).to redirect_to admin_order_cycles_path end + + describe "when the order_cycle was previously cloned" do + let(:cloned) { oc.clone! } + + it "actually delete the order cycle" do + get :destroy, params: { id: cloned.id } + + expect(OrderCycle.find_by(id: cloned.id)).to be nil + expect(OrderCycle.find_by(id: oc.id)).to_not be nil + expect(EnterpriseFee.find_by(id: enterprise_fee1.id)).to_not be nil + expect(response).to redirect_to admin_order_cycles_path + end + end end end end