Debug des scripts de test (d'où relecture du code)

This commit is contained in:
Fabrice PENHOËT 2021-10-07 12:43:29 +02:00
parent 519a3d7283
commit c8086135fe
10 changed files with 38 additions and 39 deletions

View File

@ -12,7 +12,7 @@ module.exports = function(config) {
frameworks: ["jasmine", "karma-typescript"],
// list of files / patterns to load in the browser
files: [ "src/*.ts", "tests/*.ts" , { pattern: 'tests/datas/*.csv', watched: true, included: false, served: true } ],
files: [ "src/*.ts", "tests/*.ts" , { pattern: 'tests/datas/*', watched: true, included: false, served: true } ],
proxies: { "/datas/": "http://localhost:9876/base/tests/datas/" },

View File

@ -1,10 +1,10 @@
{
"name": "freedatas2html",
"version": "0.7.0",
"version": "0.7.1",
"description": "Visualization of data from various sources (CSV, API, HTML...) with filters, classification, pagination, etc.",
"main": "index.js",
"scripts": {
"test": "karma start",
"test": "clear && karma start",
"build": "webpack",
"start": "webpack serve"
},

View File

@ -185,7 +185,7 @@ export class FreeDatas2HTML
}
}
createDatas2Display(fields: string[], datas: any[]) : string
private createDatas2Display(fields: string[], datas: any[]) : string
{
// Dois-je classer les données par rapport à un champ ?
if(this.datasSortedField !== undefined && this.datasSortedField.datasFieldNb !==undefined)

View File

@ -40,17 +40,19 @@ export class Render implements DatasRenders
if(this.settings.fieldsBegining !== undefined && this.settings.fieldDisplaying !== undefined && this.settings.fieldsEnding !== undefined )
{
datasHTML+=this.settings.fieldsBegining;
for (let i in this._converter.fields)
datasHTML+=this.settings.fieldDisplaying.replace("#FIELDNAME", this._converter.fields[Number(i)]);
for (let field of this._converter.fields)
datasHTML+=this.settings.fieldDisplaying.replace("#FIELDNAME", field);
datasHTML+=this.settings.fieldsEnding;
}
datasHTML+=this.settings.linesBegining;
for (let row in datas)
{
datasHTML+=this.settings.lineBegining;
for(let field in datas[row])
{
// On n'affiche que les champs attendus et signale les erreurs dans la console
/// REVOIR : IL FAUT QUE L'ON SOIT DANS LA BONNE COLONNE !!!!
if(this._converter.fields.indexOf(field) !== -1)
datasHTML+=this.settings.dataDisplaying.replace("#VALUE" , datas[row][field]).replace("#FIELDNAME" , field);
else

View File

@ -28,7 +28,7 @@ export class Selector implements Selectors
}
// Ignore un séparateur de données vide
// Attention : pas de trim() ici, car l'espace peut être un séparateur
// Attention : pas de trim(), car l'espace peut être un séparateur
set separator(separator: string|undefined)
{
if(separator === "")
@ -64,7 +64,7 @@ export class Selector implements Selectors
{
if(this._separator === undefined)
{
let checkedValue=String(this._converter.datas[row][this.name]).trim(); // trim() nécessaire pour éviter problème de classement du tableau (sort)
let checkedValue=String(this._converter.datas[row][this.name]);
if(checkedValue !== "" && this.values.indexOf(checkedValue) === -1)
this.values.push(checkedValue);
}
@ -73,7 +73,7 @@ export class Selector implements Selectors
let checkedValues=String(this._converter.datas[row][this.name]).split(this._separator); // String() car les données peuvent être des chiffres, etc.
for(let i in checkedValues)
{
let checkedValue=checkedValues[i].trim();
let checkedValue=checkedValues[i];
if(checkedValue !== "" && this.values.indexOf(checkedValue) === -1)
this.values.push(checkedValue);
}
@ -130,7 +130,7 @@ export class Selector implements Selectors
const selectedValueTxt=this.values[selectedValue] ;
if(this._separator === undefined)
{
if(data[this.name].trim() !== selectedValueTxt) // retour du trim() utilisé pour créer la liste
if(data[this.name] !== selectedValueTxt)
return false;
else
return true;
@ -141,7 +141,7 @@ export class Selector implements Selectors
let checkedValues=String(data[this.name]).split(this._separator);
for(let j in checkedValues)
{
if(checkedValues[j].trim() === selectedValueTxt)
if(checkedValues[j] === selectedValueTxt)
{
find=true;
break;

View File

@ -1,5 +1,5 @@
const { compare }= require('natural-orderby');
const errors = require("./errors.js");
const { compare }=require('natural-orderby');
const errors=require("./errors.js");
import { SortingFields } from "./freeDatas2HTMLInterfaces";
import { FreeDatas2HTML } from "./freeDatas2HTML";
@ -8,10 +8,10 @@ export class SortingField implements SortingFields
_converter: FreeDatas2HTML;
_fieldsDOMSelector: string;
_datasFieldNb: number;
_order: "asc"|"desc"|undefined = undefined;
_order: "asc"|"desc"|undefined=undefined;
// Injection de la classe principale, mais uniquement si le nom des champs ont été importés et affichés correctement
constructor(converter: FreeDatas2HTML, datasFieldNb: number, fieldsDOMSelector: string = "th")
constructor(converter: FreeDatas2HTML, datasFieldNb: number, fieldsDOMSelector: string="th")
{
if(converter.fields === undefined)
throw new Error(errors.sortingFieldNeedDatas);
@ -28,7 +28,7 @@ export class SortingField implements SortingFields
{
this._converter=converter;
this._datasFieldNb=datasFieldNb;
this._fieldsDOMSelector= fieldsDOMSelector;
this._fieldsDOMSelector=fieldsDOMSelector;
}
}
}
@ -68,7 +68,7 @@ export class SortingField implements SortingFields
field._order="asc";
else
field._order="desc";
field._converter.datasSortedField = field;
field._converter.datasSortedField=field;
field._converter.refreshView();
});
}

View File

@ -116,4 +116,4 @@ Z (numéro atomique),Élément,Symbole,Famille,Abondance des éléments dans la
115,Moscovium,Mc,Indéfinie,Inexistant
116,Livermorium,Lv,Indéfinie,Inexistant
117,Tennesse,Ts,Indéfinie,Inexistant
118,Oganesson,Og,Indéfinie,Inexistant
118,Oganesson,Og,Indéfinie,Inexistant
1 Z (numéro atomique) Élément Symbole Famille Abondance des éléments dans la croûte terrestre (μg/k)
116 115 Moscovium Mc Indéfinie Inexistant
117 116 Livermorium Lv Indéfinie Inexistant
118 117 Tennesse Ts Indéfinie Inexistant
119 118 Oganesson Og Indéfinie Inexistant

View File

@ -3,7 +3,7 @@ import { FreeDatas2HTML, Pagination } from "../src/freeDatas2HTML";
const errors=require("../src/errors.js");
const fixtures=require("./fixtures.js");
xdescribe("Test de la pagination.", () =>
describe("Test de la pagination.", () =>
{
let converter: FreeDatas2HTML;
let pagination: Pagination;

View File

@ -3,7 +3,7 @@ import { FreeDatas2HTML, Selector } from "../src/freeDatas2HTML";
const errors=require("../src/errors.js");
const fixtures=require("./fixtures.js");
xdescribe("Test des filtres de données", () =>
describe("Test des filtres de données", () =>
{
let converter: FreeDatas2HTML;
let selector: Selector;
@ -59,10 +59,6 @@ xdescribe("Test des filtres de données", () =>
{
beforeEach( async () =>
{
document.body.insertAdjacentHTML("afterbegin", fixtures.datasViewEltHTML);
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas1.csv"});
converter.datasViewElt={ id:"datas" };
await converter.run();
selector=new Selector(converter, 3, { id:"selector1" });
});

View File

@ -3,7 +3,7 @@ import { FreeDatas2HTML, Selector, SortingField } from "../src/freeDatas2HTML";
const errors=require("../src/errors.js");
const fixtures=require("./fixtures.js");
xdescribe("Test des champs de classement.", () =>
describe("Test des champs de classement.", () =>
{
let converter: FreeDatas2HTML;
let sortingField: SortingField;
@ -13,7 +13,8 @@ xdescribe("Test des champs de classement.", () =>
document.body.insertAdjacentHTML("afterbegin", fixtures.datasViewEltHTML);
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:9876/datas/datas1.csv"});
converter.datasViewElt={ id:"datas" };
await converter.run();
await converter.run();
const fields=document.querySelectorAll("th");
});
afterEach( () =>
@ -29,24 +30,24 @@ xdescribe("Test des champs de classement.", () =>
expect(() => { return new SortingField(converter, 0); }).toThrowError(errors.sortingFieldNeedDatas);
});
it("Doit générer une erreur, si initialisé sans élements HTML textuels dans la page servant d'entêtes aux données.", () =>
{
expect(() => { return new SortingField(converter, 0, "th.cols"); }).toThrowError(errors.sortingsFieldNotInHTML);
});
it("Doit générer une erreur, si le nombre d'éléments du DOM devant servir d'entêtes est différent du nombre de champs des données.", () =>
{
expect(() => { return new SortingField(converter, 0, "td"); }).toThrowError(errors.sortingFieldsNbFail);
});
it("Doit générer une erreur, si initialiser avec un numéro du champ de classement n'existant pas dans les données.", () =>
it("Doit générer une erreur, si initialisé avec un numéro du champ de classement n'existant pas dans les données.", () =>
{
expect(() => { return new SortingField(converter, 9); }).toThrowError(errors.sortingFieldFieldNotFound);
expect(() => { return new SortingField(converter, -1); }).toThrowError(errors.sortingFieldFieldNotFound);
expect(() => { return new SortingField(converter, 1.1); }).toThrowError(errors.sortingFieldFieldNotFound);
});
it("Si tous les paramètres sont ok, ils doivent être acceptés.", () =>
it("Doit générer une erreur, si initialisé sans élements HTML textuels dans la page servant d'entêtes aux données.", () =>
{
expect(() => { return new SortingField(converter, 0, "th.cols"); }).toThrowError(errors.sortingsFieldNotInHTML);
});
it("Doit générer une erreur, si le nombre d'éléments du DOM devant servir d'entêtes est différent du nombre de champs des données.", () =>
{
expect(() => { return new SortingField(converter, 0, "td"); }).toThrowError(errors.sortingFieldsNbFail);
});
it("Si tous les paramètres sont ok, ils doivent être acceptés.", () =>
{
const sortingField=new SortingField(converter, 1, "th");
expect(sortingField.datasFieldNb).toEqual(1);