diff --git a/app/services/pieces_justificatives_service.rb b/app/services/pieces_justificatives_service.rb index 9cb94b66f..7d67ee8a7 100644 --- a/app/services/pieces_justificatives_service.rb +++ b/app/services/pieces_justificatives_service.rb @@ -84,11 +84,23 @@ class PiecesJustificativesService def acl_for_dossier_export case @user_profile when Expert - { include_infos_administration: true, include_avis_for_expert: true, only_for_expert: @user_profile } + { + include_infos_administration: true, + include_avis_for_expert: true, + only_for_expert: @user_profile + } when Instructeur, Administrateur - { include_infos_administration: true, include_avis_for_expert: true, only_for_export: false } + { + include_infos_administration: true, + include_avis_for_expert: true, + only_for_export: false + } when User - { include_infos_administration: false, include_avis_for_expert: false, only_for_expert: false } + { + include_infos_administration: false, + include_avis_for_expert: false, # should be true, expert can use the messagerie, why not provide avis ? + only_for_expert: false + } else raise 'not supported' end @@ -216,7 +228,7 @@ class PiecesJustificativesService ActiveStorage::Attachment .includes(:blob) - .where(record_type: "Avis", name: "piece_justificative_file", record_id: avis_ids_dossier_id.keys) + .where(record_type: "Avis", record_id: avis_ids_dossier_id.keys) .filter { |a| safe_attachment(a) } .map do |a| dossier_id = avis_ids_dossier_id[a.record_id] diff --git a/spec/services/pieces_justificatives_service_spec.rb b/spec/services/pieces_justificatives_service_spec.rb index fca7c3a0f..61420f603 100644 --- a/spec/services/pieces_justificatives_service_spec.rb +++ b/spec/services/pieces_justificatives_service_spec.rb @@ -224,19 +224,20 @@ describe PiecesJustificativesService do } avis.piece_justificative_file.attach(to_be_attached) + avis.introduction_file.attach(avis.piece_justificative_file.blob) end context 'given an administrateur' do let(:user_profile) { build(:administrateur) } it "doesn't return confidentiel avis.piece_justificative_file" do - expect(subject).not_to be_empty + expect(subject.size).to eq(2) end end context 'given an instructeur' do let(:user_profile) { create(:instructeur) } it "doesn't return confidentiel avis.piece_justificative_file" do - expect(subject).not_to be_empty + expect(subject.size).to eq(2) end end @@ -251,7 +252,7 @@ describe PiecesJustificativesService do context 'with avis.piece_justificative being public' do let(:procedure) { create(:procedure) } let(:dossier) { create(:dossier, procedure: procedure) } - let(:avis) { create(:avis, dossier: dossier) } + let(:avis) { create(:avis, dossier: dossier, confidentiel: false) } before do to_be_attached = { io: StringIO.new("toto"), @@ -261,26 +262,27 @@ describe PiecesJustificativesService do } avis.piece_justificative_file.attach(to_be_attached) + avis.introduction_file.attach(avis.piece_justificative_file.blob) end context 'given an administrateur' do let(:user_profile) { build(:administrateur) } it "doesn't return confidentiel avis.piece_justificative_file" do - expect(subject).not_to be_empty + expect(subject.size).to eq(2) end end context 'given an instructeur' do let(:user_profile) { create(:instructeur) } it "doesn't return confidentiel avis.piece_justificative_file" do - expect(subject).not_to be_empty + expect(subject.size).to eq(2) end end context 'given an expert' do let(:user_profile) { create(:expert) } it "doesn't return confidentiel avis.piece_justificative_file" do - expect(subject).not_to be_empty + expect(subject.size).to eq(2) end end end