Skip to content

Commit

Permalink
Merge pull request #3649 from betagouv/debug-chgt-api
Browse files Browse the repository at this point in the history
Fix affichage mandataires sociaux
  • Loading branch information
clairezed authored Oct 10, 2024
2 parents 20e9321 + 86b2384 commit 754f319
Show file tree
Hide file tree
Showing 6 changed files with 342 additions and 15 deletions.
4 changes: 4 additions & 0 deletions app/services/api_consumption/models/company/api_entreprise.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ def self.fields
]
end

def display_mandataires_sociaux?
!(mandataires_sociaux.is_a?(Hash) && mandataires_sociaux['error'])
end

def name
case type
when "personne_morale"
Expand Down
2 changes: 1 addition & 1 deletion app/views/companies/show.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
%h2= t('.siege_social')
= render partial: 'facility', locals: { etablissement: @siege_facility, caption: t('.siege_social') }

- if @company.mandataires_sociaux.present?
- if @company.display_mandataires_sociaux?
%section.fr-mb-6w
- @company.mandataires_sociaux.each do |mandataire|
= render partial: 'mandataire', locals: { mandataire: mandataire['data'] }
Binary file modified doc/domain_model.pdf
Binary file not shown.
126 changes: 126 additions & 0 deletions spec/fixtures/files/api_adapter_company_errors.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
{
"entreprise": {
"siren": "418166096",
"rna": null,
"siret_siege_social": "41816609600069",
"categorie_entreprise": "GE",
"type": "personne_morale",
"personne_morale_attributs": {
"raison_sociale": "OCTO-TECHNOLOGY",
"sigle": null
},
"personne_physique_attributs": {
"pseudonyme": null,
"prenom_usuel": null,
"prenom_1": null,
"prenom_2": null,
"prenom_3": null,
"prenom_4": null,
"nom_usage": null,
"nom_naissance": null,
"sexe": null
},
"diffusable_commercialement": true,
"status_diffusion": "diffusible",
"forme_juridique": {
"code": "5710",
"libelle": "SAS, société par actions simplifiée"
},
"activite_principale": {
"code": "62.02A",
"nomenclature": "NAFRev2",
"libelle": "Conseil en systèmes et logiciels informatiques"
},
"tranche_effectif_salarie": {
"de": 500,
"a": 999,
"code": "41",
"date_reference": "2022",
"intitule": "500 à 999 salariés"
},
"etat_administratif": "A",
"economie_sociale_et_solidaire": false,
"date_cessation": null,
"date_creation": 891381600,
"effectifs_entreprise_annuel":
{"error":
"Entité non trouvée : L'identifiant indiqué n'existe pas, n'est pas connu ou ne comporte aucune information pour cet appel. Veuillez vérifier que l'identifiant correspond au périmètre couvert par l'API."},
"mandataires_sociaux":
{"error":
"Entité non trouvée : Le siren indiqué n'existe pas, n'est pas connu ou ne comporte aucune information pour cet appel. Veuillez vérifier que l'identifiant correspond au périmètre couvert par l'API."},
"forme_exercice": "COMMERCIALE",
"description": "La conception le développement et la mise en oeuvre d'information et d'applications par le conseil et la mise en oeuvre innovante d'expertises technologiques et méthodologiques , la conception le développement et la distribution de solutions logicielles , l'accompagnement technologique méthodologique et culturel pour la réalisation de produits logiciels innovants et pour la transformation digitale des pratiques, processus et organisations des entreprises la formation dans le domaine des expertises technologiques et méthodologiques.",
"montant_capital": 509525.3,
"activites_secondaires": {
"etablissement_principal": {
"siret": "41816609600069",
"activites": [
{
"formeExercice": "COMMERCIALE",
"codeApe": "6202A",
"codeAprm": null
},
{
"formeExercice": "LIBERALE_NON_REGLEMENTEE",
"codeApe": "6202A",
"codeAprm": null
}
]
},
"autres_etablissements": [
{
"siret": "41816609600010",
"activites": [
{ "formeExercice": null, "codeApe": "721Z", "codeAprm": null }
]
},
{
"siret": "41816609600028",
"activites": [
{ "formeExercice": null, "codeApe": "721Z", "codeAprm": null }
]
},
{
"siret": "41816609600036",
"activites": [
{ "formeExercice": null, "codeApe": "721Z", "codeAprm": null }
]
},
{
"siret": "41816609600044",
"activites": [
{ "formeExercice": null, "codeApe": "721Z", "codeAprm": null }
]
},
{
"siret": "41816609600051",
"activites": [
{
"formeExercice": "LIBERALE_NON_REGLEMENTEE",
"codeApe": "6202A",
"codeAprm": null
}
]
},
{
"siret": "41816609600077",
"activites": [
{
"formeExercice": "COMMERCIALE",
"codeApe": "7112B",
"codeAprm": null
}
]
}
]
}
},
"links": {
"siege_social": "https://entreprise.api.gouv.fr/v3/insee/sirene/etablissements/41816609600069",
"siege_social_adresse": "https://entreprise.api.gouv.fr/v3/insee/sirene/etablissements/41816609600069/adresse"
},
"meta": {
"date_derniere_mise_a_jour": 1717106400,
"redirect_from_siren": null
}
}
173 changes: 173 additions & 0 deletions spec/fixtures/files/api_adapter_facility_errors.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
{
"etablissement": {
"siret": "41816609600069",
"siege_social": true,
"etat_administratif": "A",
"date_fermeture": null,
"enseigne": null,
"activite_principale": {
"code": "62.02A",
"nomenclature": "NAFRev2",
"libelle": "Conseil en systèmes et logiciels informatiques"
},
"tranche_effectif_salarie": {
"de": 500,
"a": 999,
"code": "41",
"date_reference": "2022",
"intitule": "500 à 999 salariés"
},
"diffusable_commercialement": true,
"status_diffusion": "diffusible",
"date_creation": 1480287600,
"unite_legale": {
"siren": "418166096",
"rna": null,
"siret_siege_social": "41816609600069",
"type": "personne_morale",
"personne_morale_attributs": {
"raison_sociale": "OCTO-TECHNOLOGY",
"sigle": null
},
"personne_physique_attributs": {
"pseudonyme": null,
"prenom_usuel": null,
"prenom_1": null,
"prenom_2": null,
"prenom_3": null,
"prenom_4": null,
"nom_usage": null,
"nom_naissance": null,
"sexe": null
},
"categorie_entreprise": "GE",
"status_diffusion": "diffusible",
"diffusable_commercialement": true,
"forme_juridique": {
"code": "5710",
"libelle": "SAS, société par actions simplifiée"
},
"activite_principale": {
"code": "62.02A",
"nomenclature": "NAFRev2",
"libelle": "Conseil en systèmes et logiciels informatiques"
},
"tranche_effectif_salarie": {
"de": 500,
"a": 999,
"code": "41",
"date_reference": "2022",
"intitule": "500 à 999 salariés"
},
"economie_sociale_et_solidaire": false,
"date_creation": 891381600,
"etat_administratif": "A"
},
"adresse": {
"status_diffusion": "diffusible",
"complement_adresse": null,
"numero_voie": "34",
"indice_repetition_voie": null,
"type_voie": "AVENUE",
"libelle_voie": "DE L'OPERA",
"code_postal": "75002",
"libelle_commune": "PARIS",
"libelle_commune_etranger": null,
"distribution_speciale": null,
"code_commune": "75102",
"code_cedex": null,
"libelle_cedex": null,
"code_pays_etranger": null,
"libelle_pays_etranger": null,
"acheminement_postal": {
"l1": "OCTO-TECHNOLOGY",
"l2": "",
"l3": "",
"l4": "34 AVENUE DE L'OPERA",
"l5": "",
"l6": "75002 PARIS",
"l7": "FRANCE"
}
},
"date_derniere_mise_a_jour": 1717106400,
"redirect_from_siret": null,
"effectifs_etablissement_mensuel": {
"error": "Entité non trouvée : L'identifiant indiqué n'existe pas, n'est pas connu ou ne comporte aucune information pour cet appel. Veuillez vérifier que l'identifiant correspond au périmètre couvert par l'API."
},
"opco_cfadock": { "error": "NOT_FOUND" },
"opco_fc": { "error": "Siret Not Found" },
"forme_exercice": "COMMERCIALE",
"description": "La conception le développement et la mise en oeuvre d'information et d'applications par le conseil et la mise en oeuvre innovante d'expertises technologiques et méthodologiques , la conception le développement et la distribution de solutions logicielles , l'accompagnement technologique méthodologique et culturel pour la réalisation de produits logiciels innovants et pour la transformation digitale des pratiques, processus et organisations des entreprises la formation dans le domaine des expertises technologiques et méthodologiques.",
"montant_capital": 509525.3,
"activites_secondaires": {
"etablissement_principal": {
"siret": "41816609600069",
"activites": [
{
"formeExercice": "COMMERCIALE",
"codeApe": "6202A",
"codeAprm": null
},
{
"formeExercice": "LIBERALE_NON_REGLEMENTEE",
"codeApe": "6202A",
"codeAprm": null
}
]
},
"autres_etablissements": [
{
"siret": "41816609600010",
"activites": [
{ "formeExercice": null, "codeApe": "721Z", "codeAprm": null }
]
},
{
"siret": "41816609600028",
"activites": [
{ "formeExercice": null, "codeApe": "721Z", "codeAprm": null }
]
},
{
"siret": "41816609600036",
"activites": [
{ "formeExercice": null, "codeApe": "721Z", "codeAprm": null }
]
},
{
"siret": "41816609600044",
"activites": [
{ "formeExercice": null, "codeApe": "721Z", "codeAprm": null }
]
},
{
"siret": "41816609600051",
"activites": [
{
"formeExercice": "LIBERALE_NON_REGLEMENTEE",
"codeApe": "6202A",
"codeAprm": null
}
]
},
{
"siret": "41816609600077",
"activites": [
{
"formeExercice": "COMMERCIALE",
"codeApe": "7112B",
"codeAprm": null
}
]
}
]
}
},
"links": {
"unite_legale": "https://entreprise.api.gouv.fr/v3/insee/sirene/unites_legales/418166096"
},
"meta": {
"date_derniere_mise_a_jour": 1717106400,
"redirect_from_siret": null
}
}
52 changes: 38 additions & 14 deletions spec/views/companies/show.html.haml_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,47 @@
RSpec.describe 'companies/show' do
login_user

