From fb9e69a2b73e7f58ac3b224e1dad0489f27f0f75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabrice=20PENHO=C3=8BT?= Date: Wed, 22 Sep 2021 12:29:43 +0200 Subject: [PATCH] =?UTF-8?q?Mutualisation=20de=20la=20m=C3=A9thode=20testan?= =?UTF-8?q?t=20l'existence=20d'un=20=C3=A9l=C3=A9ment=20dans=20le=20DOM.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- src/freeDatas2HTML.ts | 22 ++++++++++++++-------- src/freeDatas2HTMLPagination.ts | 16 +++------------- src/freeDatas2HTMLSelector.ts | 9 +-------- tests/freeDatas2HTMLSpec.ts | 12 +++++++----- tests/paginationSpec.ts | 12 +----------- tests/selectorSpec.ts | 12 ------------ 7 files changed, 27 insertions(+), 58 deletions(-) diff --git a/package.json b/package.json index 728d59a..0ab8b81 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "freedatas2html", - "version": "0.4.1", + "version": "0.4.2", "description": "Visualization of data from various sources (CSV, API, HTML...) with filters, classification, pagination, etc.", "main": "index.js", "scripts": { diff --git a/src/freeDatas2HTML.ts b/src/freeDatas2HTML.ts index c7991d1..bc32f71 100644 --- a/src/freeDatas2HTML.ts +++ b/src/freeDatas2HTML.ts @@ -37,18 +37,24 @@ export class FreeDatas2HTML datasSortedField: SortingFields|undefined; // La Pagination : pagination: Paginations|undefined; + + // Vérifie s'il y a bien un élément dans le DOM pour l'id fourni + public static checkInDOMById(checkedElt: DOMElement) : DOMElement + { + let searchEltInDOM=document.getElementById(checkedElt.id); + if(searchEltInDOM === null) + throw new Error(errors.converterElementNotFound+checkedElt.id); + else + { + checkedElt.eltDOM=searchEltInDOM; + return checkedElt; + } + } // Vérifie que l'élément devant afficher les données existe dans le DOM : set datasViewElt(elt: DOMElement) { - let checkContainerExist=document.getElementById(elt.id); - if(checkContainerExist === null) - throw new Error(errors.converterElementNotFound+elt.id); - else - { - this._datasViewElt.id=elt.id; - this._datasViewElt.eltDOM=checkContainerExist; - } + this._datasViewElt=FreeDatas2HTML.checkInDOMById(elt); } // Vérifie que l'url où chercher les données n'est pas vide : inutile si données dans page ou tranmises diff --git a/src/freeDatas2HTMLPagination.ts b/src/freeDatas2HTMLPagination.ts index 84acb1f..2692cda 100644 --- a/src/freeDatas2HTMLPagination.ts +++ b/src/freeDatas2HTMLPagination.ts @@ -25,14 +25,8 @@ export class Pagination implements Paginations throw new Error(errors.paginationNeedDatas); else { - let checkContainerExist=document.getElementById(pagesElt.id); - if(checkContainerExist === null) - throw new Error(errors.converterElementNotFound+pagesElt.id); - else - { - this._converter=converter; - this._pages={ displayElement: { id:pagesElt.id, eltDOM:checkContainerExist }, name: pagesName }; - } + this._pages={ displayElement: FreeDatas2HTML.checkInDOMById(pagesElt), name: pagesName }; + this._converter=converter; } } @@ -54,11 +48,7 @@ export class Pagination implements Paginations { if(options !== undefined) { - let checkContainerExist=document.getElementById(options.displayElement.id); - if(checkContainerExist === null) - throw new Error(errors.converterElementNotFound+options.displayElement.id); - else - options.displayElement.eltDOM=checkContainerExist; + options.displayElement=FreeDatas2HTML.checkInDOMById(options.displayElement); if(options.values.length === 0) throw new Error(errors.paginationNeedOptionsValues); for(let i in options.values) diff --git a/src/freeDatas2HTMLSelector.ts b/src/freeDatas2HTMLSelector.ts index b417dae..7e550f3 100644 --- a/src/freeDatas2HTMLSelector.ts +++ b/src/freeDatas2HTMLSelector.ts @@ -24,14 +24,7 @@ export class Selector implements Selectors // Vérifie que l'élément devant recevoir le filtre existe dans la page set datasViewElt(elt: DOMElement) { - let checkContainerExist=document.getElementById(elt.id); - if(checkContainerExist === null) - throw new Error(errors.converterElementNotFound+elt.id); - else - { - this._datasViewElt.id=elt.id; - this._datasViewElt.eltDOM=checkContainerExist; - } + this._datasViewElt=FreeDatas2HTML.checkInDOMById(elt); } get datasViewElt() : DOMElement diff --git a/tests/freeDatas2HTMLSpec.ts b/tests/freeDatas2HTMLSpec.ts index 319d558..c5b483f 100644 --- a/tests/freeDatas2HTMLSpec.ts +++ b/tests/freeDatas2HTMLSpec.ts @@ -24,16 +24,18 @@ describe("Test du script central de FreeDatas2HTML", () => describe("Test des données de configuration reçues.", () => { - it("Doit générer une erreur s'il n'y a pas d'élément dans la page pour l'id fourni pour afficher les données.", () => + it("Doit générer une erreur s'il n'y a pas d'élément dans la page pour l'id fourni.", () => { - expect(() => { return converter.datasViewElt={ id:"dontExist" }; }).toThrowError(errors.converterElementNotFound+"dontExist"); + expect(() => { return FreeDatas2HTML.checkInDOMById({ id:"dontExist" }); }).toThrowError(errors.converterElementNotFound+"dontExist"); }); - it("Ne doit pas générer une erreur s'il y a bien un élément dans la page pour l'id fourni pour afficher les données.", () => + it("S'il y a bien un élément dans la page pour l'id fourni, doit retourner l'élement DOM complété.", () => { - expect(() => { return converter.datasViewElt={ id:"datas" }; }).not.toThrowError(); + const eltInDOM=document.getElementById("datas"); + const checkElt=FreeDatas2HTML.checkInDOMById({ id:"datas" }); + expect(checkElt).toEqual({ id:"datas", eltDOM: eltInDOM }); }); - + it("Doit générer une erreur si l'url fournie pour le fichier de données est vide.", () => { expect(() => { return converter.datasSourceUrl=" "; }).toThrowError(errors.parserNeedUrl); diff --git a/tests/paginationSpec.ts b/tests/paginationSpec.ts index 6709f4f..dee8634 100644 --- a/tests/paginationSpec.ts +++ b/tests/paginationSpec.ts @@ -38,22 +38,12 @@ describe("Test de la pagination.", () => converter=new FreeDatas2HTML(); expect(() => { return new Pagination(converter, { id:"pages" }); }).toThrowError(errors.paginationNeedDatas); }); - - it("Doit générer une erreur si initialisé en fournissant l'id d'un élément n'existant pas pour recevoir la liste des pages.", () => - { - expect(() => { return new Pagination(converter, { id:"dontExist" }); }).toThrowError(errors.converterElementNotFound+"dontExist"); - }); - + it("Ne doit pas générer d'erreur si initialisé correctement", () => { expect(() => { return new Pagination(converter, { id:"pages" }); }).not.toThrowError(); }); - it("Doit générer une erreur si l'id fourni pour l'élément devant recevoir le sélecteur de pagination n'existe pas dans le DOM.", () => - { - expect(() => { return pagination.options={ displayElement: { id:"dontExist" }, values: [10,20] }; }).toThrowError(errors.converterElementNotFound+"dontExist"); - }); - it("Doit générer une erreur si les options de pagination sont initialisées avec un tableau de valeurs vide.", () => { expect(() => { return pagination.options={ displayElement: { id:"paginationOptions" }, values: [] }; }).toThrowError(errors.paginationNeedOptionsValues); diff --git a/tests/selectorSpec.ts b/tests/selectorSpec.ts index 3d77d91..628e4f6 100644 --- a/tests/selectorSpec.ts +++ b/tests/selectorSpec.ts @@ -36,18 +36,6 @@ describe("Test des filtres de données", () => expect(() => { return new Selector(converter); }).not.toThrowError(); }); - it("Doit générer une erreur s'il n'y a aucun élément trouvé dans le DOM pour l'id fourni.", () => - { - expect(() => { return converter.datasViewElt={ id:"dontExist" }; }).toThrowError(errors.converterElementNotFound+"dontExist"); - }); - - it("Si un élément est trouvé dans le DOM pour l'id fourni, doit l'accepter.", () => - { - selector.datasViewElt={ id:"selector1"}; - let myContainer=document.getElementById("selector1"); - expect(selector.datasViewElt).toEqual({ id:"selector1", "eltDOM": myContainer }); - }); - it("Doit générer une erreur, si le numéro de champ fourni n'existe pas dans les données.", () => { expect(() => { return selector.datasFieldNb=9; }).toThrowError(errors.selectorFieldNotFound);