diff --git a/package.json b/package.json index 201fe83..2e8fce9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "freedatas2html", - "version": "0.5.0", + "version": "0.5.1", "description": "Visualization of data from various sources (CSV, API, HTML...) with filters, classification, pagination, etc.", "main": "index.js", "scripts": { diff --git a/src/freeDatas2HTMLRender.ts b/src/freeDatas2HTMLRender.ts index 76b6160..4bc7996 100644 --- a/src/freeDatas2HTMLRender.ts +++ b/src/freeDatas2HTMLRender.ts @@ -11,7 +11,7 @@ export class Render implements DatasRenders allBegining:"", allEnding:"
", fieldsBegining:"", - fieldsEnding:"", + fieldsEnding:"", fieldDisplaying:"#FIELDNAME", linesBegining:"", linesEnding:"", diff --git a/tests/renderSpec.ts b/tests/renderSpec.ts new file mode 100644 index 0000000..c1fd414 --- /dev/null +++ b/tests/renderSpec.ts @@ -0,0 +1,61 @@ +import { FreeDatas2HTML, Render } from "../src/freeDatas2HTML"; + +const errors=require("../src/errors.js"); +const fixtures=require("./fixtures.js"); + +describe("Test du moteur de rendu HTML.", () => +{ + let converter: FreeDatas2HTML; + let render: Render; + let datas: any[]; + + beforeEach(() => + { + converter=new FreeDatas2HTML(); + render=new Render(converter); + converter.parseMetas={ fields : [ "Z", "Élément", "Symbole", "Famille" ] }; + datas=[{"Z":"1","Élément":"Hydrogène","Symbole":"H","Famille":"Non-métal"},{"Z":"2","Élément":"Hélium","Symbole":"He","Famille":"Gaz noble"},{"Z":"3","Élément":"Lithium","Symbole":"Li","Famille":"Métal alcalin"},{"Z":"4","Élément":"Béryllium","Symbole":"Be","Famille":"","Champ ignoré":"Je me sens ignoré !"}] ;// Famille volontairement vide et champ à ignoré pour le dernier + }); + + it("Doit générer une erreur, si lancé sans fournir une liste des champs de données.", () => + { + converter.parseMetas=undefined; + expect(() => { return render.rend2HTML(datas) }).toThrowError(errors.renderNeedDatas); + converter.parseMetas={ delimiter: " "}; + expect(() => { return render.rend2HTML(datas) }).toThrowError(errors.renderNeedDatas); + }); + + it("Ne doit pas générer d'erreur, si lancé avec une liste des champs de données, même s'il n'y a aucune donnée à afficher.", () => + { + expect(() => { return render.rend2HTML([])}).not.toThrowError(); + }); + + it("Doit retourner le code HTML créé en se basant sur la configuration par défaut, avec ou sans données à afficher.", () => + { + // La configuration par défaut affiche le nom des champs, même quand il n'y a pas de données : + let html=render.rend2HTML([]); + expect(html).toEqual("
ZÉlémentSymboleFamille
"); + // Avec des données : + html=render.rend2HTML(datas); + expect(html).toEqual("
ZÉlémentSymboleFamille
1HydrogèneHNon-métal
2HéliumHeGaz noble
3LithiumLiMétal alcalin
4BérylliumBe
"); + }); + + it("Doit retourner un code HTML correspondant à la configuration fournie, avec ou sans données à afficher.", () => + { + render.settings= + { + allBegining:"

Pas de noms de champs !

", + allEnding:"
", + linesBegining:"
", + linesEnding:"
", + lineBegining:"", + dataDisplaying:"
  • #FIELDNAME : #VALUE
  • ", + }; + let html=render.rend2HTML([]); + expect(html).toEqual("

    Pas de noms de champs !

    "); + // Avec des données : + html=render.rend2HTML(datas); + expect(html).toEqual("

    Pas de noms de champs !

    "); + }); +}); \ No newline at end of file