Tests de la première version

This commit is contained in:
Fabrice PENHOËT 2021-08-10 15:58:15 +02:00
parent a7f1ecc5f9
commit 09e5c1a074
2 changed files with 89 additions and 15 deletions

5
tests/fixtures.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,47 +1,116 @@
import { freeCSV2HTML } from "../src/freeCSV2HTML";
const errors=require("../src/errors.js");
const fixtures=require("./fixtures.js");
describe("freeCSV2HTML", function()
describe("freeCSV2HTML", () =>
{
let converter: freeCSV2HTML;
const fixture="<div id='fixture'><div id='selector1'></div><div id='selector2'></div><div id='datas'></div></div>";
beforeEach(function()
beforeEach( () =>
{
converter=new freeCSV2HTML();
document.body.insertAdjacentHTML('afterbegin', fixture);
document.body.insertAdjacentHTML('afterbegin', fixtures.datasViewEltHTML);
});
afterEach(function()
afterEach( () =>
{
document.body.removeChild(document.getElementById('fixture'));
});
it("Doit être une instance de freeCSV2HTML", function()
it("Doit avoir créé une instance de freeCSV2HTML", () =>
{
expect(converter).toBeInstanceOf(freeCSV2HTML);
});
describe("Setting freeCSV2HTML", function()
describe("Setting freeCSV2HTML", () =>
{
it("Doit générer une erreur s'il n'y a pas d'élément dans la page pour l'id fourni pour recevoir les données.", function()
it("Doit générer une erreur s'il n'y a pas d'élément dans la page pour l'id fourni pour afficher les données.", () =>
{
expect(function() { return converter.datasEltId="dontExistId"; }).toThrowError(errors.elementNotFound+"dontExistId");
expect( () => { return converter.datasViewElt={ id:"dontExistId" }; }).toThrowError(errors.elementNotFound+"dontExistId");
});
it("Ne doit pas générer une erreur s'il y a un élément dans la page pour l'id fourni pour recevoir les données.", function()
it("Ne doit pas générer une erreur s'il y a bien un élément dans la page pour l'id fourni pour afficher les données.", () =>
{
expect(function() { return converter.datasEltId="datas"; }).not.toThrowError();
expect( () => { return converter.datasViewElt={ id:"datas" }; }).not.toThrowError();
});
it("Doit générer une erreur s'il n'y a pas d'éléments dans la page pour les ids fournis pour recevoir les sélecteurs.", function()
it("Doit générer une erreur s'il n'y a pas d'éléments dans la page pour chaque id fourni pour afficher un des sélecteurs.", () =>
{
expect(function() { return converter.datasSelectors=[{ colCSV:2, idElt:"selector2"},{ colCSV:3, idElt:"selector3"}]; }).toThrowError(errors.elementNotFound+"selector3");
expect( () =>{ return converter.datasSelectors=[{ colCSV:2, id:"selector2"},{ colCSV:3, id:"selector3"}]; }).toThrowError(errors.elementNotFound+"selector3");
});
it("Ne doit pas générer une erreur s'il y a bien un élément dans la page pour chaque id fourni pour recevoir un sélecteur.", function()
it("Doit générer une erreur si tous les numéros de colonne des sélecteurs ne sont pas des nombres naturels.", () =>
{
expect(function() { return converter.datasSelectors=[{ colCSV:2, idElt:"selector1"},{ colCSV:3, idElt:"selector2"}]; }).not.toThrowError();
expect( () => { return converter.datasSelectors=[{ colCSV:2.3, id:"selector1"},{ colCSV:3, id:"selector2"}]; }).toThrowError(errors.needNaturalNumber);
expect( () => { return converter.datasSelectors=[{ colCSV:2, id:"selector1"},{ colCSV:-1, id:"selector2"}]; }).toThrowError(errors.needNaturalNumber);
});
it("Ne doit pas générer une erreur si les informations fournies pour les sélecteurs sont correctes.", () =>
{
expect( () => { return converter.datasSelectors=[{ colCSV:0, id:"selector1"},{ colCSV:3, id:"selector2"}]; }).not.toThrowError();
});
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.needUrl);
});
});
describe("Running freeCSV2HTML", () =>
{
it("Doit générer une erreur si au moins un des deux paramètres nécessaires au fonctionnement n'est pas fourni.", async () =>
{
await expectAsync( converter.run()).toBeRejectedWith(new Error(errors.needDatasElt));
converter.datasViewElt={ id:"datas" };
await expectAsync( converter.run()).toBeRejectedWith(new Error(errors.needUrl));
});
it("Doit générer une erreur si la lecture du fichier échoue.", async () =>
{
converter.datasViewElt={ id:"datas" };
converter.datasSourceUrl="http://localhost:9876/datas/fake.csv";
await expectAsync( converter.parse()).toBeRejectedWith(new Error(errors.parserFail));
});
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/elements-chimiques.csv";
await expectAsync( converter.run()).toBeResolved();
});
it("Doit enregistrer la liste des erreurs rencontrées en parsant le fichier.", async () =>
{
converter.datasViewElt={ id:"datas" };
converter.datasSourceUrl="http://localhost:9876/datas/elements-chimiques-erreurs.csv";
await converter.parse();
expect(converter.parseErrors.length).toBeGreaterThan(0);
});
it("Ne doit enregistrer aucune erreur de lecture si le fichier est ok.", async () =>
{
converter.datasViewElt={ id:"datas" };
converter.datasSourceUrl="http://localhost:9876/datas/elements-chimiques.csv";
await converter.parse();
expect(converter.parseErrors.length).toEqual(0);
});
it("Doit afficher une erreur dans la page si aucune donnée n'a été trouvée dans le fichier.", async () =>
{
converter.datasViewElt={ id:"datas" };
converter.datasSourceUrl="http://localhost:9876/datas/elements-chimiques-vide.csv";
await converter.run();
let txtDatasViewsElt=document.getElementById("datas").innerHTML;
expect(txtDatasViewsElt).toEqual(errors.datasNotFound);
});
it("Doit afficher un tableau correspondant aux données du fichier csv", async () =>
{
converter.datasViewElt={ id:"datas" };
converter.datasSourceUrl="http://localhost:9876/datas/elements-chimiques.csv";
await converter.run();
let txtDatasViewsElt=document.getElementById("datas").innerHTML;
expect(txtDatasViewsElt).toEqual(fixtures.datasHTML);
});
});
});