diff --git a/app/controllers/instructeurs/dossiers_controller.rb b/app/controllers/instructeurs/dossiers_controller.rb index c101b2772..2010d7c81 100644 --- a/app/controllers/instructeurs/dossiers_controller.rb +++ b/app/controllers/instructeurs/dossiers_controller.rb @@ -358,6 +358,8 @@ module Instructeurs def reaffecter dossier = current_instructeur.dossiers.find(params[:dossier_id]) + previous_groupe_instructeur = dossier.groupe_instructeur + new_group = dossier .procedure .groupe_instructeurs.find(params[:groupe_instructeur_id]) @@ -366,6 +368,17 @@ module Instructeurs dossier.update!(forced_groupe_instructeur: true) + DossierAssignment.create!( + dossier_id: dossier.id, + mode: :manual, + previous_groupe_instructeur_id: previous_groupe_instructeur&.id, + groupe_instructeur_id: new_group.id, + previous_groupe_instructeur_label: previous_groupe_instructeur&.label, + groupe_instructeur_label: new_group.label, + assigned_at: Time.zone.now, + assigned_by: current_instructeur.email + ) + flash.notice = t('instructeurs.dossiers.reaffectation', dossier_id: dossier.id, label: new_group.label) redirect_to instructeur_procedure_path(procedure) end diff --git a/spec/controllers/instructeurs/dossiers_controller_spec.rb b/spec/controllers/instructeurs/dossiers_controller_spec.rb index a18018031..e28fcae48 100644 --- a/spec/controllers/instructeurs/dossiers_controller_spec.rb +++ b/spec/controllers/instructeurs/dossiers_controller_spec.rb @@ -1185,10 +1185,16 @@ describe Instructeurs::DossiersController, type: :controller do end describe '#reaffecter' do + let!(:gi_1) { procedure.groupe_instructeurs.first } let!(:gi_2) { GroupeInstructeur.create(label: 'deuxième groupe', procedure: procedure) } - let!(:dossier) { create(:dossier, :en_construction, procedure: procedure, groupe_instructeur: procedure.groupe_instructeurs.first) } + let!(:dossier) { create(:dossier, :en_construction, procedure: procedure, groupe_instructeur: gi_1) } + let!(:new_instructeur) { create(:instructeur) } before do + gi_1.instructeurs << new_instructeur + gi_1.dossiers << dossier + new_instructeur.followed_dossiers << dossier + post :reaffecter, params: { procedure_id: procedure.id, @@ -1200,6 +1206,13 @@ describe Instructeurs::DossiersController, type: :controller do it do expect(dossier.reload.groupe_instructeur.id).to eq(gi_2.id) expect(dossier.forced_groupe_instructeur).to be_truthy + expect(dossier.followers_instructeurs).to eq [] + expect(dossier.dossier_assignment.previous_groupe_instructeur_id).to eq(gi_1.id) + expect(dossier.dossier_assignment.previous_groupe_instructeur_label).to eq(gi_1.label) + expect(dossier.dossier_assignment.groupe_instructeur_id).to eq(gi_2.id) + expect(dossier.dossier_assignment.groupe_instructeur_label).to eq(gi_2.label) + expect(dossier.dossier_assignment.mode).to eq('manual') + expect(dossier.dossier_assignment.assigned_by).to eq(instructeur.email) expect(response).to redirect_to(instructeur_procedure_path(procedure)) expect(flash.notice).to eq("Le dossier nº #{dossier.id} a été réaffecté au groupe d’instructeurs « deuxième groupe ».") end