import { Render } from "../src/Render"; const errors=require("../src/errors.js"); describe("Test du moteur de rendu HTML.", () => { let render: Render; const fields=[ "Z", "Élément", "Symbole", "Famille" ] ; // Les champs des différentes lignes ne sont pas forcément dans le même ordre et certains peuvent être absents, vides ou encore en trop... const datas=[{"Z":"1","Élément":"Hydrogène","Symbole":"H","Famille":"Non-métal"},{"Famille":"Gaz noble","Élément":"Hélium","Z":"2","Symbole":"He"},{"Champ ignoré":"Je me champ ignoré !", "Z":"3","Élément":"Lithium","Famille":"Métal alcalin","Symbole":"Li"},{"Z":"4","Élément":"Béryllium","Famille":"","Champ ignoré":"Je me champ ignoré !"}] ; beforeEach(() => { render=new Render(); }); it("Doit générer une erreur, si une liste de champs vide lui est fournie.", () => { expect(() => { return render.fields=[]; } ).toThrowError(errors.renderNeedFields); expect(render.fields).toEqual([]); }); it("Doit accepter toute liste de champs valide.", () => { render=new Render(); expect(() => { return render.fields=[""]; }).not.toThrowError(); // pas normal, mais pas testé par cette classe expect(render.fields).toEqual([""]); expect(() => { return render.fields=["je vois double", "je vois double"]; }).not.toThrowError(); // idem expect(render.fields).toEqual(["je vois double", "je vois double"]); expect(() => { return render.fields=["je me sens seul"]; }).not.toThrowError(); expect(render.fields).toEqual(["je me sens seul"]); }); it("Doit générer une erreur, si lancé sans avoir fourni une liste des champs.", () => { expect(() => { return render.rend2HTML(); }).toThrowError(errors.renderNeedFields); }); it("Ne doit pas générer d'erreur, si lancé avec une liste des champs, même s'il n'y a aucune donnée fournie.", () => { render.fields=fields; 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.", () => { render.fields=fields; let html=render.rend2HTML(); expect(html).toEqual("
ZÉlémentSymboleFamille
"); render.datas=datas; html=render.rend2HTML(); expect(html).toEqual("
ZÉlémentSymboleFamille
1HydrogèneHNon-métal
2HéliumHeGaz noble
3LithiumLiMétal alcalin
4Béryllium
"); }); 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
  • ", }; render.fields=fields; let html=render.rend2HTML(); expect(html).toEqual("

    Pas de noms de champs !

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

    Pas de noms de champs !

    "); }); });