From f5118f70bc82f96c760be6985bea7bd5d81a7a96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20GAVIGNET?= Date: Thu, 30 Jan 2025 09:40:46 +0100 Subject: [PATCH] feat: Add preprocessing for enum_type_doublage_id on mur --- .../domain/murs/pre-process-murs.service.js | 22 +++++++++++++++- .../murs/pre-process-murs.service.spec.js | 26 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) mode change 100644 => 100755 src/dpe/domain/murs/pre-process-murs.service.js mode change 100644 => 100755 src/dpe/domain/murs/pre-process-murs.service.spec.js diff --git a/src/dpe/domain/murs/pre-process-murs.service.js b/src/dpe/domain/murs/pre-process-murs.service.js old mode 100644 new mode 100755 index 8731945..df48120 --- a/src/dpe/domain/murs/pre-process-murs.service.js +++ b/src/dpe/domain/murs/pre-process-murs.service.js @@ -20,7 +20,7 @@ export class PreProcessMursService { if (!murDE.epaisseur_structure) { /** * Certains logiciels omettent le champ 'epaisseur_structure' - * Récupération de cette information si elle existe dans la description via regex "(\d+) cm" + * Récupération de cette information si elle existe dans la description via regex "(\d+) cm". * @type {number} */ let epaisseurStructure = getThicknessFromDescription(murDE.description); @@ -44,6 +44,26 @@ export class PreProcessMursService { murDE.epaisseur_structure = epaisseurStructure; } } + + /** + * Certaines descriptions contiennent des informations sur le type de doublage. + * Il arrive régulièrement que les id dans les données d'entrées ne soient pas à jour + * Récupération de cette information si elle existe dans la description. + * @type {number} + */ + let typeDoublage = parseInt(murDE.enum_type_doublage_id); + + if (typeDoublage === 1 || typeDoublage === 2) { + if (murDE.description.toLowerCase().indexOf('doublage connu (plâtre, brique') !== -1) { + murDE.enum_type_doublage_id = '5'; + } else if ( + murDE.description.toLowerCase().indexOf('doublage indéterminé avec lame') !== -1 + ) { + murDE.enum_type_doublage_id = '4'; + } else if (murDE.description.toLowerCase().indexOf('doublage indéterminé ou lame') !== -1) { + murDE.enum_type_doublage_id = '3'; + } + } }); } } diff --git a/src/dpe/domain/murs/pre-process-murs.service.spec.js b/src/dpe/domain/murs/pre-process-murs.service.spec.js old mode 100644 new mode 100755 index d6fb638..bf0179c --- a/src/dpe/domain/murs/pre-process-murs.service.spec.js +++ b/src/dpe/domain/murs/pre-process-murs.service.spec.js @@ -15,6 +15,7 @@ describe('PreProcessMursService service tests', () => { enum_orientation_id: '4', tv_umur0_id: '46', enum_type_vitrage_id: '2', + enum_type_doublage_id: '1', enum_type_baie_id: '4', enum_type_materiaux_menuiserie_id: '5' } @@ -60,4 +61,29 @@ describe('PreProcessMursService service tests', () => { service.preprocess(dpe); expect(dpe.logement.enveloppe.mur_collection.mur[0].donnee_entree.epaisseur_structure).toBe(25); }); + + it.each([ + ['1', '1', ''], + ['1', '5', 'doublage connu (plâtre, brique'], + ['1', '4', 'doublage indéterminé avec lame'], + ['1', '3', 'doublage indéterminé ou lame'], + ['2', '2', ''], + ['2', '5', 'doublage connu (plâtre, brique'], + ['2', '4', 'doublage indéterminé avec lame'], + ['2', '3', 'doublage indéterminé ou lame'], + ['3', '3', 'doublage connu (plâtre, brique'], + ['4', '4', 'doublage indéterminé ou lame'], + ['5', '5', 'doublage indéterminé ou lame'] + ])( + 'enum_type_doublage_id %s mis à jour en %s à partir de la description %s', + (enum_type_doublage_id, expectedTypeDoublage, description) => { + dpe.logement.enveloppe.mur_collection.mur[0].donnee_entree.enum_type_doublage_id = + enum_type_doublage_id; + dpe.logement.enveloppe.mur_collection.mur[0].donnee_entree.description = description; + service.preprocess(dpe); + expect(dpe.logement.enveloppe.mur_collection.mur[0].donnee_entree.enum_type_doublage_id).toBe( + expectedTypeDoublage + ); + } + ); });