From e9115b10b5acf1847a25af1168c8c2824e2b7636 Mon Sep 17 00:00:00 2001 From: Martin Date: Mon, 15 May 2023 11:41:38 +0200 Subject: [PATCH] =?UTF-8?q?correctif(data.kc):=20re-import=20les=20donn?= =?UTF-8?q?=C3=A9es=20kc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/lib/recovery/exporter.rb | 21 ++++++++++++ app/lib/recovery/importer.rb | 17 ++++++++++ app/lib/recovery/life_cycle.rb | 33 ++++++++++++++++++ spec/fixtures/recovery/export.dump | Bin 0 -> 22069 bytes spec/lib/recovery/exporter_spec.rb | 48 +++++++++++++++++++++++++++ spec/lib/recovery/importer_spec.rb | 16 +++++++++ spec/lib/recovery/life_cycle_spec.rb | 8 +++++ 7 files changed, 143 insertions(+) create mode 100644 app/lib/recovery/exporter.rb create mode 100644 app/lib/recovery/importer.rb create mode 100644 app/lib/recovery/life_cycle.rb create mode 100644 spec/fixtures/recovery/export.dump create mode 100644 spec/lib/recovery/exporter_spec.rb create mode 100644 spec/lib/recovery/importer_spec.rb create mode 100644 spec/lib/recovery/life_cycle_spec.rb diff --git a/app/lib/recovery/exporter.rb b/app/lib/recovery/exporter.rb new file mode 100644 index 000000000..e397feb82 --- /dev/null +++ b/app/lib/recovery/exporter.rb @@ -0,0 +1,21 @@ +module Recovery + class Exporter + FILE_PATH = Rails.root.join('lib', 'data', 'export.dump') + + attr_reader :dossiers + def initialize(dossier_ids:, file_path: FILE_PATH) + dossier_with_data = Dossier.where(id: dossier_ids) + .preload(:user, + :individual, + :etablissement, + revision: :procedure) + @dossiers = DossierPreloader.new(dossier_with_data).all + @file_path = file_path + end + + def dump + File.open(@file_path, 'wb') { _1.write(Marshal.dump(@dossiers)) } + end + end +end + diff --git a/app/lib/recovery/importer.rb b/app/lib/recovery/importer.rb new file mode 100644 index 000000000..c2f2543b8 --- /dev/null +++ b/app/lib/recovery/importer.rb @@ -0,0 +1,17 @@ +module Recovery + class Importer + attr_reader :dossiers + + def initialize(file_path: Recovery::Exporter::FILE_PATH) + @dossiers = Marshal.load(File.read(file_path)) + end + + def load + @dossiers.map do |dossier| + dossier.instance_variable_set :@new_record, true + dossier.save! + end + end + end +end + diff --git a/app/lib/recovery/life_cycle.rb b/app/lib/recovery/life_cycle.rb new file mode 100644 index 000000000..ed2bf83e4 --- /dev/null +++ b/app/lib/recovery/life_cycle.rb @@ -0,0 +1,33 @@ +module Recovery + class LifeCycle + def initialize(dossier_ids:) + @dossier_ids = dossier_ids + end + + def load_export_destroy_and_import + export_dossiers + destroy_dossiers + import_dossiers + end + + def exporter + @exporter ||= Recovery::Exporter.new(dossier_ids: @dossier_ids) + end + + def importer + @importer ||= Importer.new() + end + + def export_dossiers + exporter.dump + end + + def destroy_dossiers + Dossier.where(id: @dossier_ids).destroy_all + end + + def import_dossiers + importer.load + end + end +end diff --git a/spec/fixtures/recovery/export.dump b/spec/fixtures/recovery/export.dump new file mode 100644 index 0000000000000000000000000000000000000000..983cf88b907156094a395add6a8662cfd159aade GIT binary patch literal 22069 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 literal 0 HcmV?d00001 diff --git a/spec/lib/recovery/exporter_spec.rb b/spec/lib/recovery/exporter_spec.rb new file mode 100644 index 000000000..d336f100d --- /dev/null +++ b/spec/lib/recovery/exporter_spec.rb @@ -0,0 +1,48 @@ +describe Recovery::Exporter do + let(:dossier_ids) { [create(:dossier, :with_individual).id, create(:dossier, :with_individual).id] } + let(:fp) { Rails.root.join('spec', 'fixtures', 'recovery', 'export.dump') } + subject { Recovery::Exporter.new(dossier_ids:, file_path: fp).dump } + + def cleanup_export_file + # if File.exist?(fp) + # FileUtils.rm(fp) + # end + end + + before { cleanup_export_file } + after { cleanup_export_file } + + it 'exports dossiers to .dump' do + expect{ subject }.not_to raise_error + end + + it 'exports dossiers local file .dump' do + expect{ subject }.to change { File.exist?(fp) } + .from(false).to(true) + end + + context 'exported' do + before { subject } + let(:exported_dossiers) { Marshal.load(File.read(fp)) } + + it 'contains as much as dossiers as input' do + expect(exported_dossiers.size).to eq(dossier_ids.size) + end + + it 'contains input dossier ids' do + expect(exported_dossiers.map(&:id)).to match_array(dossier_ids) + end + + it 'contains procedure dossier ids' do + expect(exported_dossiers.first.procedure).to be_an_instance_of(Procedure) + end + + it 'contains dossier.revision ids' do + expect(exported_dossiers.first.revision).to be_an_instance_of(ProcedureRevision) + end + + it 'contains dossier.user' do + expect(exported_dossiers.first.user).to be_an_instance_of(User) + end + end +end diff --git a/spec/lib/recovery/importer_spec.rb b/spec/lib/recovery/importer_spec.rb new file mode 100644 index 000000000..e0579d341 --- /dev/null +++ b/spec/lib/recovery/importer_spec.rb @@ -0,0 +1,16 @@ +describe Recovery::Importer do + let(:file_path) { Rails.root.join('spec', 'fixtures', 'recovery', 'export.dump') } + let(:importer) { Recovery::Importer.new(file_path:) } + subject { importer.load } + context 'loaded_data' do + let(:loaded_dossiers) { importer.dossiers} + + it 'contains user' do + expect(loaded_dossiers.first.user).to be_an_instance_of(User) + end + end + + it 're-import dossiers from .dump' do + expect{ subject }.to change { Dossier.count }.by(importer.dossiers.size) + end +end diff --git a/spec/lib/recovery/life_cycle_spec.rb b/spec/lib/recovery/life_cycle_spec.rb new file mode 100644 index 000000000..8dc2318a2 --- /dev/null +++ b/spec/lib/recovery/life_cycle_spec.rb @@ -0,0 +1,8 @@ +describe Recovery::LifeCycle do + describe '.load_export_destroy_and_import' do + it 'works with one dossier' do + dossier = create(:dossier, :with_individual) + expect { Recovery::LifeCycle.new(dossier_ids: [dossier.id]).load_export_destroy_and_import }.not_to change {Dossier.count} + end + end +end