From d8d9b0922d8733783116335f40bce72784e60bbe Mon Sep 17 00:00:00 2001 From: Christophe Robillard Date: Mon, 16 Mar 2020 17:07:39 +0100 Subject: [PATCH] remove orphan services when destroying admin --- app/models/administrateur.rb | 5 +++++ spec/models/administrateur_spec.rb | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/app/models/administrateur.rb b/app/models/administrateur.rb index 3d3e878ef..2f57bf5bc 100644 --- a/app/models/administrateur.rb +++ b/app/models/administrateur.rb @@ -85,6 +85,11 @@ class Administrateur < ApplicationRecord next_administrateur = procedure.administrateurs.where.not(id: self.id).first procedure.service.update(administrateur: next_administrateur) end + + services.each do |service| + service.destroy unless service.procedures.any? + end + destroy end end diff --git a/spec/models/administrateur_spec.rb b/spec/models/administrateur_spec.rb index 3b1a023cd..f7581dc15 100644 --- a/spec/models/administrateur_spec.rb +++ b/spec/models/administrateur_spec.rb @@ -59,6 +59,14 @@ describe Administrateur, type: :model do expect(Administrateur.find_by(id: administrateur.id)).to be_nil expect(service.reload.administrateur).to eq(autre_administrateur) end + + it "delete service if not associated to procedures" do + service_without_procedure = create(:service, administrateur: administrateur) + administrateur.delete_and_transfer_services + + expect(Service.find_by(id: service_without_procedure.id)).to be_nil + expect(Administrateur.find_by(id: administrateur.id)).to be_nil + end end # describe '#password_complexity' do