import { FreeDatas2HTML, Render } from "../src/freeDatas2HTML";
const errors=require("../src/errors.js");
describe("Test du moteur de rendu HTML.", () =>
{
let converter: FreeDatas2HTML;
let render: Render;
let datas: any[];
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é !"}] ;
});
it("Doit générer une erreur, si lancé sans fournir une liste des champs.", () =>
{
converter.fields=undefined;
expect(() => { return render.rend2HTML(datas) }).toThrowError(errors.renderNeedDatas);
});
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.", () =>
{
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("
");
// Avec des données :
html=render.rend2HTML(datas);
expect(html).toEqual("Z | Élément | Symbole | Famille |
---|
1 | Hydrogène | H | Non-métal |
2 | Hélium | He | Gaz noble |
3 | Lithium | Li | Métal alcalin |
4 | Béryllium | Be | |
");
});
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("");
// 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 :
");
});
});