From 637bde7326c2682b4677abf841e38b7714f29608 Mon Sep 17 00:00:00 2001 From: Christophe Robillard Date: Mon, 18 May 2020 14:26:11 +0200 Subject: [PATCH] update siret_controller when finding etablissement now, `ApiEntrepriseService` does'nt return a hash anymore but an etablissement which is already persisted. --- app/controllers/champs/siret_controller.rb | 7 +--- .../champs/siret_controller_spec.rb | 40 +++++++++---------- 2 files changed, 21 insertions(+), 26 deletions(-) diff --git a/app/controllers/champs/siret_controller.rb b/app/controllers/champs/siret_controller.rb index 0eabd821e..a099f25c4 100644 --- a/app/controllers/champs/siret_controller.rb +++ b/app/controllers/champs/siret_controller.rb @@ -19,7 +19,7 @@ class Champs::SiretController < ApplicationController rescue ApiEntreprise::API::RequestFailed return siret_error(:network_error) end - if etablissement.blank? + if etablissement.nil? return siret_error(:not_found) end @@ -50,10 +50,7 @@ class Champs::SiretController < ApplicationController end def find_etablissement_with_siret - etablissement_attributes = ApiEntrepriseService.get_etablissement_params_for_siret(@siret, @procedure_id) - if etablissement_attributes.present? - Etablissement.new(etablissement_attributes) - end + ApiEntrepriseService.create_etablissement(@champ.dossier, @siret, current_user.id) end def clear_siret_and_etablissement diff --git a/spec/controllers/champs/siret_controller_spec.rb b/spec/controllers/champs/siret_controller_spec.rb index cc9929ebb..4bd3e4eb3 100644 --- a/spec/controllers/champs/siret_controller_spec.rb +++ b/spec/controllers/champs/siret_controller_spec.rb @@ -20,7 +20,17 @@ describe Champs::SiretController, type: :controller do context 'when the user is signed in' do render_views - before { sign_in user } + let(:api_etablissement_status) { 200 } + let(:api_etablissement_body) { File.read('spec/fixtures/files/api_entreprise/etablissements.json') } + let(:token_expired) { false } + before do + sign_in user + stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v2\/etablissements\/#{siret}?.*token=/) + .to_return(status: api_etablissement_status, body: api_etablissement_body) + allow_any_instance_of(ApiEntrepriseToken).to receive(:roles) + .and_return(["attestations_fiscales", "attestations_sociales", "bilans_entreprise_bdf"]) + allow_any_instance_of(ApiEntrepriseToken).to receive(:expired?).and_return(token_expired) + end context 'when the SIRET is empty' do subject! { get :show, params: params, format: 'js' } @@ -55,10 +65,7 @@ describe Champs::SiretController, type: :controller do context 'when the API is unavailable' do let(:siret) { '82161143100015' } - - before do - allow(controller).to receive(:find_etablissement_with_siret).and_raise(ApiEntreprise::API::RequestFailed) - end + let(:api_etablissement_status) { 503 } subject! { get :show, params: params, format: 'js' } @@ -75,10 +82,7 @@ describe Champs::SiretController, type: :controller do context 'when the SIRET is valid but unknown' do let(:siret) { '00000000000000' } - - before do - allow(controller).to receive(:find_etablissement_with_siret).and_return(false) - end + let(:api_etablissement_status) { 404 } subject! { get :show, params: params, format: 'js' } @@ -94,23 +98,17 @@ describe Champs::SiretController, type: :controller do end context 'when the SIRET informations are retrieved successfully' do - let(:siret) { etablissement.siret } - let(:etablissement) { build(:etablissement) } - - before do - allow(controller).to receive(:find_etablissement_with_siret).and_return(etablissement) - end + let(:siret) { '41816609600051' } + let(:api_etablissement_status) { 200 } + let(:api_etablissement_body) { File.read('spec/fixtures/files/api_entreprise/etablissements.json') } subject! { get :show, params: params, format: 'js' } it 'populates the etablissement and SIRET on the model' do champ.reload - expect(champ.value).to eq(etablissement.siret) - expect(champ.etablissement.siret).to eq(etablissement.siret) - end - - it 'displays the name of the company' do - expect(response.body).to include(etablissement.entreprise_raison_sociale) + expect(champ.value).to eq(siret) + expect(champ.etablissement.siret).to eq(siret) + expect(champ.reload.etablissement.naf).to eq("6202A") end end end