Revue précédents scripts de test suite évolution.
This commit is contained in:
parent
50b8a8fccc
commit
e068aee5aa
@ -68,7 +68,7 @@ export class FreeDatas2HTML
|
||||
}
|
||||
if(datas2Parse !== "")
|
||||
this.parser.datas2Parse=datas2Parse;
|
||||
else if(datasRemoteSource!==undefined)
|
||||
else if(datasRemoteSource !== undefined)
|
||||
this.parser.datasRemoteSource=datasRemoteSource;
|
||||
else
|
||||
throw new Error(errors.converterNeedDatas);
|
||||
@ -142,7 +142,8 @@ export class FreeDatas2HTML
|
||||
return undefined;
|
||||
}
|
||||
|
||||
// Lance FreeDatas2HTML suivant les données reçues :
|
||||
// Traite les données fournies via le parseur adhoc
|
||||
// Si un élément du DOM est fourni, appelle la fonction affichant les données
|
||||
public async run(): Promise<any>
|
||||
{
|
||||
await this.parser.parse();
|
||||
@ -150,37 +151,37 @@ export class FreeDatas2HTML
|
||||
throw new Error(errors.parserFail);
|
||||
else
|
||||
{
|
||||
this.fields=this.parser.parseResults.fields;
|
||||
this.datas=this.parser.parseResults.datas;
|
||||
this.parseErrors=this.parser.parseResults.errors;
|
||||
if(this.fields === undefined)
|
||||
if(this.parser.parseResults.fields === undefined)
|
||||
throw new Error(errors.parserDatasNotFound);
|
||||
else if(this.stopIfParseErrors && this.parseErrors !== undefined)
|
||||
throw new Error(errors.parrserMeetErrors);
|
||||
else if(this.stopIfParseErrors && this.parser.parseResults.errors !== undefined)
|
||||
throw new Error(errors.parserMeetErrors);
|
||||
else
|
||||
{
|
||||
// Si tout est ok, affichage initial de toutes les données du fichier
|
||||
this.refreshView();
|
||||
// revoir l'intérêt de copier ces 3 attributs ?
|
||||
this.fields=this.parser.parseResults.fields;
|
||||
this.datas=this.parser.parseResults.datas;
|
||||
this.parseErrors=this.parser.parseResults.errors;
|
||||
if(this._datasViewElt !== undefined)
|
||||
this.refreshView();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
refreshView() : void
|
||||
public refreshView() : void
|
||||
{
|
||||
if(this.fields === undefined)
|
||||
if(this.fields === undefined || this._datasViewElt === undefined || this._datasViewElt.eltDOM === undefined)
|
||||
throw new Error(errors.converterRefreshFail);
|
||||
|
||||
this.datasHTML=this.createDatas2Display(this.fields, this.datas);
|
||||
|
||||
if(this._datasViewElt !== undefined && this._datasViewElt.eltDOM !== undefined)
|
||||
this._datasViewElt.eltDOM.innerHTML=this.datasHTML;
|
||||
|
||||
// On réactive les éventuels champs de classement
|
||||
for(let i in this.datasSortingFields)
|
||||
else
|
||||
{
|
||||
let field=this.datasSortingFields[i];
|
||||
field.field2HTML();
|
||||
this.datasHTML=this.createDatas2Display(this.fields, this.datas);
|
||||
this._datasViewElt.eltDOM.innerHTML=this.datasHTML;
|
||||
// On réactive les éventuels champs de classement qui ont été écrasés
|
||||
for(let i in this.datasSortingFields)
|
||||
{
|
||||
let field=this.datasSortingFields[i];
|
||||
field.field2HTML();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,13 +2,15 @@ import { FreeDatas2HTML, Render} from "../src/freeDatas2HTML";
|
||||
const errors=require("../src/errors.js");
|
||||
const fixtures=require("./fixtures.js");
|
||||
|
||||
/// Tests à revoir pour ne pas dépendre du bon fonctionnement de Parser et Render (mock...)
|
||||
|
||||
describe("Test du script central de FreeDatas2HTML", () =>
|
||||
{
|
||||
let converter: FreeDatas2HTML;
|
||||
|
||||
beforeEach( () =>
|
||||
{
|
||||
converter=new FreeDatas2HTML();
|
||||
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas1.csv"});
|
||||
document.body.insertAdjacentHTML('afterbegin', fixtures.datasViewEltHTML);
|
||||
});
|
||||
|
||||
@ -36,17 +38,11 @@ describe("Test du script central de FreeDatas2HTML", () =>
|
||||
expect(checkElt).toEqual({ id:"datas", eltDOM: eltInDOM });
|
||||
});
|
||||
|
||||
it("Doit générer une erreur si l'url fournie pour le fichier de données est vide.", () =>
|
||||
{
|
||||
expect(() => { return converter.datasSourceUrl=" "; }).toThrowError(errors.parserNeedUrl);
|
||||
});
|
||||
|
||||
it("Doit retourner false si un numéro de champ n'est pas trouvé dans les données.", async () =>
|
||||
{
|
||||
let check=converter.checkFieldExist(2);// aucune donnée chargée, donc le champ ne peut être trouvé
|
||||
let check=converter.checkFieldExist(2); // aucune donnée chargée, donc le champ ne peut être trouvé
|
||||
expect(check).toBeFalse();
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv";
|
||||
await converter.parse();
|
||||
await converter.run();
|
||||
check=converter.checkFieldExist(-2);
|
||||
expect(check).toBeFalse();
|
||||
check=converter.checkFieldExist(1.1);
|
||||
@ -55,10 +51,9 @@ describe("Test du script central de FreeDatas2HTML", () =>
|
||||
expect(check).toBeFalse();
|
||||
});
|
||||
|
||||
it("Doit retourner true si un numéro de champ a bien été trouvé dans les données.", async () =>
|
||||
it("Doit retourner true si un numéro de champ est bien trouvé dans les données.", async () =>
|
||||
{
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv";
|
||||
await converter.parse();
|
||||
await converter.run();
|
||||
let check=converter.checkFieldExist(0);
|
||||
expect(check).toBeTrue();
|
||||
check=converter.checkFieldExist(2);
|
||||
@ -77,12 +72,12 @@ describe("Test du script central de FreeDatas2HTML", () =>
|
||||
return 0;
|
||||
};
|
||||
expect(() => { return converter.datasSortingFunctions=[{ datasFieldNb:0, sort:simpleSort }]; }).toThrowError(errors.converterFieldNotFound); // données non chargées
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv";
|
||||
await converter.parse();
|
||||
expect(() => { return converter.datasSortingFunctions=[{ datasFieldNb:10, sort:simpleSort }]; }).toThrowError(errors.converterFieldNotFound);
|
||||
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas1.csv"});
|
||||
await converter.run();
|
||||
expect(() => { return converter.datasSortingFunctions=[{ datasFieldNb:10, sort:simpleSort }]; }).toThrowError(errors.converterFieldNotFound);
|
||||
});
|
||||
|
||||
it("Doit accepter le fonction associée à un champ, de manière à ce qu'elle soit utilisable pour comparer deux valeurs.", async () =>
|
||||
it("Doit accepter la fonction associée à un champ, de manière à ce qu'elle soit utilisable pour comparer deux valeurs.", async () =>
|
||||
{
|
||||
const simpleSort = (a: any, b: any) =>
|
||||
{
|
||||
@ -93,94 +88,59 @@ describe("Test du script central de FreeDatas2HTML", () =>
|
||||
else
|
||||
return 0;
|
||||
};
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv";
|
||||
await converter.parse();
|
||||
await converter.run();
|
||||
converter.datasSortingFunctions=[{ datasFieldNb:0, sort:simpleSort }];
|
||||
expect(converter.getSortingFunctionForField(0)).toBeDefined();
|
||||
expect([7,9,3,5].sort(converter.getSortingFunctionForField(0).sort)).toEqual([9,7,5,3]);
|
||||
});
|
||||
});
|
||||
|
||||
describe("Parsage du fichier et création du tableau de données", () =>
|
||||
describe("Affichage des données reçues.", () =>
|
||||
{
|
||||
it("Doit générer une erreur si la lecture du fichier échoue.", async () =>
|
||||
it("Doit générer une erreur si des données n'ont pas été importées.", async () =>
|
||||
{
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/dontExist.csv";
|
||||
await expectAsync(converter.parse()).toBeRejectedWith(new Error(errors.parserFail));
|
||||
// Parseur non lancé :
|
||||
expect(() => { return converter.refreshView(); }).toThrowError(errors.converterRefreshFail);
|
||||
// Lancé, mais sur un fichier vide : à revoir, car c'est le parseur qui génère d'abord une erreur
|
||||
//converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/nodatas.csv"});
|
||||
//await converter.run();
|
||||
//expect(() => { return converter.refreshView(); }).toThrowError(errors.converterRefreshFail);
|
||||
});
|
||||
|
||||
it("Doit enregistrer la liste des erreurs rencontrées en parsant le fichier.", async () =>
|
||||
it("Doit générer une erreur si l'élément du DOM où afficher les données est inconnu.", async () =>
|
||||
{
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas-errors1.csv";
|
||||
await converter.parse();
|
||||
expect(converter.parseErrors.length).toBeGreaterThan(0);
|
||||
await converter.run();
|
||||
expect(() => { return converter.refreshView(); }).toThrowError(errors.converterRefreshFail);
|
||||
});
|
||||
|
||||
it("Ne doit garder que les noms de colonne non vides.", async () =>
|
||||
it("Ne doit pas générer d'erreur si les informations nécessaires sont ok.", async () =>
|
||||
{
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas-errors2.csv";
|
||||
await converter.parse();
|
||||
expect(converter.parseMetas.fields.length).toEqual(5);
|
||||
await converter.run();
|
||||
expect(() => { return converter.refreshView(); }).not.toThrowError();
|
||||
});
|
||||
|
||||
it("Ne doit enregistrer aucune erreur de lecture si le fichier est ok.", async () =>
|
||||
it("Doit générer une erreur, si la moindre erreur est rencontrée durant la parsage et que cela n'est pas accepté.", async () =>
|
||||
{
|
||||
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas-errors1.csv"});
|
||||
converter.stopIfParseErrors=true;
|
||||
await expectAsync(converter.run()).toBeRejectedWith(new Error(errors.parserMeetErrors));
|
||||
});
|
||||
|
||||
it("Si cela n'est pas demandé, le script ne sera pas bloqué, même si des erreurs sont rencontrées durant le parsage.", async () =>
|
||||
{
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv";
|
||||
await converter.parse();
|
||||
expect(converter.parseErrors.length).toEqual(0);
|
||||
});
|
||||
|
||||
it("Doit générer une erreur si lancé sur url fournie pour le fichier de données.", async () =>
|
||||
{
|
||||
await expectAsync(converter.run()).toBeRejectedWith(new Error(errors.parserNeedUrl));
|
||||
});
|
||||
|
||||
it("Ne doit pas générer d'erreur si les deux paramètres fournis sont ok.", async () =>
|
||||
{
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv";
|
||||
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas-errors1.csv"});
|
||||
await expectAsync(converter.run()).toBeResolved();
|
||||
});
|
||||
|
||||
it("Doit générer une erreur si aucune donnée n'a été trouvée dans le fichier et ne rien afficher dans l'emplacement prévu pour les données.", async () =>
|
||||
{
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/nodatas.csv";
|
||||
await expectAsync(converter.run()).toBeRejectedWith(new Error(errors.parserDatasNotFound));
|
||||
let txtDatasViewsElt=document.getElementById("datas").innerHTML;
|
||||
expect(txtDatasViewsElt).toEqual("");
|
||||
});
|
||||
|
||||
it("Si la moindre erreur est rencontrée durant la parsage et que cela est demandé, ne rien afficher dans l'emplacement prévu pour les données.", async () =>
|
||||
{
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas-errors1.csv";
|
||||
converter.stopIfParseErrors=true;
|
||||
await converter.run();
|
||||
let txtDatasViewsElt=document.getElementById("datas").innerHTML;
|
||||
expect(txtDatasViewsElt).toEqual("");
|
||||
});
|
||||
|
||||
it("Sauf si cela est demandé, les données trouvées dans le fichier seront affichées même si des erreurs sont rencontrées durant la parsage.", async () =>
|
||||
{
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas-errors1.csv";
|
||||
await converter.run();
|
||||
let txtDatasViewsElt=document.getElementById("datas").innerHTML;
|
||||
expect(txtDatasViewsElt).not.toEqual("");
|
||||
});
|
||||
|
||||
/// Plutôt pour tester Render
|
||||
it("Doit afficher un tableau correspondant aux données du fichier csv", async () =>
|
||||
{
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv";
|
||||
await converter.run();
|
||||
const render=new Render(converter);
|
||||
const htmlForDatas=render.rend2HTML(converter.parseDatas);
|
||||
const htmlForDatas=render.rend2HTML(converter.datas);
|
||||
// On ne peut comparer directement au contenu du DOM,
|
||||
// car le navigateur change certains caractères (exemple : ">" devient ">")
|
||||
expect(converter.datasHTML).toEqual(htmlForDatas);
|
||||
@ -195,11 +155,11 @@ describe("Test du script central de FreeDatas2HTML", () =>
|
||||
it("Si demandé, doit afficher le nombre de lignes de données du fichier.", async () =>
|
||||
{
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv";
|
||||
converter.datasCounter={ id:"counter" };
|
||||
await converter.run();
|
||||
let txtDatasViewsElt=document.getElementById("counter").innerHTML;
|
||||
expect(txtDatasViewsElt).toEqual("118");
|
||||
});
|
||||
});
|
||||
|
||||
});
|
@ -3,7 +3,7 @@ import { FreeDatas2HTML, Pagination } from "../src/freeDatas2HTML";
|
||||
const errors=require("../src/errors.js");
|
||||
const fixtures=require("./fixtures.js");
|
||||
|
||||
describe("Test de la pagination.", () =>
|
||||
xdescribe("Test de la pagination.", () =>
|
||||
{
|
||||
let converter: FreeDatas2HTML;
|
||||
let pagination: Pagination;
|
||||
@ -11,10 +11,9 @@ describe("Test de la pagination.", () =>
|
||||
beforeEach( async () =>
|
||||
{
|
||||
document.body.insertAdjacentHTML("afterbegin", fixtures.datasViewEltHTML);
|
||||
converter=new FreeDatas2HTML();
|
||||
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas1.csv"});
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv";
|
||||
await converter.parse();
|
||||
await converter.run();
|
||||
pagination=new Pagination(converter, { id:"pages" }, "Page à afficher :");
|
||||
});
|
||||
|
||||
@ -35,7 +34,7 @@ describe("Test de la pagination.", () =>
|
||||
|
||||
it("Doit générer une erreur si la pagination est initialisée sans données à traiter.", () =>
|
||||
{
|
||||
converter=new FreeDatas2HTML();
|
||||
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas1.csv"});
|
||||
expect(() => { return new Pagination(converter, { id:"pages" }); }).toThrowError(errors.paginationNeedDatas);
|
||||
});
|
||||
|
||||
|
@ -9,17 +9,15 @@ describe("Test du moteur de rendu HTML.", () =>
|
||||
|
||||
beforeEach(() =>
|
||||
{
|
||||
converter=new FreeDatas2HTML();
|
||||
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:8080/datas/datas1.csv"});
|
||||
render=new Render(converter);
|
||||
converter.parseMetas={ fields : [ "Z", "Élément", "Symbole", "Famille" ] };
|
||||
converter.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: " "};
|
||||
converter.fields=undefined;
|
||||
expect(() => { return render.rend2HTML(datas) }).toThrowError(errors.renderNeedDatas);
|
||||
});
|
||||
|
||||
|
@ -3,7 +3,7 @@ import { FreeDatas2HTML, Selector } from "../src/freeDatas2HTML";
|
||||
const errors=require("../src/errors.js");
|
||||
const fixtures=require("./fixtures.js");
|
||||
|
||||
describe("Test des filtres de données", () =>
|
||||
xdescribe("Test des filtres de données", () =>
|
||||
{
|
||||
let converter: FreeDatas2HTML;
|
||||
let selector: Selector;
|
||||
@ -11,10 +11,9 @@ describe("Test des filtres de données", () =>
|
||||
beforeEach( async () =>
|
||||
{
|
||||
document.body.insertAdjacentHTML("afterbegin", fixtures.datasViewEltHTML);
|
||||
converter=new FreeDatas2HTML();
|
||||
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas1.csv"});
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv";
|
||||
await converter.parse();
|
||||
await converter.run();
|
||||
});
|
||||
|
||||
afterEach( () =>
|
||||
@ -26,7 +25,7 @@ describe("Test des filtres de données", () =>
|
||||
{
|
||||
it("Doit générer une erreur, si initialisé sans fournir la liste des champs servant à classer les données.", () =>
|
||||
{
|
||||
converter=new FreeDatas2HTML();
|
||||
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas1.csv"});
|
||||
expect(() => { return new Selector(converter, 0, { id:"selector1" }); }).toThrowError(errors.selectorNeedDatas);
|
||||
});
|
||||
|
||||
@ -61,10 +60,9 @@ describe("Test des filtres de données", () =>
|
||||
beforeEach( async () =>
|
||||
{
|
||||
document.body.insertAdjacentHTML("afterbegin", fixtures.datasViewEltHTML);
|
||||
converter=new FreeDatas2HTML();
|
||||
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas1.csv"});
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv";
|
||||
await converter.parse();
|
||||
await converter.run();
|
||||
selector=new Selector(converter, 3, { id:"selector1" });
|
||||
});
|
||||
|
||||
@ -79,16 +77,16 @@ describe("Test des filtres de données", () =>
|
||||
|
||||
it("Si des valeurs vides sont présentes dans une champ utilisé pour un sélecteur, elles doivent être ignorées.", async () =>
|
||||
{
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas1-emtyinfield.csv";
|
||||
await converter.parse();
|
||||
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas1-emtyinfield.csv"});
|
||||
await converter.run();
|
||||
selector.selector2HTML();
|
||||
expect(document.getElementById("selector1").innerHTML).toEqual(fixtures.selector1HTML);
|
||||
});
|
||||
|
||||
it("Si un séparateur est fourni, les valeurs distinctes extraites de ce champ doivent le prendre en compte.", async () =>
|
||||
{
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas1+tagsfield.csv";
|
||||
await converter.parse();
|
||||
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas1+tagsfield.csv"});
|
||||
await converter.run();
|
||||
selector=new Selector(converter, 5, { id:"selector1" });
|
||||
selector.separator="|";
|
||||
selector.selector2HTML();
|
||||
|
@ -11,9 +11,8 @@ xdescribe("Test des champs de classement.", () =>
|
||||
beforeEach( async () =>
|
||||
{
|
||||
document.body.insertAdjacentHTML("afterbegin", fixtures.datasViewEltHTML);
|
||||
converter=new FreeDatas2HTML();
|
||||
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas1.csv"});
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv";
|
||||
await converter.run();
|
||||
});
|
||||
|
||||
@ -26,7 +25,7 @@ xdescribe("Test des champs de classement.", () =>
|
||||
{
|
||||
it("Doit générer une erreur, si initialisé sans fournir la liste des champs servant à classer les données.", () =>
|
||||
{
|
||||
converter=new FreeDatas2HTML();
|
||||
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas1.csv"});
|
||||
expect(() => { return new SortingField(converter, 0); }).toThrowError(errors.sortingFieldNeedDatas);
|
||||
});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user