From 08caa122dd84e7f5fcfdee07200857db59362b0d Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Wed, 11 May 2022 20:03:33 +0200 Subject: [PATCH] Revert "Merge pull request #7280 from betagouv/move_type_de_champ_v2" This reverts commit 08b90b9173a57560b87b3a874990ac7962a21228, reversing changes made to bc9a90bd08dbba511470e7d7bf567ead5135ae3a. --- app/models/procedure_revision.rb | 32 +++++++++++-------- ...ocedure_presentation_and_revisions_spec.rb | 2 +- spec/models/procedure_revision_spec.rb | 22 ++++++------- 3 files changed, 29 insertions(+), 27 deletions(-) diff --git a/app/models/procedure_revision.rb b/app/models/procedure_revision.rb index 916076691..cfa619bc7 100644 --- a/app/models/procedure_revision.rb +++ b/app/models/procedure_revision.rb @@ -66,15 +66,23 @@ class ProcedureRevision < ApplicationRecord end def move_type_de_champ(stable_id, position) - coordinate = revision_types_de_champ - .joins(:type_de_champ) - .find_by(type_de_champ: { stable_id: stable_id }) + type_de_champ = find_type_de_champ_by_stable_id(stable_id) - siblings = coordinate.siblings.to_a + if type_de_champ.parent.present? + repetition_type_de_champ = find_or_clone_type_de_champ(stable_id).parent - siblings.insert(position, siblings.delete_at(siblings.index(coordinate))) + move_type_de_champ_hash(repetition_type_de_champ.types_de_champ.to_a, type_de_champ, position).each do |(id, position)| + type_de_champ = repetition_type_de_champ.types_de_champ.find(id) + type_de_champ.update!(order_place: position) + type_de_champ.revision_type_de_champ&.update!(position: position) + end + else + liste = type_de_champ.private? ? types_de_champ_private : types_de_champ_public - reorder(siblings) + move_type_de_champ_hash(liste.to_a, type_de_champ, position).each do |(id, position)| + revision_types_de_champ.find_by!(type_de_champ_id: id).update!(position: position) + end + end end def remove_type_de_champ(stable_id) @@ -147,14 +155,10 @@ class ProcedureRevision < ApplicationRecord private def reorder(siblings) - siblings.to_a.compact.each.with_index do |sibling, position| - sibling.update(position: position) - - # FIXME: to remove when order_place is no longer used - if sibling.parent_id.present? - sibling.type_de_champ.update!(order_place: position) - end - end + siblings.to_a.compact.each.with_index do |e, position| + e.update(position: position) + e.type_de_champ.update!(order_place: position) + end end def compare_attestation_template(from_at, to_at) diff --git a/spec/models/procedure_presentation_and_revisions_spec.rb b/spec/models/procedure_presentation_and_revisions_spec.rb index 482fb0e14..52fa41b5d 100644 --- a/spec/models/procedure_presentation_and_revisions_spec.rb +++ b/spec/models/procedure_presentation_and_revisions_spec.rb @@ -41,7 +41,7 @@ describe ProcedurePresentation do before do created_tdc0 = procedure.draft_revision.add_type_de_champ(tdc0) - procedure.draft_revision.reload.move_type_de_champ(created_tdc0.stable_id, 0) + procedure.draft_revision.move_type_de_champ(created_tdc0.stable_id, 0) procedure.publish_revision! end diff --git a/spec/models/procedure_revision_spec.rb b/spec/models/procedure_revision_spec.rb index b686b34a1..83c16782e 100644 --- a/spec/models/procedure_revision_spec.rb +++ b/spec/models/procedure_revision_spec.rb @@ -53,21 +53,21 @@ describe ProcedureRevision do context 'with 4 types de champ publiques' do it 'move down' do expect(draft.types_de_champ_public.index(type_de_champ_public)).to eq(0) - + type_de_champ_public.update(order_place: nil) draft.move_type_de_champ(type_de_champ_public.stable_id, 2) draft.reload - expect(draft.types_de_champ_public.index(type_de_champ_public)).to eq(2) + expect(draft.procedure.types_de_champ.index(type_de_champ_public)).to eq(2) expect(draft.procedure.types_de_champ_for_procedure_presentation.not_repetition.index(type_de_champ_public)).to eq(2) end it 'move up' do expect(draft.types_de_champ_public.index(last_type_de_champ)).to eq(3) - + last_type_de_champ.update(order_place: nil) draft.move_type_de_champ(last_type_de_champ.stable_id, 0) draft.reload - expect(draft.types_de_champ_public.index(last_type_de_champ)).to eq(0) + expect(draft.procedure.types_de_champ.index(last_type_de_champ)).to eq(0) expect(draft.procedure.types_de_champ_for_procedure_presentation.not_repetition.index(last_type_de_champ)).to eq(0) end end @@ -92,19 +92,17 @@ describe ProcedureRevision do end it 'move down' do - expect(draft.children_of(type_de_champ_repetition).index(second_child)).to eq(1) - + expect(type_de_champ_repetition.types_de_champ.index(second_child)).to eq(1) draft.move_type_de_champ(second_child.stable_id, 2) - - expect(draft.children_of(type_de_champ_repetition).index(second_child)).to eq(2) + type_de_champ_repetition.reload + expect(type_de_champ_repetition.types_de_champ.index(second_child)).to eq(2) end it 'move up' do - expect(draft.children_of(type_de_champ_repetition).index(last_child)).to eq(2) - + expect(type_de_champ_repetition.types_de_champ.index(last_child)).to eq(2) draft.move_type_de_champ(last_child.stable_id, 0) - - expect(draft.children_of(type_de_champ_repetition).index(last_child)).to eq(0) + type_de_champ_repetition.reload + expect(type_de_champ_repetition.types_de_champ.index(last_child)).to eq(0) end end end