2021-09-27 16:03:05 +02:00
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 ( ( ) = >
{
2021-09-30 12:52:33 +02:00
converter = new FreeDatas2HTML ( "CSV" , "" , { url : "http://localhost:8080/datas/datas1.csv" } ) ;
2021-09-27 16:03:05 +02:00
render = new Render ( converter ) ;
2021-09-30 12:52:33 +02:00
converter . fields = [ "Z" , "Élément" , "Symbole" , "Famille" ] ;
2021-09-27 16:03:05 +02:00
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." , ( ) = >
{
2021-09-30 12:52:33 +02:00
converter . fields = undefined ;
2021-09-27 16:03:05 +02:00
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 ( "<table><thead><tr><th>Z</th><th>Élément</th><th>Symbole</th><th>Famille</th></tr></thead><tbody></tbody></table>" ) ;
// Avec des données :
html = render . rend2HTML ( datas ) ;
expect ( html ) . toEqual ( "<table><thead><tr><th>Z</th><th>Élément</th><th>Symbole</th><th>Famille</th></tr></thead><tbody><tr><td>1</td><td>Hydrogène</td><td>H</td><td>Non-métal</td></tr><tr><td>2</td><td>Hélium</td><td>He</td><td>Gaz noble</td></tr><tr><td>3</td><td>Lithium</td><td>Li</td><td>Métal alcalin</td></tr><tr><td>4</td><td>Béryllium</td><td>Be</td><td></td></tr></tbody></table>" ) ;
} ) ;
it ( "Doit retourner un code HTML correspondant à la configuration fournie, avec ou sans données à afficher." , ( ) = >
{
render . settings =
{
allBegining : "<div id=\"test\"><h4>Pas de noms de champs !</h4>" ,
allEnding : "</div>" ,
linesBegining : "<div id=\"myDatas\">" ,
linesEnding : "</div>" ,
lineBegining : "<ul>" ,
lineEnding : "</ul>" ,
dataDisplaying : "<li><b>#FIELDNAME :</b> #VALUE</li>" ,
} ;
let html = render . rend2HTML ( [ ] ) ;
expect ( html ) . toEqual ( "<div id=\"test\"><h4>Pas de noms de champs !</h4><div id=\"myDatas\"></div></div>" ) ;
// Avec des données :
html = render . rend2HTML ( datas ) ;
expect ( html ) . toEqual ( "<div id=\"test\"><h4>Pas de noms de champs !</h4><div id=\"myDatas\"><ul><li><b>Z :</b> 1</li><li><b>Élément :</b> Hydrogène</li><li><b>Symbole :</b> H</li><li><b>Famille :</b> Non-métal</li></ul><ul><li><b>Z :</b> 2</li><li><b>Élément :</b> Hélium</li><li><b>Symbole :</b> He</li><li><b>Famille :</b> Gaz noble</li></ul><ul><li><b>Z :</b> 3</li><li><b>Élément :</b> Lithium</li><li><b>Symbole :</b> Li</li><li><b>Famille :</b> Métal alcalin</li></ul><ul><li><b>Z :</b> 4</li><li><b>Élément :</b> Béryllium</li><li><b>Symbole :</b> Be</li><li><b>Famille :</b> </li></ul></div></div>" ) ;
} ) ;
} ) ;