diff --git a/siade/app/interactors/mi/associations/build_resource.rb b/siade/app/interactors/mi/associations/build_resource.rb index 470093d787..593895eb80 100644 --- a/siade/app/interactors/mi/associations/build_resource.rb +++ b/siade/app/interactors/mi/associations/build_resource.rb @@ -99,9 +99,9 @@ def activites end def reseaux_affiliation - return [] if association[:reseaux_affiliation].blank? + return [] if association[:affiliations].blank? - Array.wrap(association[:reseaux_affiliation][:reseau_affiliation]).map do |reseau_affiliation| + Array.wrap(association[:affiliations][:affiliation]).map do |reseau_affiliation| { nom: reseau_affiliation[:nom], numero: reseau_affiliation[:numero], @@ -122,9 +122,9 @@ def reseaux_affiliation end def composition_reseau - return [] if association[:composition_reseau].blank? + return [] if association[:compositions].blank? - Array.wrap(association[:composition_reseau][:membre]).map do |membre_reseau| + Array.wrap(association[:compositions][:membre]).map do |membre_reseau| { rna: membre_reseau[:id_rna], siret: membre_reseau[:id_siret], diff --git a/siade/app/interactors/mi/associations/payload_parser.rb b/siade/app/interactors/mi/associations/payload_parser.rb index c157cdd74b..5643cedfa6 100644 --- a/siade/app/interactors/mi/associations/payload_parser.rb +++ b/siade/app/interactors/mi/associations/payload_parser.rb @@ -1,8 +1,10 @@ class MI::Associations::PayloadParser SINGLE_ELEMENT_COLLECTIONS = { etablissements: :etablissement, - representants_legaux: :representant_legal, - agrements: :agrement + agrements: :agrement, + affiliations: :affiliation, + compositions: :membre, + representants_legaux: :representant_legal }.freeze EXPLODED_COLLECTIONS = { diff --git a/siade/spec/fixtures/payloads/mi/association-77567227238579.json b/siade/spec/fixtures/payloads/mi/association-77567227238579.json index d23915d5b4..8ff71a55e3 100644 --- a/siade/spec/fixtures/payloads/mi/association-77567227238579.json +++ b/siade/spec/fixtures/payloads/mi/association-77567227238579.json @@ -85,8 +85,8 @@ "note": "Association reconnue d'utilité publique" }, "specificites": "{\"passsport\": {\"activites\": \"!Multi activités physiques ou sportives\", \"est_volontaire\": \"true\"}}", - "reseaux_affiliation": { - "reseau_affiliation": { + "affiliations": [ + { "id_correspondance": "1234567", "nom": "CROIX ROUGE FRANCAISE", "id_rna": "W751004076", @@ -97,9 +97,9 @@ "nb_licencies_f": "1", "numero": "37050001" } - }, - "composition_reseau": { - "membre": { + ], + "compositions": [ + { "id_correspondance": "123456", "nom": "ARTS ET CULTURES EN FOLIE", "id_rna": "W532003071", @@ -116,7 +116,7 @@ "telephone": "0836656565", "courriel": "whatever@gouv.fr" } - }, + ], "representants_legaux": [ { "id": "234567", diff --git a/siade/spec/interactors/mi/associations/build_resource_spec.rb b/siade/spec/interactors/mi/associations/build_resource_spec.rb index 9af0d05558..e4e20249d5 100644 --- a/siade/spec/interactors/mi/associations/build_resource_spec.rb +++ b/siade/spec/interactors/mi/associations/build_resource_spec.rb @@ -50,6 +50,42 @@ expect(document_url).to eq("#{Siade.credentials[:mi_domain]}/apim/api-asso/documents/00000000-0000-0000-0000-000000000001") end end + + describe 'reseaux_affiliation' do + let(:reseau) { resource.reseaux_affiliation.first } + + it 'maps the provider fields' do + expect(reseau).to include( + nom: 'CROIX ROUGE FRANCAISE', + numero: '37050001', + rna: 'W751004076', + siret: '77567227221138', + nombre_licencies: { hommes: 1, femmes: 1, total: 2 } + ) + end + end + + describe 'composition_reseau' do + let(:membre) { resource.composition_reseau.first } + + it 'maps the provider fields' do + expect(membre).to include( + nom: 'ARTS ET CULTURES EN FOLIE', + rna: 'W532003071', + siret: '81412456600013' + ) + end + end + + describe 'representants_legaux' do + let(:representants_legaux) { resource.etablissements.first[:representants_legaux] } + + it 'maps the provider fields' do + expect(representants_legaux).to contain_exactly( + hash_including(nom: 'MARTIN', prenom: 'Jean', fonction: 'Directeur général') + ) + end + end end describe 'when payload has only one dac document (non-regression test)' do diff --git a/siade/spec/interactors/mi/associations/payload_parser_spec.rb b/siade/spec/interactors/mi/associations/payload_parser_spec.rb index af7b83322c..3e53e227ff 100644 --- a/siade/spec/interactors/mi/associations/payload_parser_spec.rb +++ b/siade/spec/interactors/mi/associations/payload_parser_spec.rb @@ -36,13 +36,19 @@ let(:body) do { etablissements: [{ id_siret: '111' }, { id_siret: '222' }], - agrements: [{ numero: '1' }] + agrements: [{ numero: '1' }], + affiliations: [{ nom: 'FEDERATION' }], + compositions: [{ nom: 'MEMBRE' }], + representants_legaux: [{ nom: 'Martin' }] }.to_json end it 'wraps each collection with its singular element key' do expect(parsed[:asso][:etablissements]).to eq(etablissement: [{ id_siret: '111' }, { id_siret: '222' }]) expect(parsed[:asso][:agrements]).to eq(agrement: [{ numero: '1' }]) + expect(parsed[:asso][:affiliations]).to eq(affiliation: [{ nom: 'FEDERATION' }]) + expect(parsed[:asso][:compositions]).to eq(membre: [{ nom: 'MEMBRE' }]) + expect(parsed[:asso][:representants_legaux]).to eq(representant_legal: [{ nom: 'Martin' }]) end end