From 2267ec98cf8e154a15b7c9a523908635aef5a60e Mon Sep 17 00:00:00 2001 From: Christophe Robillard Date: Tue, 28 May 2024 11:35:49 +0200 Subject: [PATCH] fix dossier directory for attestation when export with export template --- app/models/export_template.rb | 2 ++ app/services/pieces_justificatives_service.rb | 7 ++++++- spec/services/pieces_justificatives_service_spec.rb | 10 ++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/models/export_template.rb b/app/models/export_template.rb index 3a9bf9c5c..6555af9c9 100644 --- a/app/models/export_template.rb +++ b/app/models/export_template.rb @@ -128,6 +128,8 @@ class ExportTemplate < ApplicationRecord 'messagerie' when 'Avis' 'avis' + when 'Attestation' + 'pieces_justificatives' else # for attachment return attachment_path(dossier, attachment, index, row_index, champ) diff --git a/app/services/pieces_justificatives_service.rb b/app/services/pieces_justificatives_service.rb index 75210b024..871aa6f68 100644 --- a/app/services/pieces_justificatives_service.rb +++ b/app/services/pieces_justificatives_service.rb @@ -227,7 +227,12 @@ class PiecesJustificativesService .where(record_type: "Attestation", record_id: attestation_id_dossier_id.keys) .map do |a| dossier_id = attestation_id_dossier_id[a.record_id] - ActiveStorage::DownloadableFile.pj_and_path(dossier_id, a) + if @export_template + dossier = dossiers.find { _1.id == dossier_id } + @export_template.attachment_and_path(dossier, a) + else + ActiveStorage::DownloadableFile.pj_and_path(dossier_id, a) + end end end diff --git a/spec/services/pieces_justificatives_service_spec.rb b/spec/services/pieces_justificatives_service_spec.rb index f0a6a094a..c817e9047 100644 --- a/spec/services/pieces_justificatives_service_spec.rb +++ b/spec/services/pieces_justificatives_service_spec.rb @@ -209,6 +209,16 @@ describe PiecesJustificativesService do let!(:witness) { create(:dossier, :with_attestation) } it { expect(subject).to match_array(dossier.attestation.pdf.attachment) } + it 'uses default name for dossier directory' do + expect(PiecesJustificativesService.new(user_profile:, export_template: nil).liste_documents(dossiers).map(&:second)[0].starts_with?("dossier-#{dossier.id}/pieces_justificatives")).to be true + end + + context 'with export_template' do + let(:export_template) { create(:export_template, :with_custom_ddd_prefix, ddd_prefix: "DOSSIER-", groupe_instructeur: procedure.defaut_groupe_instructeur) } + it 'uses specific name for dossier directory' do + expect(PiecesJustificativesService.new(user_profile:, export_template:).liste_documents(dossiers).map(&:second)[0].starts_with?("DOSSIER-#{dossier.id}/pieces_justificatives")).to be true + end + end end context 'with an etablissement' do