From 7806a26e2cbdd25f3e13af38d2e317d3bd588cba Mon Sep 17 00:00:00 2001 From: pedong Date: Wed, 11 Mar 2020 19:49:04 +0100 Subject: [PATCH] copy groupe_instructeurs when clone --- app/models/procedure.rb | 3 +-- spec/features/admin/procedure_cloning_spec.rb | 2 +- spec/models/procedure_spec.rb | 19 ++++++++++++++++++- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/models/procedure.rb b/app/models/procedure.rb index f21b5fbb8..73079fec2 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -291,6 +291,7 @@ class Procedure < ApplicationRecord populate_champ_stable_ids procedure = self.deep_clone(include: { + groupe_instructeurs: :instructeurs, attestation_template: nil, types_de_champ: [:drop_down_list, types_de_champ: :drop_down_list], types_de_champ_private: [:drop_down_list, types_de_champ: :drop_down_list] @@ -331,8 +332,6 @@ class Procedure < ApplicationRecord procedure.save - admin.instructeur.assign_to_procedure(procedure) - procedure end diff --git a/spec/features/admin/procedure_cloning_spec.rb b/spec/features/admin/procedure_cloning_spec.rb index 1550f41be..6cfc649fa 100644 --- a/spec/features/admin/procedure_cloning_spec.rb +++ b/spec/features/admin/procedure_cloning_spec.rb @@ -6,7 +6,7 @@ feature 'As an administrateur I wanna clone a procedure', js: true do let(:administrateur) { create(:administrateur) } before do - create :procedure, :with_service, + create :procedure, :with_service, :with_instructeur, aasm_state: :publiee, published_at: Time.zone.now, administrateurs: [administrateur], libelle: 'libellé de la procédure', diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index cbe0f95fd..144df9098 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -384,6 +384,12 @@ describe Procedure do let(:from_library) { false } let(:administrateur) { procedure.administrateurs.first } + let!(:groupe_instructeur_1) { create(:groupe_instructeur, procedure: procedure, label: "groupe_1") } + let!(:instructeur_1) { create(:instructeur) } + let!(:instructeur_2) { create(:instructeur) } + let!(:assign_to_1) { create(:assign_to, procedure: procedure, groupe_instructeur: groupe_instructeur_1, instructeur: instructeur_1) } + let!(:assign_to_2) { create(:assign_to, procedure: procedure, groupe_instructeur: groupe_instructeur_1, instructeur: instructeur_2) } + before do @logo = File.open('spec/fixtures/files/white.png') @signature = File.open('spec/fixtures/files/black.png') @@ -400,7 +406,18 @@ describe Procedure do subject { @procedure } it { expect(subject.parent_procedure).to eq(procedure) } - it { expect(subject.defaut_groupe_instructeur.instructeurs.map(&:email)).to eq([administrateur.email]) } + + describe "should keep groupe instructeurs " do + it "should clone groupe instructeurs" do + expect(subject.groupe_instructeurs.size).to eq(2) + expect(subject.groupe_instructeurs.size).to eq(procedure.groupe_instructeurs.size) + expect(subject.groupe_instructeurs.where(label: "groupe_1").first).not_to be nil + end + + it "should clone instructeurs in the groupe" do + expect(subject.groupe_instructeurs.where(label: "groupe_1").first.instructeurs.map(&:email)).to eq(procedure.groupe_instructeurs.where(label: "groupe_1").first.instructeurs.map(&:email)) + end + end it 'should duplicate specific objects with different id' do expect(subject.id).not_to eq(procedure.id)