let(:company_json) do
JSON.parse(file_fixture('api_adapter_company.json').read)
end
context 'with no API errors' do
let(:company_json) do
JSON.parse(file_fixture('api_adapter_company.json').read)
end

let(:facility_json) do
JSON.parse(file_fixture('api_adapter_facility.json').read)
end
let(:facility_json) do
JSON.parse(file_fixture('api_adapter_facility.json').read)
end

let(:diagnoses) { create_list :diagnosis, 2 }
let(:diagnoses) { create_list :diagnosis, 2 }

before do
assign :diagnosis, build(:diagnosis)
assign :facility, ApiConsumption::Models::Facility::ApiEntreprise.new(facility_json['etablissement'])
assign :company, ApiConsumption::Models::Company::ApiEntreprise.new(company_json['entreprise'])
assign :diagnoses, diagnoses
render
before do
assign :diagnosis, build(:diagnosis)
assign :facility, ApiConsumption::Models::Facility::ApiEntreprise.new(facility_json['etablissement'])
assign :company, ApiConsumption::Models::Company::ApiEntreprise.new(company_json['entreprise'])
assign :diagnoses, diagnoses
render
end

it('displays a title') { expect(rendered).to match(/Raison Sociale/) }
end

it('displays a title') { expect(rendered).to match(/Raison Sociale/) }
context 'with API minor errors' do
let(:company_json) do
JSON.parse(file_fixture('api_adapter_company_errors.json').read)
end

let(:facility_json) do
JSON.parse(file_fixture('api_adapter_facility_errors.json').read)
end

let(:diagnoses) { create_list :diagnosis, 2 }

before do
assign :diagnosis, build(:diagnosis)
assign :facility, ApiConsumption::Models::Facility::ApiEntreprise.new(facility_json['etablissement'])
assign :company, ApiConsumption::Models::Company::ApiEntreprise.new(company_json['entreprise'])
assign :diagnoses, diagnoses
render
end

it { expect(render).to have_css('h1', text: 'OCTO-TECHNOLOGY') }
end
end

0 comments on commit 754f319

Please sign in to comment.