From c01914bc244fa3ccd7b0f8f3237a53f2b7e413b0 Mon Sep 17 00:00:00 2001 From: Christophe Robillard Date: Wed, 6 Mar 2024 19:03:30 +0100 Subject: [PATCH] update zones for new government --- app/tasks/maintenance/update_zones_task.rb | 26 +++++++++++++++++++ config/zones.yml | 4 +++ .../maintenance/update_zones_task_spec.rb | 23 ++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 app/tasks/maintenance/update_zones_task.rb create mode 100644 spec/tasks/maintenance/update_zones_task_spec.rb diff --git a/app/tasks/maintenance/update_zones_task.rb b/app/tasks/maintenance/update_zones_task.rb new file mode 100644 index 000000000..c985f946a --- /dev/null +++ b/app/tasks/maintenance/update_zones_task.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +module Maintenance + class UpdateZonesTask < MaintenanceTasks::Task + def collection + config = Psych.safe_load(Rails.root.join("config", "zones.yml").read) + config['ministeres'] + end + + def process(ministere) + acronym = ministere.keys.first + zone = Zone.find_or_create_by!(acronym: acronym) + labels_a = ministere['labels'] + labels_a.each do |label_h| + designated_on = label_h.keys.first + label = zone.labels.find_or_initialize_by(designated_on: designated_on) + label.update(name: label_h[designated_on]) + end + zone.update(tchap_hs: ministere['tchap_hs']) if ministere['tchap_hs'] + end + + def count + collection.length + end + end +end diff --git a/config/zones.yml b/config/zones.yml index a89f2a1e4..6607aa601 100644 --- a/config/zones.yml +++ b/config/zones.yml @@ -14,18 +14,21 @@ ministeres: - MAS: labels: + - '2024-03-12': "Non attribué" - '2022-05-20': "Ministère de la Santé et de la Prévention" - '2020-07-06': "Ministère des Solidarités et de la Santé" tchap_hs: - agent.social.tchap.gouv.fr - MSAPH: labels: + - '2024-03-12': "Non attribué" - '2022-05-20': "Ministère des Solidarités, de l'Autonomie et des personnes handicapées" - '2020-07-06': "Non attribué" tchap_hs: - agent.social.tchap.gouv.fr - MTEI: labels: + - '2024-03-12': "Ministère du Travail, de la Santé et des Solidarités" - '2022-05-20': "Ministère du Travail, du Plein emploi et de l'Insertion" - '2020-07-06': "Ministère du Travail" tchap_hs: @@ -89,6 +92,7 @@ ministeres: - agent.dev-durable.tchap.gouv.fr - MTE: labels: + - '2024-03-12': "Non attribué" - '2022-05-20': "Ministère de la Transition énergétique" - '2020-07-06': "Non attribué" tchap_hs: diff --git a/spec/tasks/maintenance/update_zones_task_spec.rb b/spec/tasks/maintenance/update_zones_task_spec.rb new file mode 100644 index 000000000..bdc47380e --- /dev/null +++ b/spec/tasks/maintenance/update_zones_task_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require "rails_helper" + +module Maintenance + RSpec.describe UpdateZonesTask do + describe "#process" do + subject(:process) { described_class.process(ministere) } + let(:ministere) { + { + "MTEI" => nil, + "labels" => [{ "2024-03-12" => "Ministère du Travail, de la Santé et des Solidarités" }, { "2022-05-20" => "Ministère du Travail, du Plein emploi et de l'Insertion" }, { "2020-07-06" => "Ministère du Travail" }], + "tchap_hs" => ["agent.social.tchap.gouv.fr"] + } + # Object to be processed in a single iteration of this task + } + it 'updates ministere' do + subject + expect(Zone.find_by(acronym: 'MTEI').current_label).to eq("Ministère du Travail, de la Santé et des Solidarités") + end + end + end +end