From 46998cb7907912f01dee371468ea328886652822 Mon Sep 17 00:00:00 2001 From: Maud Royer Date: Fri, 28 Jun 2024 12:28:52 +0100 Subject: [PATCH] fix: validation niveau de certification dans l'API Signed-off-by: Maud Royer --- lib/outputs/record.js | 8 +++++++- lib/providers/cartobio.js | 9 ++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/outputs/record.js b/lib/outputs/record.js index 1054fb83..d3f26ed3 100644 --- a/lib/outputs/record.js +++ b/lib/outputs/record.js @@ -39,13 +39,19 @@ function normalizeRecordSummary (record) { /** * @param {String} etat + * @param {object} options + * @param {boolean} options.strict * @returns {EtatProduction|String} */ -function normalizeEtatProduction (etat) { +function normalizeEtatProduction (etat, options = { strict: false }) { if (Object.hasOwn(EtatProduction, etat)) { return EtatProduction[etat] } + if (options.strict) { + throw new Error(`EtatProduction invalide: ${etat}`) + } + return etat } diff --git a/lib/providers/cartobio.js b/lib/providers/cartobio.js index 199590d1..7f91cee4 100644 --- a/lib/providers/cartobio.js +++ b/lib/providers/cartobio.js @@ -1119,6 +1119,13 @@ async function * parseAPIParcellaireStream (stream, { organismeCertificateur }) const pac = parsePacDetailsFromComment(parcelle.commentaire) const numeroIlot = parseInt(String(parcelle.numeroIlot), 10) const numeroParcelle = parseInt(String(parcelle.numeroParcelle), 10) + let conversionNiveau + try { + conversionNiveau = parcelle.etatProduction && normalizeEtatProduction(parcelle.etatProduction, { strict: true }) + } catch (error) { + hasFeatureError = new Error('champ etatProduction incorrect') + return null + } const properties = { id, @@ -1133,7 +1140,7 @@ async function * parseAPIParcellaireStream (stream, { organismeCertificateur }) NUMERO_I: Number.isNaN(numeroIlot) ? (pac.numeroIlot ?? '') : String(numeroIlot), NUMERO_P: Number.isNaN(numeroParcelle) ? (pac.numeroParcelle ?? '') : String(numeroParcelle), PACAGE: record.numeroPacage ? String(record.numeroPacage) : null, - conversion_niveau: normalizeEtatProduction(parcelle.etatProduction), + conversion_niveau: conversionNiveau, engagement_date: parcelle.dateEngagement ?? null, auditeur_notes: parcelle.commentaire ?? null }