fix defaut_groupe_instructeur for mismatching label

This commit is contained in:
simon lehericey 2023-04-24 10:15:04 +02:00
parent 995858e124
commit c189115757
2 changed files with 20 additions and 6 deletions

View file

@ -12,7 +12,9 @@ namespace :after_party do
if !p.defaut_groupe_instructeur_id.in?(p.groupe_instructeurs.map(&:id))
wrong_groupe = p.defaut_groupe_instructeur
parent_procedure = Procedure.unscoped.find(p.parent_procedure_id)
new_defaut_groupe = p.groupe_instructeurs.find_by(label: parent_procedure.defaut_groupe_instructeur.label)
new_defaut_groupe = p.groupe_instructeurs
.find_by(label: parent_procedure.defaut_groupe_instructeur.label).presence || p.groupe_instructeurs.first
p.update!(defaut_groupe_instructeur: new_defaut_groupe)
p.dossiers.where(groupe_instructeur: wrong_groupe).update_all(groupe_instructeur_id: new_defaut_groupe.id)

View file

@ -3,24 +3,36 @@ describe '20230421091957_fix_defaut_groupe_instructeur_id_for_cloned_procedure'
let!(:parent_procedure) { create(:procedure, hidden_at: Time.zone.now) }
let(:procedure) { create(:procedure, parent_procedure:, hidden_at: Time.zone.now) }
let(:procedure_with_new_groupe) do
create(:procedure, parent_procedure:, hidden_at: Time.zone.now).tap do |p|
p.groupe_instructeurs.first.update!(label: 'a new label')
end
end
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)
[procedure, procedure_with_new_groupe].each do |p|
defaut_groupe_instructeur_id = parent_procedure.defaut_groupe_instructeur_id
p.update_columns(defaut_groupe_instructeur_id:)
end
dossier
expect(procedure.defaut_groupe_instructeur_id.in?(procedure.groupe_instructeurs.ids)).to be false
expect(procedure_has_defaut_groupe?(procedure)).to be false
expect(dossier.groupe_instructeur_id.in?(procedure.groupe_instructeurs.ids)).to be false
run_task
procedure.reload
dossier.reload
[procedure, procedure_with_new_groupe, dossier].each(&:reload)
expect(procedure.defaut_groupe_instructeur_id.in?(procedure.groupe_instructeurs.ids)).to be true
expect(procedure_has_defaut_groupe?(procedure)).to be true
expect(procedure_has_defaut_groupe?(procedure_with_new_groupe)).to be true
expect(dossier.groupe_instructeur_id.in?(procedure.groupe_instructeurs.ids)).to be true
end
def procedure_has_defaut_groupe?(p)
p.defaut_groupe_instructeur_id.in?(p.groupe_instructeurs.ids)
end
end