Mutualisation de la méthode testant l'existence d'un élément dans le DOM.

This commit is contained in:
Fabrice PENHOËT 2021-09-22 12:29:43 +02:00
parent 82a2ef3f69
commit fb9e69a2b7
7 changed files with 27 additions and 58 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "freedatas2html", "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.", "description": "Visualization of data from various sources (CSV, API, HTML...) with filters, classification, pagination, etc.",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {

View File

@ -38,17 +38,23 @@ export class FreeDatas2HTML
// La Pagination : // La Pagination :
pagination: Paginations|undefined; 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 : // Vérifie que l'élément devant afficher les données existe dans le DOM :
set datasViewElt(elt: DOMElement) set datasViewElt(elt: DOMElement)
{ {
let checkContainerExist=document.getElementById(elt.id); this._datasViewElt=FreeDatas2HTML.checkInDOMById(elt);
if(checkContainerExist === null)
throw new Error(errors.converterElementNotFound+elt.id);
else
{
this._datasViewElt.id=elt.id;
this._datasViewElt.eltDOM=checkContainerExist;
}
} }
// Vérifie que l'url où chercher les données n'est pas vide : inutile si données dans page ou tranmises // Vérifie que l'url où chercher les données n'est pas vide : inutile si données dans page ou tranmises

View File

@ -25,14 +25,8 @@ export class Pagination implements Paginations
throw new Error(errors.paginationNeedDatas); throw new Error(errors.paginationNeedDatas);
else else
{ {
let checkContainerExist=document.getElementById(pagesElt.id); this._pages={ displayElement: FreeDatas2HTML.checkInDOMById(pagesElt), name: pagesName };
if(checkContainerExist === null)
throw new Error(errors.converterElementNotFound+pagesElt.id);
else
{
this._converter=converter; this._converter=converter;
this._pages={ displayElement: { id:pagesElt.id, eltDOM:checkContainerExist }, name: pagesName };
}
} }
} }
@ -54,11 +48,7 @@ export class Pagination implements Paginations
{ {
if(options !== undefined) if(options !== undefined)
{ {
let checkContainerExist=document.getElementById(options.displayElement.id); options.displayElement=FreeDatas2HTML.checkInDOMById(options.displayElement);
if(checkContainerExist === null)
throw new Error(errors.converterElementNotFound+options.displayElement.id);
else
options.displayElement.eltDOM=checkContainerExist;
if(options.values.length === 0) if(options.values.length === 0)
throw new Error(errors.paginationNeedOptionsValues); throw new Error(errors.paginationNeedOptionsValues);
for(let i in options.values) for(let i in options.values)

View File

@ -24,14 +24,7 @@ export class Selector implements Selectors
// Vérifie que l'élément devant recevoir le filtre existe dans la page // Vérifie que l'élément devant recevoir le filtre existe dans la page
set datasViewElt(elt: DOMElement) set datasViewElt(elt: DOMElement)
{ {
let checkContainerExist=document.getElementById(elt.id); this._datasViewElt=FreeDatas2HTML.checkInDOMById(elt);
if(checkContainerExist === null)
throw new Error(errors.converterElementNotFound+elt.id);
else
{
this._datasViewElt.id=elt.id;
this._datasViewElt.eltDOM=checkContainerExist;
}
} }
get datasViewElt() : DOMElement get datasViewElt() : DOMElement

View File

@ -24,14 +24,16 @@ describe("Test du script central de FreeDatas2HTML", () =>
describe("Test des données de configuration reçues.", () => 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.", () => it("Doit générer une erreur si l'url fournie pour le fichier de données est vide.", () =>

View File

@ -39,21 +39,11 @@ describe("Test de la pagination.", () =>
expect(() => { return new Pagination(converter, { id:"pages" }); }).toThrowError(errors.paginationNeedDatas); 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", () => it("Ne doit pas générer d'erreur si initialisé correctement", () =>
{ {
expect(() => { return new Pagination(converter, { id:"pages" }); }).not.toThrowError(); 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.", () => 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); expect(() => { return pagination.options={ displayElement: { id:"paginationOptions" }, values: [] }; }).toThrowError(errors.paginationNeedOptionsValues);

View File

@ -36,18 +36,6 @@ describe("Test des filtres de données", () =>
expect(() => { return new Selector(converter); }).not.toThrowError(); 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.", () => 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); expect(() => { return selector.datasFieldNb=9; }).toThrowError(errors.selectorFieldNotFound);