diff --git a/lib/tasks/deployment/20230421091957_fix_defaut_groupe_instructeur_id_for_cloned_procedure.rake b/lib/tasks/deployment/20230421091957_fix_defaut_groupe_instructeur_id_for_cloned_procedure.rake index 7ddaee105..16fef0c4a 100644 --- a/lib/tasks/deployment/20230421091957_fix_defaut_groupe_instructeur_id_for_cloned_procedure.rake +++ b/lib/tasks/deployment/20230421091957_fix_defaut_groupe_instructeur_id_for_cloned_procedure.rake @@ -8,8 +8,11 @@ namespace :after_party do procedures.each do |p| if !p.defaut_groupe_instructeur_id.in?(p.groupe_instructeurs.map(&:id)) + wrong_groupe = p.defaut_groupe_instructeur new_defaut_groupe = p.groupe_instructeurs.find_by(label: p.parent_procedure.defaut_groupe_instructeur.label) p.update!(defaut_groupe_instructeur: new_defaut_groupe) + + p.dossiers.where(groupe_instructeur: wrong_groupe).update_all(groupe_instructeur_id: new_defaut_groupe.id) end end diff --git a/spec/lib/tasks/deployment/20230421091957_fix_defaut_groupe_instructeur_id_for_cloned_procedure_spec.rake b/spec/lib/tasks/deployment/20230421091957_fix_defaut_groupe_instructeur_id_for_cloned_procedure_spec.rake new file mode 100644 index 000000000..f5add3d77 --- /dev/null +++ b/spec/lib/tasks/deployment/20230421091957_fix_defaut_groupe_instructeur_id_for_cloned_procedure_spec.rake @@ -0,0 +1,26 @@ +describe '20230421091957_fix_defaut_groupe_instructeur_id_for_cloned_procedure' do + let(:rake_task) { Rake::Task['after_party:fix_defaut_groupe_instructeur_id_for_cloned_procedure'] } + + let!(:parent_procedure) { create(:procedure) } + let(:procedure) { create(:procedure, parent_procedure:) } + let(:dossier) { create(:dossier, procedure:) } + + subject(:run_task) { rake_task.invoke } + after(:each) { rake_task.reenable } + + it 'populates defaut_groupe_instructeur_id' do + procedure.update_columns(defaut_groupe_instructeur_id: parent_procedure.defaut_groupe_instructeur_id) + dossier + + expect(procedure.defaut_groupe_instructeur_id.in?(procedure.groupe_instructeurs.ids)).to be false + expect(dossier.groupe_instructeur_id.in?(procedure.groupe_instructeurs.ids)).to be false + + run_task + + procedure.reload + dossier.reload + + expect(procedure.defaut_groupe_instructeur_id.in?(procedure.groupe_instructeurs.ids)).to be true + expect(dossier.groupe_instructeur_id.in?(procedure.groupe_instructeurs.ids)).to be true + end +end