From 996540504c03c78d69028a5b6c9c76368ef3262b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabrice=20PENHO=C3=8BT?= Date: Wed, 20 Oct 2021 17:32:54 +0200 Subject: [PATCH] Revue et adaptation des tests --- tests/renderSpec.ts | 59 ++++++++++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/tests/renderSpec.ts b/tests/renderSpec.ts index 19ff80b..a64deea 100644 --- a/tests/renderSpec.ts +++ b/tests/renderSpec.ts @@ -1,41 +1,54 @@ -import { FreeDatas2HTML, Render } from "../src/freeDatas2HTML"; +import { Render } from "../src/Render"; const errors=require("../src/errors.js"); describe("Test du moteur de rendu HTML.", () => { - let converter: FreeDatas2HTML; let render: Render; - let datas: any[]; + 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(() => { - converter=new FreeDatas2HTML("CSV"); - converter.parser.setRemoteSource({ url:"http://localhost:9876/datas/datas1.csv" }); - render=new Render(converter); - converter.fields=[ "Z", "Élément", "Symbole", "Famille" ] ; - // Les champs des différentes lignes ne sont pas forcément dans le même ordre, dans les champs peuvent être vide ou encore en trop... - 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","Symbole":"Be","Famille":"","Champ ignoré":"Je me champ ignoré !"}] ; + render=new Render(); }); - it("Doit générer une erreur, si lancé sans fournir une liste des champs.", () => + it("Doit générer une erreur, si une liste de champs vide lui est fournie.", () => { - converter.fields=undefined; - expect(() => { return render.rend2HTML(datas) }).toThrowError(errors.renderNeedDatas); + expect(() => { return render.fields=[]; } ).toThrowError(errors.renderNeedFields); + expect(render.fields).toEqual([]); }); - 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 à afficher.", () => + it("Doit accepter toute liste de champs valide.", () => { - expect(() => { return render.rend2HTML([])}).not.toThrowError(); + 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.", () => { - // 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([]); + render.fields=fields; + 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
"); + 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.", () => @@ -50,10 +63,12 @@ describe("Test du moteur de rendu HTML.", () => lineEnding:"", dataDisplaying:"
  • #FIELDNAME : #VALUE
  • ", }; - let html=render.rend2HTML([]); + render.fields=fields; + 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 !

    • 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 :
    "); + render.datas=datas; + html=render.rend2HTML(); + expect(html).toEqual("

    Pas de noms de champs !

    • 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 :
    • Famille :
    "); }); }); \ No newline at end of file