rename Api into API
change api error managment refactor dossier controller rewrite test for dossier controller
This commit is contained in:
parent
f28e3ccbd3
commit
1e04916005
8 changed files with 127 additions and 61 deletions
|
@ -9,24 +9,23 @@ class DossiersController < ApplicationController
|
|||
end
|
||||
|
||||
def create
|
||||
@rescue_redirect = 'error_siret'
|
||||
@etablissement = Etablissement.new(SIADE::EtablissementAdapter.new(params[:siret]).to_params)
|
||||
@entreprise = Entreprise.new(SIADE::EntrepriseAdapter.new(params[:siret][0..-6]).to_params)
|
||||
|
||||
@dossier_id = params[:pro_dossier_id].strip
|
||||
|
||||
if @dossier_id != ""
|
||||
@rescue_redirect = 'error_dossier'
|
||||
|
||||
@dossier = Dossier.find(@dossier_id)
|
||||
@etablissement = @dossier.etablissement
|
||||
|
||||
if @etablissement.siret == params[:siret]
|
||||
if @dossier.siret == params[:siret]
|
||||
redirect_to url_for({controller: :recapitulatif, action: :show, dossier_id: @dossier_id})
|
||||
else
|
||||
raise 'Combinaison Dossier_ID / SIRET non valide'
|
||||
redirect_to url_for({controller: :start, action: :error_dossier})
|
||||
end
|
||||
else
|
||||
|
||||
|
||||
@etablissement = Etablissement.new(SIADE::EtablissementAdapter.new(params[:siret]).to_params)
|
||||
@entreprise = Entreprise.new(SIADE::EntrepriseAdapter.new(params[:siret][0..-6]).to_params)
|
||||
@dossier = Dossier.create
|
||||
|
||||
@entreprise.dossier = @dossier
|
||||
|
@ -38,9 +37,11 @@ class DossiersController < ApplicationController
|
|||
|
||||
redirect_to url_for({controller: :dossiers, action: :show, id: @dossier.id})
|
||||
end
|
||||
# TODO: Remove rescue
|
||||
rescue
|
||||
redirect_to url_for({controller: :start, action: @rescue_redirect})
|
||||
|
||||
rescue RestClient::ResourceNotFound
|
||||
redirect_to url_for({ controller: :start, action: :error_siret })
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
redirect_to url_for({controller: :start, action: :error_dossier})
|
||||
end
|
||||
|
||||
def update
|
||||
|
|
|
@ -8,6 +8,7 @@ ActiveSupport::Inflector.inflections(:en) do |inflect|
|
|||
# inflect.singular /^(ox)en/i, '\1'
|
||||
# inflect.irregular 'person', 'people'
|
||||
# inflect.uncountable %w( fish sheep )
|
||||
inflect.acronym 'API'
|
||||
inflect.irregular 'piece_jointe', 'pieces_jointes'
|
||||
inflect.irregular 'type_piece_jointe', 'types_piece_jointe'
|
||||
end
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
class SIADE::Api
|
||||
class SIADE::API
|
||||
|
||||
class << self
|
||||
attr_accessor :token
|
||||
|
@ -25,8 +25,6 @@ class SIADE::Api
|
|||
url,
|
||||
verify_ssl: verify_ssl_mode
|
||||
).get(params: { token: SIADETOKEN })
|
||||
rescue
|
||||
nil
|
||||
end
|
||||
|
||||
def self.base_url
|
||||
|
|
|
@ -5,7 +5,7 @@ class SIADE::EntrepriseAdapter
|
|||
end
|
||||
|
||||
def data_source
|
||||
@data_source ||= JSON.parse(SIADE::Api.entreprise(@siren), symbolize_names: true)
|
||||
@data_source ||= JSON.parse(SIADE::API.entreprise(@siren), symbolize_names: true)
|
||||
rescue
|
||||
@data_source = nil
|
||||
end
|
||||
|
|
|
@ -5,9 +5,7 @@ class SIADE::EtablissementAdapter
|
|||
end
|
||||
|
||||
def data_source
|
||||
@data_source ||= JSON.parse(SIADE::Api.etablissement(@siret), symbolize_names: true)
|
||||
rescue
|
||||
@data_source = nil
|
||||
@data_source ||= JSON.parse(SIADE::API.etablissement(@siret), symbolize_names: true)
|
||||
end
|
||||
|
||||
def to_params
|
||||
|
@ -25,8 +23,6 @@ class SIADE::EtablissementAdapter
|
|||
end
|
||||
end
|
||||
params
|
||||
rescue
|
||||
raise "SIRET Non reconnu"
|
||||
end
|
||||
|
||||
def attr_to_fetch
|
||||
|
|
|
@ -3,7 +3,7 @@ require 'spec_helper'
|
|||
RSpec.describe DossiersController, type: :controller do
|
||||
let(:dossier) { create(:dossier, :with_entreprise) }
|
||||
let (:dossier_id) { dossier.id }
|
||||
let (:bad_dossier_id) { 999999999999 }
|
||||
let (:siret_not_found) { 999999999999 }
|
||||
|
||||
let (:siren) { dossier.siren }
|
||||
let (:siret) { dossier.siret }
|
||||
|
@ -16,14 +16,14 @@ RSpec.describe DossiersController, type: :controller do
|
|||
end
|
||||
|
||||
it 'redirection vers start si mauvais dossier ID' do
|
||||
get :show, :id => bad_dossier_id
|
||||
get :show, :id => siret_not_found
|
||||
expect(response).to redirect_to('/start/error_dossier')
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST #create' do
|
||||
before do
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/etablissements/#{bad_siret}?token=#{SIADETOKEN}").
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/etablissements/#{siret_not_found}?token=#{SIADETOKEN}").
|
||||
to_return(:status => 404, :body => 'fake body')
|
||||
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/etablissements/#{siret}?token=#{SIADETOKEN}").
|
||||
|
@ -33,30 +33,74 @@ RSpec.describe DossiersController, type: :controller do
|
|||
to_return(:status => 200, :body => File.read('spec/support/files/entreprise.json'))
|
||||
end
|
||||
|
||||
context 'Le SIRET est correct' do
|
||||
it {
|
||||
post :create, :siret => siret, :pro_dossier_id => ''
|
||||
@last_dossier = ActiveRecord::Base.connection.execute("SELECT currval('dossiers_id_seq')")
|
||||
expect(response).to redirect_to("/dossiers/#{@last_dossier.getvalue(0,0)}")
|
||||
}
|
||||
end
|
||||
describe 'professionnel fills form' do
|
||||
context 'when pro_dossier_id is empty' do
|
||||
context 'with valid siret ' do
|
||||
before do
|
||||
post :create, siret: siret, pro_dossier_id: ''
|
||||
end
|
||||
|
||||
context 'Le SIRET n\'est pas correct' do
|
||||
it {
|
||||
post :create, :siret => bad_siret
|
||||
expect(response).to redirect_to('/start/error_siret')
|
||||
}
|
||||
end
|
||||
it 'create a dossier' do
|
||||
expect{ post :create, siret: siret, pro_dossier_id: '' }.to change{ Dossier.count }.by(1)
|
||||
end
|
||||
|
||||
context 'Un numéro de dossier est envoyé avec le SIRET' do
|
||||
it 'La combinaison SIRET / dossier_id est valide' do
|
||||
post :create, :siret => siret, :pro_dossier_id => dossier_id
|
||||
expect(response).to redirect_to("/dossiers/#{dossier_id}/recapitulatif")
|
||||
it 'creates entreprise' do
|
||||
expect{ post :create, siret: siret, pro_dossier_id: '' }.to change{ Entreprise.count }.by(1)
|
||||
end
|
||||
|
||||
it 'links entreprise to dossier' do
|
||||
expect(Entreprise.last.dossier).to eq(Dossier.last)
|
||||
end
|
||||
|
||||
it 'creates etablissement for dossier' do
|
||||
expect{ post :create, siret: siret, pro_dossier_id: '' }.to change{ Etablissement.count }.by(1)
|
||||
end
|
||||
|
||||
it 'links etablissement to dossier' do
|
||||
expect(Etablissement.last.dossier).to eq(Dossier.last)
|
||||
end
|
||||
|
||||
it 'links etablissement to entreprise' do
|
||||
expect(Etablissement.last.entreprise).to eq(Entreprise.last)
|
||||
end
|
||||
end
|
||||
|
||||
context 'with non existant siret' do
|
||||
let(:siret_not_found) { '11111111111111' }
|
||||
subject { post :create, siret: siret_not_found, pro_dossier_id: '' }
|
||||
it 'does not create new dossier' do
|
||||
expect{ subject }.not_to change{ Dossier.count }
|
||||
end
|
||||
|
||||
it 'redirects to show' do
|
||||
expect(subject).to redirect_to(controller: :start, action: :error_siret)
|
||||
end
|
||||
end
|
||||
end
|
||||
context 'when pro_dossier_id is not empty' do
|
||||
let!(:dossier) { create(:dossier, :with_entreprise) }
|
||||
subject { post :create, siret: dossier.siret ,pro_dossier_id: 99999999999}
|
||||
|
||||
it 'La combinaison SIRET (ok) et dossier_id (nok) n\'est pas valide' do
|
||||
post :create, :siret => siret, :pro_dossier_id => bad_dossier_id
|
||||
expect(response).to redirect_to("/start/error_dossier")
|
||||
context 'when dossier not found' do
|
||||
it 'redirects to start with error_dossier' do
|
||||
expect(subject).to redirect_to(controller: :start, action: :error_dossier)
|
||||
end
|
||||
end
|
||||
context 'when dossier found' do
|
||||
context 'when siret match' do
|
||||
subject { post :create, siret: dossier.siret ,pro_dossier_id: dossier.id}
|
||||
it 'redirects to controller recapitulatif' do
|
||||
expect(subject).to redirect_to(controller: :recapitulatif, action: :show, dossier_id: dossier.id)
|
||||
end
|
||||
|
||||
end
|
||||
context 'when siret does not match' do
|
||||
subject { post :create, siret: '11111111111111' ,pro_dossier_id: dossier.id}
|
||||
it 'redirects to start with action error_dossier' do
|
||||
expect(subject).to redirect_to(controller: :start, action: :error_dossier)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,32 +1,58 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe SIADE::EntrepriseAdapter do
|
||||
|
||||
context 'self.#entreprise bad SIREN' do
|
||||
let(:siren){1}
|
||||
subject { SIADE::Api.entreprise(siren) }
|
||||
describe SIADE::API do
|
||||
|
||||
describe '.entreprise' do
|
||||
subject { SIADE::API.entreprise(siren) }
|
||||
before do
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/entreprises/#{siren}?token=#{SIADETOKEN}").
|
||||
to_return(:status => 404, :body => "", :headers => {})
|
||||
to_return(:status => status, :body => body)
|
||||
end
|
||||
context 'when siren does not exist' do
|
||||
let(:siren) { '111111111' }
|
||||
let(:status) { 404 }
|
||||
let(:body) { '' }
|
||||
|
||||
it 'bad SIREN' do
|
||||
expect(subject).to eq(nil)
|
||||
it 'raises RestClient::ResourceNotFound' do
|
||||
expect{ subject }.to raise_error(RestClient::ResourceNotFound)
|
||||
end
|
||||
end
|
||||
context 'when siret exist' do
|
||||
let(:siren) { '418166096' }
|
||||
let(:status) { 200 }
|
||||
let(:body) { File.read('spec/support/files/entreprise.json') }
|
||||
|
||||
it 'returns response body' do
|
||||
expect(subject).to eq(body)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'self.#etablissement bad SIRET' do
|
||||
let(:siret){1}
|
||||
subject { SIADE::Api.etablissement(siret) }
|
||||
|
||||
describe '.etablissement' do
|
||||
subject { SIADE::API.etablissement(siret) }
|
||||
before do
|
||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/etablissements/#{siret}?token=#{SIADETOKEN}").
|
||||
to_return(:status => 404, :body => "", :headers => {})
|
||||
to_return(:status => status, :body => body)
|
||||
end
|
||||
|
||||
it 'bad SIRET' do
|
||||
expect(subject).to eq(nil)
|
||||
context 'when siret does not exist' do
|
||||
let(:siret) { '11111111111111' }
|
||||
let(:status) { 404 }
|
||||
let(:body) { '' }
|
||||
|
||||
it 'raises RestClient::ResourceNotFound' do
|
||||
expect{ subject }.to raise_error(RestClient::ResourceNotFound)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when siret exists' do
|
||||
let(:siret) { '41816609600051' }
|
||||
let(:status) { 200 }
|
||||
let(:body) { File.read('spec/support/files/etablissement.json') }
|
||||
|
||||
it 'returns body' do
|
||||
expect(subject).to eq(body)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -70,8 +70,8 @@ describe SIADE::EtablissementAdapter do
|
|||
end
|
||||
end
|
||||
|
||||
context 'SIRET Inconnu' do
|
||||
let(:bad_siret){1}
|
||||
context 'when siret is not found' do
|
||||
let(:bad_siret){ 11111111111111 }
|
||||
subject { SIADE::EtablissementAdapter.new(bad_siret).to_params }
|
||||
|
||||
before do
|
||||
|
@ -79,8 +79,8 @@ describe SIADE::EtablissementAdapter do
|
|||
.to_return(body: 'Fake body', status: 404)
|
||||
end
|
||||
|
||||
it 'retour de nil' do
|
||||
expect{subject}.to raise_error ('SIRET Non reconnu')
|
||||
it 'raises exception RestClient::ResourceNotFound' do
|
||||
expect{subject}.to raise_error (RestClient::ResourceNotFound)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Reference in a new issue