Merge pull request #7571 from betagouv/usager/edit-siret-in-draft

feat: allows user to edit civility / siret from a dossier en brouillon
This commit is contained in:
Colin Darie 2022-07-18 10:11:29 +02:00 committed by GitHub
commit 1c42d5f63c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 199 additions and 134 deletions

View file

@ -32,7 +32,20 @@
.header-actions {
margin-bottom: $default-spacer;
text-align: right;
display: flex;
justify-content: flex-end;
column-gap: $default-spacer * 2;
}
}
.edit-identity-action {
.dropdown-content {
padding: $default-padding;
min-width: 250px;
}
.table {
margin-bottom: $default-padding * 2;
}
}

View file

@ -17,7 +17,7 @@ class Champs::SiretController < ApplicationController
begin
etablissement = find_etablissement_with_siret
rescue APIEntreprise::API::Error::RequestFailed, APIEntreprise::API::Error::BadGateway, APIEntreprise::API::Error::TimedOut, APIEntreprise::API::Error::ServiceUnavailable
rescue APIEntreprise::API::Error::RequestFailed, APIEntreprise::API::Error::BadGateway, APIEntreprise::API::Error::TimedOut, APIEntreprise::API::Error::ServiceUnavailable, APIEntrepriseToken::TokenError
# i18n-tasks-use t('errors.messages.siret_network_error')
return siret_error(:network_error)
end

View file

@ -114,7 +114,7 @@ module Users
sanitized_siret = siret_model.siret
begin
etablissement = APIEntrepriseService.create_etablissement(@dossier, sanitized_siret, current_user.id)
rescue APIEntreprise::API::Error::RequestFailed, APIEntreprise::API::Error::BadGateway, APIEntreprise::API::Error::TimedOut, APIEntreprise::API::Error::ServiceUnavailable
rescue APIEntreprise::API::Error::RequestFailed, APIEntreprise::API::Error::BadGateway, APIEntreprise::API::Error::TimedOut, APIEntreprise::API::Error::ServiceUnavailable, APIEntrepriseToken::TokenError
return render_siret_error(t('errors.messages.siret_network_error'))
end
if etablissement.nil?

View file

@ -82,7 +82,10 @@ class APIEntreprise::API
end
def self.call_with_siret(resource_name, siret_or_siren, procedure_id, user_id = nil)
return if APIEntrepriseToken.new(token_for_procedure(procedure_id)).expired?
if APIEntrepriseToken.new(token_for_procedure(procedure_id)).expired?
raise APIEntrepriseToken::TokenError, I18n.t("api_entreprise.errors.token_expired")
end
url = url(resource_name, siret_or_siren)
params = params(siret_or_siren, procedure_id, user_id)

View file

@ -13,3 +13,6 @@
- elsif current_user.owns?(dossier)
.header-actions
= render partial: 'invites/dropdown', locals: { dossier: dossier }
- unless dossier.read_only?
= render partial: 'users/dossiers/identity_dropdown', locals: { dossier: dossier }

View file

@ -11,6 +11,7 @@
%td.libelle SIRET :
%td= etablissement.siret
- unless local_assigns[:short_identity]
- if etablissement.siret != etablissement.entreprise.siret_siege_social
%tr
%td.libelle SIRET du siège social:
@ -144,7 +145,8 @@
%td.libelle Date de déclaration :
%td= try_format_date(etablissement.association_date_declaration)
%p
- unless local_assigns[:short_identity]
%p
= link_to "➡ Autres informations sur lorganisme sur « annuaire-entreprises.data.gouv.fr » (ex: fiche dimmatriculation RNCS)",
annuaire_link(etablissement.siren),
target: "_blank"

View file

@ -0,0 +1,17 @@
.dropdown.edit-identity-action{ data: { controller: 'menu-button', popover: 'true' } }
%button.button.dropdown-button{ data: { menu_button_target: 'button' } }
= t("views.shared.dossiers.demande.my_identity")
#edit-identity-content.dropdown-content.fade-in-down{ data: { menu_button_target: 'menu' } }
- if dossier.procedure.for_individual
= render partial: "shared/dossiers/identite_individual", locals: { individual: dossier.individual }
.center
= link_to t('views.shared.dossiers.demande.edit_identity'), identite_dossier_path(dossier), class: 'button'
- elsif dossier.etablissement
= render partial: "shared/dossiers/identite_entreprise", locals: { etablissement: dossier.etablissement, short_identity: true, profile: "usager" }
.center
= link_to t('views.shared.dossiers.demande.edit_siret'), siret_dossier_path(dossier), class: 'button'

View file

@ -2,3 +2,4 @@ en:
api_entreprise:
errors:
missing_token: "the API Entreprise token cannot be blank"
token_expired: "API Entreprise token has expired."

View file

@ -2,3 +2,4 @@ fr:
api_entreprise:
errors:
missing_token: "le jeton API Entreprise ne peut être vide"
token_expired: "Le jeton API Entreprise a expiré."

View file

@ -133,6 +133,7 @@ en:
write_message_to_administration_placeholder: "Write your message to the administration here"
demande:
requester_identity: "Identity of the requester"
my_identity: "My identity"
form: "Form"
edit_siret: "Edit SIRET"
edit_identity: "Edit identity data"

View file

@ -128,6 +128,7 @@ fr:
write_message_to_administration_placeholder: "Écrivez votre message à ladministration ici"
demande:
requester_identity: "Identité du demandeur"
my_identity: "Mon identité"
form: "Formulaire"
edit_siret: "Modifier le SIRET"
edit_identity: "Modifier lidentité"

View file

@ -271,7 +271,7 @@ describe Users::DossiersController, type: :controller do
let(:api_etablissement_status) { 200 }
let(:token_expired) { true }
it_behaves_like 'the request fails with an error', I18n.t('errors.messages.siret_unknown')
it_behaves_like 'the request fails with an error', I18n.t('errors.messages.siret_network_error')
end
context 'when all API informations available' do

View file

@ -267,7 +267,7 @@ describe APIEntreprise::API do
end
it 'makes no call to api-entreprise' do
subject
expect { subject }.to raise_error(APIEntrepriseToken::TokenError)
expect(WebMock).not_to have_requested(:get, /https:\/\/entreprise.api.gouv.fr\/v2\/entreprises\/#{siren}/)
end
end

View file

@ -52,4 +52,27 @@ describe 'dossiers/show/header.html.haml', type: :view do
end
end
end
describe "identity edit" do
context "when the identity is individual" do
let(:procedure) { create(:procedure, for_individual: true) }
let(:dossier) { create(:dossier, :with_individual, state: "brouillon", procedure: procedure) }
it "display identity with an edit link" do
expect(rendered).to have_text(/Nom\s+#{dossier.individual.nom}/)
expect(rendered).to have_link("Modifier lidentité")
end
end
context "when the identity is an enterprise" do
let(:procedure) { create(:procedure, for_individual: false) }
let(:dossier) { create(:dossier, :with_entreprise, state: "brouillon", procedure: procedure) }
it "display short identity with an edit siret link" do
expect(rendered).to have_text(/Dénomination :\s+#{dossier.etablissement.entreprise_raison_sociale}/)
expect(rendered).not_to have_text("Numéro de TVA")
expect(rendered).to have_link("Modifier le SIRET")
end
end
end
end