From 5a9468aa95a36e0f94038ad3a01d9327b8e3179a Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Tue, 30 Jul 2019 15:10:01 +0200 Subject: [PATCH] Fix repetition data export --- app/services/procedure_export_v2_service.rb | 12 +++++++----- spec/services/procedure_export_v2_service_spec.rb | 11 ++++++++--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/services/procedure_export_v2_service.rb b/app/services/procedure_export_v2_service.rb index 2252136dd..be5bf8ff0 100644 --- a/app/services/procedure_export_v2_service.rb +++ b/app/services/procedure_export_v2_service.rb @@ -53,15 +53,17 @@ class ProcedureExportV2Service [dossier.champs, dossier.champs_private] .flatten .select { |champ| champ.is_a?(Champs::RepetitionChamp) } - end + end.group_by(&:libelle) end def champs_repetables_options - champs_repetables.map do |champ| + champs_repetables.map do |libelle, champs| [ - champ.libelle, - champ.rows.each_with_index.map do |champs, index| - Champs::RepetitionChamp::Row.new(index: index + 1, dossier_id: champ.dossier_id.to_s, champs: champs) + libelle, + champs.flat_map do |champ| + champ.rows.each_with_index.map do |champs, index| + Champs::RepetitionChamp::Row.new(index: index + 1, dossier_id: champ.dossier_id.to_s, champs: champs) + end end ] end diff --git a/spec/services/procedure_export_v2_service_spec.rb b/spec/services/procedure_export_v2_service_spec.rb index 5790307bb..de36d0057 100644 --- a/spec/services/procedure_export_v2_service_spec.rb +++ b/spec/services/procedure_export_v2_service_spec.rb @@ -155,8 +155,13 @@ describe ProcedureExportV2Service do end context 'with repetitions' do - let!(:dossier) { create(:dossier, :en_instruction, :with_all_champs, :for_individual, procedure: procedure) } - let(:champ_repetition) { dossier.champs.find { |champ| champ.type_champ == 'repetition' } } + let!(:dossiers) do + [ + create(:dossier, :en_instruction, :with_all_champs, :for_individual, procedure: procedure), + create(:dossier, :en_instruction, :with_all_champs, :for_individual, procedure: procedure) + ] + end + let(:champ_repetition) { dossiers.first.champs.find { |champ| champ.type_champ == 'repetition' } } it 'should have sheets' do expect(subject.sheets.map(&:name)).to eq(['Dossiers', 'Etablissements', 'Avis', champ_repetition.libelle]) @@ -172,7 +177,7 @@ describe ProcedureExportV2Service do end it 'should have data' do - expect(repetition_sheet.data.size).to eq(2) + expect(repetition_sheet.data.size).to eq(4) end end end