From a9360a8be22b17105a0b6687061e5d70d0d16441 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Wed, 28 Mar 2018 15:24:43 +0200 Subject: [PATCH 1/5] Mutualize Adapter initialization in a class and method --- app/lib/api_entreprise/adapter.rb | 6 ++++++ app/lib/api_entreprise/entreprise_adapter.rb | 9 ++------- app/lib/api_entreprise/etablissement_adapter.rb | 9 ++------- app/lib/api_entreprise/exercices_adapter.rb | 9 ++------- app/lib/api_entreprise/rna_adapter.rb | 9 ++------- 5 files changed, 14 insertions(+), 28 deletions(-) create mode 100644 app/lib/api_entreprise/adapter.rb diff --git a/app/lib/api_entreprise/adapter.rb b/app/lib/api_entreprise/adapter.rb new file mode 100644 index 000000000..c7769683e --- /dev/null +++ b/app/lib/api_entreprise/adapter.rb @@ -0,0 +1,6 @@ +class ApiEntreprise::Adapter + def initialize(siret_or_siren, procedure_id) + @siret_or_siren = siret_or_siren + @procedure_id = procedure_id + end +end diff --git a/app/lib/api_entreprise/entreprise_adapter.rb b/app/lib/api_entreprise/entreprise_adapter.rb index 37d78f58f..dc19bc8ca 100644 --- a/app/lib/api_entreprise/entreprise_adapter.rb +++ b/app/lib/api_entreprise/entreprise_adapter.rb @@ -1,9 +1,4 @@ -class ApiEntreprise::EntrepriseAdapter - def initialize(siren, procedure_id) - @siren = siren - @procedure_id = procedure_id - end - +class ApiEntreprise::EntrepriseAdapter < ApiEntreprise::Adapter def to_params if data_source.present? params = data_source[:entreprise].slice(*attr_to_fetch) @@ -17,7 +12,7 @@ class ApiEntreprise::EntrepriseAdapter private def data_source - @data_source ||= ApiEntreprise::API.entreprise(@siren, @procedure_id) + @data_source ||= ApiEntreprise::API.entreprise(@siret_or_siren, @procedure_id) rescue @data_source = nil end diff --git a/app/lib/api_entreprise/etablissement_adapter.rb b/app/lib/api_entreprise/etablissement_adapter.rb index d1312a274..1bad20a75 100644 --- a/app/lib/api_entreprise/etablissement_adapter.rb +++ b/app/lib/api_entreprise/etablissement_adapter.rb @@ -1,9 +1,4 @@ -class ApiEntreprise::EtablissementAdapter - def initialize(siret, procedure_id) - @siret = siret - @procedure_id = procedure_id - end - +class ApiEntreprise::EtablissementAdapter < ApiEntreprise::Adapter def to_params if data_source.present? params = data_source[:etablissement].slice(*attr_to_fetch) @@ -19,7 +14,7 @@ class ApiEntreprise::EtablissementAdapter private def data_source - @data_source ||= ApiEntreprise::API.etablissement(@siret, @procedure_id) + @data_source ||= ApiEntreprise::API.etablissement(@siret_or_siren, @procedure_id) rescue @data_source = nil end diff --git a/app/lib/api_entreprise/exercices_adapter.rb b/app/lib/api_entreprise/exercices_adapter.rb index a8a9d1812..ce97b6ee2 100644 --- a/app/lib/api_entreprise/exercices_adapter.rb +++ b/app/lib/api_entreprise/exercices_adapter.rb @@ -1,9 +1,4 @@ -class ApiEntreprise::ExercicesAdapter - def initialize(siret, procedure_id) - @siret = siret - @procedure_id = procedure_id - end - +class ApiEntreprise::ExercicesAdapter < ApiEntreprise::Adapter def to_array if data_source.present? data_source[:exercices].map do |exercice| @@ -17,7 +12,7 @@ class ApiEntreprise::ExercicesAdapter private def data_source - @data_source ||= ApiEntreprise::API.exercices(@siret, @procedure_id) + @data_source ||= ApiEntreprise::API.exercices(@siret_or_siren, @procedure_id) rescue @data_source = nil end diff --git a/app/lib/api_entreprise/rna_adapter.rb b/app/lib/api_entreprise/rna_adapter.rb index 0e6b5c949..0930a3eee 100644 --- a/app/lib/api_entreprise/rna_adapter.rb +++ b/app/lib/api_entreprise/rna_adapter.rb @@ -1,9 +1,4 @@ -class ApiEntreprise::RNAAdapter - def initialize(siret, procedure_id) - @siret = siret - @procedure_id = procedure_id - end - +class ApiEntreprise::RNAAdapter < ApiEntreprise::Adapter def to_params if data_source.present? && data_source[:association][:id].present? params = data_source[:association].slice(*attr_to_fetch) @@ -17,7 +12,7 @@ class ApiEntreprise::RNAAdapter private def data_source - @data_source ||= ApiEntreprise::API.rna(@siret, @procedure_id) + @data_source ||= ApiEntreprise::API.rna(@siret_or_siren, @procedure_id) rescue @data_source = nil end From 68c9849977d660c6beeae8534387ee865f3f9f77 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Mon, 19 Mar 2018 15:05:56 +0100 Subject: [PATCH 2/5] =?UTF-8?q?Mutualize=20the=20adapters=E2=80=99=20#data?= =?UTF-8?q?=5Fsource=20methods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/lib/api_entreprise/adapter.rb | 6 ++++++ app/lib/api_entreprise/entreprise_adapter.rb | 6 ++---- app/lib/api_entreprise/etablissement_adapter.rb | 6 ++---- app/lib/api_entreprise/exercices_adapter.rb | 6 ++---- app/lib/api_entreprise/rna_adapter.rb | 6 ++---- 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/app/lib/api_entreprise/adapter.rb b/app/lib/api_entreprise/adapter.rb index c7769683e..3669026fb 100644 --- a/app/lib/api_entreprise/adapter.rb +++ b/app/lib/api_entreprise/adapter.rb @@ -3,4 +3,10 @@ class ApiEntreprise::Adapter @siret_or_siren = siret_or_siren @procedure_id = procedure_id end + + def data_source + @data_source ||= get_resource + rescue + @data_source = nil + end end diff --git a/app/lib/api_entreprise/entreprise_adapter.rb b/app/lib/api_entreprise/entreprise_adapter.rb index dc19bc8ca..e68430860 100644 --- a/app/lib/api_entreprise/entreprise_adapter.rb +++ b/app/lib/api_entreprise/entreprise_adapter.rb @@ -11,10 +11,8 @@ class ApiEntreprise::EntrepriseAdapter < ApiEntreprise::Adapter private - def data_source - @data_source ||= ApiEntreprise::API.entreprise(@siret_or_siren, @procedure_id) - rescue - @data_source = nil + def get_resource + ApiEntreprise::API.entreprise(@siret_or_siren, @procedure_id) end def attr_to_fetch diff --git a/app/lib/api_entreprise/etablissement_adapter.rb b/app/lib/api_entreprise/etablissement_adapter.rb index 1bad20a75..e7532386e 100644 --- a/app/lib/api_entreprise/etablissement_adapter.rb +++ b/app/lib/api_entreprise/etablissement_adapter.rb @@ -13,10 +13,8 @@ class ApiEntreprise::EtablissementAdapter < ApiEntreprise::Adapter private - def data_source - @data_source ||= ApiEntreprise::API.etablissement(@siret_or_siren, @procedure_id) - rescue - @data_source = nil + def get_resource + ApiEntreprise::API.etablissement(@siret_or_siren, @procedure_id) end def attr_to_fetch diff --git a/app/lib/api_entreprise/exercices_adapter.rb b/app/lib/api_entreprise/exercices_adapter.rb index ce97b6ee2..fe024456a 100644 --- a/app/lib/api_entreprise/exercices_adapter.rb +++ b/app/lib/api_entreprise/exercices_adapter.rb @@ -11,10 +11,8 @@ class ApiEntreprise::ExercicesAdapter < ApiEntreprise::Adapter private - def data_source - @data_source ||= ApiEntreprise::API.exercices(@siret_or_siren, @procedure_id) - rescue - @data_source = nil + def get_resource + ApiEntreprise::API.exercices(@siret_or_siren, @procedure_id) end def attr_to_fetch diff --git a/app/lib/api_entreprise/rna_adapter.rb b/app/lib/api_entreprise/rna_adapter.rb index 0930a3eee..d527bcb5b 100644 --- a/app/lib/api_entreprise/rna_adapter.rb +++ b/app/lib/api_entreprise/rna_adapter.rb @@ -11,10 +11,8 @@ class ApiEntreprise::RNAAdapter < ApiEntreprise::Adapter private - def data_source - @data_source ||= ApiEntreprise::API.rna(@siret_or_siren, @procedure_id) - rescue - @data_source = nil + def get_resource + ApiEntreprise::API.rna(@siret_or_siren, @procedure_id) end def attr_to_fetch From 54ab0ec5f0a9240ef3f740d7c06a09f953d94eb5 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Mon, 19 Mar 2018 15:30:44 +0100 Subject: [PATCH 3/5] Extract code in a #handle_legacy_models! method --- app/services/siret_service.rb | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/services/siret_service.rb b/app/services/siret_service.rb index 0fb42cb81..e0f6008c1 100644 --- a/app/services/siret_service.rb +++ b/app/services/siret_service.rb @@ -16,12 +16,7 @@ class SIRETService # This is to fill legacy models and relationships if dossier.present? - params[:entreprise_attributes] = entreprise_params.merge( - { - dossier: dossier, - rna_information_attributes: association_params.presence - }.compact - ) + handle_legacy_models!(params, entreprise_params, dossier, association_params) end params @@ -31,4 +26,13 @@ class SIRETService def self.siren(siret) siret[0..8] end + + def self.handle_legacy_models!(params, entreprise_params, dossier, association_params) + params[:entreprise_attributes] = entreprise_params.merge( + { + dossier: dossier, + rna_information_attributes: association_params.presence + }.compact + ) + end end From 5f1394cd7f747352c53876497d63a60046673daf Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Mon, 19 Mar 2018 15:43:15 +0100 Subject: [PATCH 4/5] ExercicesAdapter#to_array -> ExercicesAdapter#to_params --- app/lib/api_entreprise/exercices_adapter.rb | 8 +++++--- app/services/siret_service.rb | 4 ++-- spec/lib/api_entreprise/exercices_adapter_spec.rb | 14 +++++++------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/app/lib/api_entreprise/exercices_adapter.rb b/app/lib/api_entreprise/exercices_adapter.rb index fe024456a..4a0db763e 100644 --- a/app/lib/api_entreprise/exercices_adapter.rb +++ b/app/lib/api_entreprise/exercices_adapter.rb @@ -1,11 +1,13 @@ class ApiEntreprise::ExercicesAdapter < ApiEntreprise::Adapter - def to_array + def to_params if data_source.present? - data_source[:exercices].map do |exercice| + exercices_array = data_source[:exercices].map do |exercice| exercice.slice(*attr_to_fetch) end + + { exercices_attributes: exercices_array } else - [] + {} end end diff --git a/app/services/siret_service.rb b/app/services/siret_service.rb index e0f6008c1..869039ea5 100644 --- a/app/services/siret_service.rb +++ b/app/services/siret_service.rb @@ -7,12 +7,12 @@ class SIRETService if etablissement_params.present? && entreprise_params.present? association_params = ApiEntreprise::RNAAdapter.new(siret, procedure_id).to_params - exercices_array = ApiEntreprise::ExercicesAdapter.new(siret, procedure_id).to_array + exercices_params = ApiEntreprise::ExercicesAdapter.new(siret, procedure_id).to_params params = etablissement_params .merge(entreprise_params.transform_keys { |k| "entreprise_#{k}" }) .merge(association_params.transform_keys { |k| "association_#{k}" }) - .merge(exercices_attributes: exercices_array) + .merge(exercices_params) # This is to fill legacy models and relationships if dossier.present? diff --git a/spec/lib/api_entreprise/exercices_adapter_spec.rb b/spec/lib/api_entreprise/exercices_adapter_spec.rb index 591a8e395..4feec27da 100644 --- a/spec/lib/api_entreprise/exercices_adapter_spec.rb +++ b/spec/lib/api_entreprise/exercices_adapter_spec.rb @@ -3,32 +3,32 @@ require 'spec_helper' describe ApiEntreprise::ExercicesAdapter do let(:siret) { '41816609600051' } let(:procedure_id) { 11 } - subject { described_class.new(siret, procedure_id).to_array } + subject { described_class.new(siret, procedure_id).to_params } before do stub_request(:get, /https:\/\/staging.entreprise.api.gouv.fr\/v2\/exercices\/.*token=/) .to_return(body: File.read('spec/support/files/exercices.json', status: 200)) end - it '#to_array class est un Array ?' do - expect(subject).to be_an_instance_of(Array) + it '#to_params class est un Hash ?' do + expect(subject).to be_an_instance_of(Hash) end it 'have 3 exercices' do - expect(subject.size).to eq(3) + expect(subject[:exercices_attributes].size).to eq(3) end context 'Attributs Exercices' do it 'L\'exercice contient bien un ca' do - expect(subject[0][:ca]).to eq('21009417') + expect(subject[:exercices_attributes][0][:ca]).to eq('21009417') end it 'L\'exercice contient bien une date de fin d\'exercice' do - expect(subject[0][:date_fin_exercice]).to eq("2013-12-31T00:00:00+01:00") + expect(subject[:exercices_attributes][0][:date_fin_exercice]).to eq("2013-12-31T00:00:00+01:00") end it 'L\'exercice contient bien une date_fin_exercice_timestamp' do - expect(subject[0][:date_fin_exercice_timestamp]).to eq(1388444400) + expect(subject[:exercices_attributes][0][:date_fin_exercice_timestamp]).to eq(1388444400) end end end From 67cf614879b7893a51053556ca508d524876f7b0 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Mon, 19 Mar 2018 15:45:55 +0100 Subject: [PATCH 5/5] Mutualize some code on ApiEntreprise::Adapter --- app/lib/api_entreprise/adapter.rb | 8 ++++++++ app/lib/api_entreprise/entreprise_adapter.rb | 16 ++++++--------- .../api_entreprise/etablissement_adapter.rb | 20 ++++++++----------- app/lib/api_entreprise/exercices_adapter.rb | 20 ++++++++----------- app/lib/api_entreprise/rna_adapter.rb | 16 +++++++-------- 5 files changed, 38 insertions(+), 42 deletions(-) diff --git a/app/lib/api_entreprise/adapter.rb b/app/lib/api_entreprise/adapter.rb index 3669026fb..21b2ff182 100644 --- a/app/lib/api_entreprise/adapter.rb +++ b/app/lib/api_entreprise/adapter.rb @@ -9,4 +9,12 @@ class ApiEntreprise::Adapter rescue @data_source = nil end + + def to_params + if data_source.present? + process_params + else + {} + end + end end diff --git a/app/lib/api_entreprise/entreprise_adapter.rb b/app/lib/api_entreprise/entreprise_adapter.rb index e68430860..3758e065b 100644 --- a/app/lib/api_entreprise/entreprise_adapter.rb +++ b/app/lib/api_entreprise/entreprise_adapter.rb @@ -1,20 +1,16 @@ class ApiEntreprise::EntrepriseAdapter < ApiEntreprise::Adapter - def to_params - if data_source.present? - params = data_source[:entreprise].slice(*attr_to_fetch) - params[:date_creation] = Time.at(params[:date_creation]).to_datetime - params - else - {} - end - end - private def get_resource ApiEntreprise::API.entreprise(@siret_or_siren, @procedure_id) end + def process_params + params = data_source[:entreprise].slice(*attr_to_fetch) + params[:date_creation] = Time.at(params[:date_creation]).to_datetime + params + end + def attr_to_fetch [ :siren, diff --git a/app/lib/api_entreprise/etablissement_adapter.rb b/app/lib/api_entreprise/etablissement_adapter.rb index e7532386e..accfa5fe6 100644 --- a/app/lib/api_entreprise/etablissement_adapter.rb +++ b/app/lib/api_entreprise/etablissement_adapter.rb @@ -1,22 +1,18 @@ class ApiEntreprise::EtablissementAdapter < ApiEntreprise::Adapter - def to_params - if data_source.present? - params = data_source[:etablissement].slice(*attr_to_fetch) - adresse_line = params[:adresse].slice(*address_lines_to_fetch).values.compact.join("\r\n") - params.merge!(params[:adresse].slice(*address_attr_to_fetch)) - params[:adresse] = adresse_line - params - else - {} - end - end - private def get_resource ApiEntreprise::API.etablissement(@siret_or_siren, @procedure_id) end + def process_params + params = data_source[:etablissement].slice(*attr_to_fetch) + adresse_line = params[:adresse].slice(*address_lines_to_fetch).values.compact.join("\r\n") + params.merge!(params[:adresse].slice(*address_attr_to_fetch)) + params[:adresse] = adresse_line + params + end + def attr_to_fetch [ :adresse, diff --git a/app/lib/api_entreprise/exercices_adapter.rb b/app/lib/api_entreprise/exercices_adapter.rb index 4a0db763e..a64258580 100644 --- a/app/lib/api_entreprise/exercices_adapter.rb +++ b/app/lib/api_entreprise/exercices_adapter.rb @@ -1,22 +1,18 @@ class ApiEntreprise::ExercicesAdapter < ApiEntreprise::Adapter - def to_params - if data_source.present? - exercices_array = data_source[:exercices].map do |exercice| - exercice.slice(*attr_to_fetch) - end - - { exercices_attributes: exercices_array } - else - {} - end - end - private def get_resource ApiEntreprise::API.exercices(@siret_or_siren, @procedure_id) end + def process_params + exercices_array = data_source[:exercices].map do |exercice| + exercice.slice(*attr_to_fetch) + end + + { exercices_attributes: exercices_array } + end + def attr_to_fetch [ :ca, diff --git a/app/lib/api_entreprise/rna_adapter.rb b/app/lib/api_entreprise/rna_adapter.rb index d527bcb5b..74b21ba39 100644 --- a/app/lib/api_entreprise/rna_adapter.rb +++ b/app/lib/api_entreprise/rna_adapter.rb @@ -1,6 +1,12 @@ class ApiEntreprise::RNAAdapter < ApiEntreprise::Adapter - def to_params - if data_source.present? && data_source[:association][:id].present? + private + + def get_resource + ApiEntreprise::API.rna(@siret_or_siren, @procedure_id) + end + + def process_params + if data_source[:association][:id].present? params = data_source[:association].slice(*attr_to_fetch) params[:rna] = data_source[:association][:id] params @@ -9,12 +15,6 @@ class ApiEntreprise::RNAAdapter < ApiEntreprise::Adapter end end - private - - def get_resource - ApiEntreprise::API.rna(@siret_or_siren, @procedure_id) - end - def attr_to_fetch [ :titre,