Relecture du script de tests du parseur CSV.

This commit is contained in:
Fabrice PENHOËT 2021-10-04 16:10:54 +02:00
parent b13be8afeb
commit d7d9885b2b

View File

@ -3,37 +3,15 @@ import { RemoteSource } from "../src/freeDatas2HTMLInterfaces";
import { ParserForCSV as Parser } from "../src/freeDatas2HTMLParserForCSV"; import { ParserForCSV as Parser } from "../src/freeDatas2HTMLParserForCSV";
const errors=require("../src/errors.js"); const errors=require("../src/errors.js");
// Pas de test de Papa Parse, car module externe // Pas de test de Papa Parse lui-même, car il s'agit d'un module externe.
// Mais tests d'instanciation et configuration de la classe l'utilisant // Mais tests de la classe l'utilisant.
describe("Tests du parseur de CSV", () => describe("Tests du parseur de CSV", () =>
{ {
let parser: Parser; let parser: Parser;
let papaParseOptions: {};
beforeEach( () => beforeEach( () =>
{ {
parser=new Parser(); parser=new Parser();
papaParseOptions =
{
delimiter: "",
newline: "",
quoteChar: '"',
escapeChar: '"',
header: true,
transformHeader: function(field: string, index: number): string { return field.trim() },
preview: 0,
comments: "",
complete: function(results :any)
{
console.log(results);// peut importe cette partie pour les tests
},
download: undefined,
downloadRequestHeaders: undefined,
skipEmptyLines:"greedy",
fastMode: undefined,
withCredentials: undefined,
transform: undefined,
}
}); });
it("Doit avoir créé une instance du Parser", () => it("Doit avoir créé une instance du Parser", () =>
@ -52,15 +30,15 @@ describe("Tests du parseur de CSV", () =>
let myRemoteSource: RemoteSource={ url:"zz" }; let myRemoteSource: RemoteSource={ url:"zz" };
parser.datasRemoteSource=myRemoteSource; parser.datasRemoteSource=myRemoteSource;
expect(parser.datasRemoteSource).toEqual(myRemoteSource); expect(parser.datasRemoteSource).toEqual(myRemoteSource);
myRemoteSource={ url:"zz", headers: [ { key:"test", value: "coucou"}, { key:"test2", value:"coucou2"}], withCredentials:true }; myRemoteSource={ url:"zz", headers:[ { key:"test", value:"coucou"}, { key:"test2", value:"coucou2"}], withCredentials:true };
parser.datasRemoteSource=myRemoteSource; parser.datasRemoteSource=myRemoteSource;
expect(parser.datasRemoteSource).toEqual(myRemoteSource); expect(parser.datasRemoteSource).toEqual(myRemoteSource);
}); });
it("Doit générer une erreur si la chaîne de données à parser est vide.", () => it("Doit générer une erreur si la chaîne de données à parser est vide.", () =>
{ {
expect(() => { return parser. datas2Parse= "" }).toThrowError(errors.parserNeedDatas); expect(() => { return parser.datas2Parse="" }).toThrowError(errors.parserNeedDatas);
expect(() => { return parser. datas2Parse= " " }).toThrowError(errors.parserNeedDatas); expect(() => { return parser.datas2Parse=" " }).toThrowError(errors.parserNeedDatas);
}); });
it("Doit accepter toute chaîne de caractères non vide pour les données à parser.", () => it("Doit accepter toute chaîne de caractères non vide pour les données à parser.", () =>
@ -77,17 +55,17 @@ describe("Tests du parseur de CSV", () =>
it("Si les données sont directement fournies, cela doit être pris en compte dans les options passées à Papa Parse.", () => it("Si les données sont directement fournies, cela doit être pris en compte dans les options passées à Papa Parse.", () =>
{ {
// Idéalement il faudrait tester les paramètres passés à PapaParse // Idéalement il faudrait tester les paramètres passés à PapaParse
// Mais semble impossible à cause des fonctions callback ? // Mais semble impossible à cause des fonctions callback ?!
spyOn(Papa, "parse"); spyOn(Papa, "parse");
parser.datas2Parse="datas"; parser.datas2Parse="datas";
parser.parse(); parser.parse();
expect(parser.privateOptions).toEqual( expect(parser.privateOptions).toEqual(
{ {
header: true, header:true,
download: false, download:false,
downloadRequestHeaders: undefined, downloadRequestHeaders:undefined,
skipEmptyLines:"greedy", skipEmptyLines:"greedy",
withCredentials: undefined withCredentials:undefined
}); });
}); });
@ -100,22 +78,22 @@ describe("Tests du parseur de CSV", () =>
parser.parse(); parser.parse();
expect(parser.privateOptions).toEqual( expect(parser.privateOptions).toEqual(
{ {
header: true, header:true,
download: true, download:true,
downloadRequestHeaders: undefined, downloadRequestHeaders:undefined,
skipEmptyLines: "greedy", skipEmptyLines:"greedy",
withCredentials: true withCredentials:true
}); });
myRemoteSource={ url:"http://localhost:9876/datas/datas1.csv", headers: [ { key:"test", value: "coucou"}, { key:"test2", value:"coucou2"}] , withCredentials:false }; myRemoteSource={ url:"http://localhost:9876/datas/datas1.csv", headers:[ { key:"test", value:"coucou"}, { key:"test2", value:"coucou2"}] , withCredentials:false };
parser.datasRemoteSource=myRemoteSource; parser.datasRemoteSource=myRemoteSource;
parser.parse(); parser.parse();
expect(parser.privateOptions).toEqual( expect(parser.privateOptions).toEqual(
{ {
header: true, header:true,
download: true, download:true,
downloadRequestHeaders: { test:"coucou", test2:"coucou2"}, downloadRequestHeaders:{ test:"coucou", test2:"coucou2"},
skipEmptyLines: "greedy", skipEmptyLines:"greedy",
withCredentials: false withCredentials:false
}); });
expect(Papa.parse).toHaveBeenCalledTimes(2); expect(Papa.parse).toHaveBeenCalledTimes(2);
}); });
@ -125,10 +103,12 @@ describe("Tests du parseur de CSV", () =>
parser.datasRemoteSource={ url:"http://localhost:9876/datas/datas1.csv" }; parser.datasRemoteSource={ url:"http://localhost:9876/datas/datas1.csv" };
await parser.parse(); await parser.parse();
expect(parser.parseResults).not.toBeUndefined(); expect(parser.parseResults).not.toBeUndefined();
// Y compris si données fournies bidon : // Y compris si les données fournies sont bidon :
parser=new Parser(); parser=new Parser();
parser.datas2Parse="datas"; parser.datas2Parse="datas";
await parser.parse(); await parser.parse();
expect(parser.parseResults).not.toBeUndefined(); expect(parser.parseResults).not.toBeUndefined();
// Mais dans ce cas, des erreurs doivent être reportées :
expect(parser.parseResults.errors.length).not.toEqual(0);
}); });
}); });