From 96cfb6cc434be9c9119024ea8a87b0bd6b092819 Mon Sep 17 00:00:00 2001 From: Lisa Durand Date: Wed, 25 Sep 2024 15:08:10 +0200 Subject: [PATCH] create generic labels for old and new procedure --- app/models/procedure.rb | 7 ++++++ app/models/procedure_label.rb | 6 +++++ ...ll_procedure_labels_for_procedures_task.rb | 25 +++++++++++++++++++ .../procedures_controller_spec.rb | 5 ++++ 4 files changed, 43 insertions(+) create mode 100644 app/tasks/maintenance/backfill_procedure_labels_for_procedures_task.rb diff --git a/app/models/procedure.rb b/app/models/procedure.rb index 1d54e6cf8..51647b10d 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -295,6 +295,7 @@ class Procedure < ApplicationRecord after_initialize :ensure_path_exists before_save :ensure_path_exists after_create :ensure_defaut_groupe_instructeur + after_create :create_generic_procedure_labels include AASM @@ -936,6 +937,12 @@ class Procedure < ApplicationRecord end end + def create_generic_procedure_labels + ProcedureLabel::GENERIC_LABELS.each do |label| + ProcedureLabel.create(name: label[:name], color: label[:color], procedure_id: self.id) + end + end + def stable_ids_used_by_routing_rules @stable_ids_used_by_routing_rules ||= groupe_instructeurs.flat_map { _1.routing_rule&.sources }.compact end diff --git a/app/models/procedure_label.rb b/app/models/procedure_label.rb index 27ce139ef..a20b5eee4 100644 --- a/app/models/procedure_label.rb +++ b/app/models/procedure_label.rb @@ -3,5 +3,11 @@ class ProcedureLabel < ApplicationRecord belongs_to :procedure + GENERIC_LABELS = [ + { name: 'à relancer', color: 'brown-caramel' }, + { name: 'complet', color: 'green-bourgeon' }, + { name: 'prêt pour validation', color: 'green-archipel' } + ] + validates :name, :color, presence: true end diff --git a/app/tasks/maintenance/backfill_procedure_labels_for_procedures_task.rb b/app/tasks/maintenance/backfill_procedure_labels_for_procedures_task.rb new file mode 100644 index 000000000..d6aeab298 --- /dev/null +++ b/app/tasks/maintenance/backfill_procedure_labels_for_procedures_task.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +module Maintenance + class BackfillProcedureLabelsForProceduresTask < MaintenanceTasks::Task + # Cette tâche permet de créer un jeu de labels génériques pour les anciennes procédures + # Plus d'informations sur l'implémentation des labels ici : https://github.com/demarches-simplifiees/demarches-simplifiees.fr/issues/9787 + # 2024-10-15 + + include RunnableOnDeployConcern + + run_on_first_deploy + + def collection + Procedure + .includes(:procedure_labels) + .where(procedure_labels: { id: nil }) + end + + def process(procedure) + ProcedureLabel::GENERIC_LABELS.each do |label| + ProcedureLabel.create(name: label[:name], color: label[:color], procedure_id: procedure.id) + end + end + end +end diff --git a/spec/controllers/administrateurs/procedures_controller_spec.rb b/spec/controllers/administrateurs/procedures_controller_spec.rb index 72b097a5d..21e7139fb 100644 --- a/spec/controllers/administrateurs/procedures_controller_spec.rb +++ b/spec/controllers/administrateurs/procedures_controller_spec.rb @@ -513,6 +513,11 @@ describe Administrateurs::ProceduresController, type: :controller do expect(response).to redirect_to(champs_admin_procedure_path(Procedure.last)) expect(flash[:notice]).to be_present end + + it "create generic labels" do + expect(subject.procedure_labels.size).to eq(3) + expect(subject.procedure_labels.first.name).to eq('à relancer') + end end describe "procedure is saved with custom retention period" do