From 22e50d4c9e3680a1e0e656ab92ce16e8a6317442 Mon Sep 17 00:00:00 2001 From: mfo Date: Wed, 21 Aug 2024 18:00:01 +0200 Subject: [PATCH] fix(data): normalize invalid Champs::RNAChamp.values in db --- .../maintenance/normalize_rna_values_task.rb | 19 +++++++++++++++++++ .../normalize_rna_values_task_spec.rb | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 app/tasks/maintenance/normalize_rna_values_task.rb create mode 100644 spec/tasks/maintenance/normalize_rna_values_task_spec.rb diff --git a/app/tasks/maintenance/normalize_rna_values_task.rb b/app/tasks/maintenance/normalize_rna_values_task.rb new file mode 100644 index 000000000..3837d7bf7 --- /dev/null +++ b/app/tasks/maintenance/normalize_rna_values_task.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module Maintenance + class NormalizeRNAValuesTask < MaintenanceTasks::Task + def collection + Champs::RNAChamp.where.not(value: nil) + end + + def process(element) + if /\s/.match?(element.value) + element.update_column(:value, element.value.gsub(/\s+/, '')) + end + end + + def count + # to costly + end + end +end diff --git a/spec/tasks/maintenance/normalize_rna_values_task_spec.rb b/spec/tasks/maintenance/normalize_rna_values_task_spec.rb new file mode 100644 index 000000000..bed039e3e --- /dev/null +++ b/spec/tasks/maintenance/normalize_rna_values_task_spec.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require "rails_helper" + +module Maintenance + RSpec.describe NormalizeRNAValuesTask do + describe "#process" do + let(:procedure) { create(:procedure, types_de_champ_public: [{ type: :rna }]) } + let(:dossier) { create(:dossier, :with_populated_champs, procedure:) } + let(:element) { dossier.champs.first } + subject(:process) { described_class.process(element) } + let(:error_value) { "999 0 999" } + it "removes extra spaces" do + element.update_column(:value, error_value) + expect { subject }.to change { element.reload.value }.from(error_value).to("9990999") + end + end + end +end