From 237b21025aa825e8ccd0579b1ca87a8e97eb71b4 Mon Sep 17 00:00:00 2001 From: Eric Leroy-Terquem Date: Wed, 13 Mar 2024 11:09:36 +0100 Subject: [PATCH] fix(data): update procedure with duree_conservation greater than max_duree --- ...reater_than_max_duree_conservation_task.rb | 20 +++++++++++++++ ...r_than_max_duree_conservation_task_spec.rb | 25 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 app/tasks/maintenance/fix_duree_conservation_greater_than_max_duree_conservation_task.rb create mode 100644 spec/tasks/maintenance/fix_duree_conservation_greater_than_max_duree_conservation_task_spec.rb diff --git a/app/tasks/maintenance/fix_duree_conservation_greater_than_max_duree_conservation_task.rb b/app/tasks/maintenance/fix_duree_conservation_greater_than_max_duree_conservation_task.rb new file mode 100644 index 000000000..4d3618dbf --- /dev/null +++ b/app/tasks/maintenance/fix_duree_conservation_greater_than_max_duree_conservation_task.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +module Maintenance + class FixDureeConservationGreaterThanMaxDureeConservationTask < MaintenanceTasks::Task + def collection + Procedure.where('duree_conservation_dossiers_dans_ds > max_duree_conservation_dossiers_dans_ds') + end + + def process(element) + max_duree = element.max_duree_conservation_dossiers_dans_ds + element.update!(duree_conservation_dossiers_dans_ds: max_duree) + end + + def count + # Optionally, define the number of rows that will be iterated over + # This is used to track the task's progress + collection.count + end + end +end diff --git a/spec/tasks/maintenance/fix_duree_conservation_greater_than_max_duree_conservation_task_spec.rb b/spec/tasks/maintenance/fix_duree_conservation_greater_than_max_duree_conservation_task_spec.rb new file mode 100644 index 000000000..7c5f47a81 --- /dev/null +++ b/spec/tasks/maintenance/fix_duree_conservation_greater_than_max_duree_conservation_task_spec.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require "rails_helper" + +module Maintenance + RSpec.describe FixDureeConservationGreaterThanMaxDureeConservationTask do + describe "#process" do + subject(:process) do + described_class.process(procedure) + end + + let(:procedure) { create(:procedure, :published) } + + before { procedure.update_column(:duree_conservation_dossiers_dans_ds, 60) } + + it 'fixes invalid procedure' do + expect(procedure.duree_conservation_dossiers_dans_ds).to eq 60 + expect(procedure).to be_invalid + subject + expect(procedure.duree_conservation_dossiers_dans_ds).to eq 36 + expect(procedure).to be_valid + end + end + end +end