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 !

    "); }); });