Merge pull request #7893 from betagouv/fix_tdc_destroy_replay

fix(editor champ): ne leve pas d'exception si un type de champ est supprimé 2 fois
This commit is contained in:
LeSim 2022-10-11 17:20:09 +02:00 committed by GitHub
commit 5a8888e3c3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 3 deletions

View file

@ -72,8 +72,10 @@ module Administrateurs
reset_procedure
flash.notice = "Formulaire enregistré"
@destroyed = @coordinate
@morphed = champ_components_starting_at(@coordinate)
if @coordinate.present?
@destroyed = @coordinate
@morphed = champ_components_starting_at(@coordinate)
end
end
private

View file

@ -97,6 +97,9 @@ class ProcedureRevision < ApplicationRecord
def remove_type_de_champ(stable_id)
coordinate, tdc = coordinate_and_tdc(stable_id)
# in case of replay
return nil if coordinate.nil?
children = children_of(tdc).to_a
coordinate.destroy

View file

@ -175,9 +175,13 @@ describe ProcedureRevision do
it 'reorders' do
expect(draft.revision_types_de_champ_public.pluck(:position)).to eq([0, 1, 2])
draft.remove_type_de_champ(draft.types_de_champ_public[1].stable_id)
first_stable_id = draft.types_de_champ_public[1].stable_id
draft.remove_type_de_champ(first_stable_id)
expect(draft.revision_types_de_champ_public.pluck(:position)).to eq([0, 1])
expect { draft.remove_type_de_champ(first_stable_id) }.not_to raise_error
end
end