diff --git a/src/freeDatas2HTML.ts b/src/freeDatas2HTML.ts
index cad03f3..3033196 100644
--- a/src/freeDatas2HTML.ts
+++ b/src/freeDatas2HTML.ts
@@ -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
{
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();
+ }
}
}
diff --git a/tests/freeDatas2HTMLSpec.ts b/tests/freeDatas2HTMLSpec.ts
index d5619eb..243ff68 100644
--- a/tests/freeDatas2HTMLSpec.ts
+++ b/tests/freeDatas2HTMLSpec.ts
@@ -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);
});
@@ -35,18 +37,12 @@ describe("Test du script central de FreeDatas2HTML", () =>
const checkElt=FreeDatas2HTML.checkInDOMById({ id:"datas" });
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);
@@ -54,17 +50,16 @@ describe("Test du script central de FreeDatas2HTML", () =>
check=converter.checkFieldExist(10);
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);
expect(check).toBeTrue();
});
-
+
it("Doit générer une erreur si une fonction est associée à un champ n'existant pas dans les données.", async () =>
{
const simpleSort = (a: any, b: any) =>
@@ -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);
- });
-
- it("Ne doit enregistrer aucune erreur de lecture si le fichier est ok.", 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";
- await expectAsync(converter.run()).toBeResolved();
+ await converter.run();
+ expect(() => { return converter.refreshView(); }).not.toThrowError();
});
-
- 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 () =>
+ 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.datasViewElt={ id:"datas" };
- converter.datasSourceUrl="http://localhost:9876/datas/datas-errors1.csv";
+ converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas-errors1.csv"});
converter.stopIfParseErrors=true;
- await converter.run();
- let txtDatasViewsElt=document.getElementById("datas").innerHTML;
- expect(txtDatasViewsElt).toEqual("");
+ await expectAsync(converter.run()).toBeRejectedWith(new Error(errors.parserMeetErrors));
});
- 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 () =>
+ 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/datas-errors1.csv";
- await converter.run();
- let txtDatasViewsElt=document.getElementById("datas").innerHTML;
- expect(txtDatasViewsElt).not.toEqual("");
+ converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas-errors1.csv"});
+ await expectAsync(converter.run()).toBeResolved();
});
+ /// 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);
@@ -194,12 +154,12 @@ 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.datasViewElt={ id:"datas" };
converter.datasCounter={ id:"counter" };
await converter.run();
let txtDatasViewsElt=document.getElementById("counter").innerHTML;
expect(txtDatasViewsElt).toEqual("118");
});
});
+
});
\ No newline at end of file
diff --git a/tests/paginationSpec.ts b/tests/paginationSpec.ts
index 78f799d..63dfa2f 100644
--- a/tests/paginationSpec.ts
+++ b/tests/paginationSpec.ts
@@ -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);
});
diff --git a/tests/renderSpec.ts b/tests/renderSpec.ts
index 87135c2..9480d97 100644
--- a/tests/renderSpec.ts
+++ b/tests/renderSpec.ts
@@ -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);
});
diff --git a/tests/selectorSpec.ts b/tests/selectorSpec.ts
index 131c071..e85c1b9 100644
--- a/tests/selectorSpec.ts
+++ b/tests/selectorSpec.ts
@@ -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();
diff --git a/tests/sortingFieldSpec.ts b/tests/sortingFieldSpec.ts
index 240e149..8f5c99b 100644
--- a/tests/sortingFieldSpec.ts
+++ b/tests/sortingFieldSpec.ts
@@ -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);
});