import { FreeDatas2HTML, Selector } from "../src/freeDatas2HTML";
const errors=require("../src/errors.js");
const fixtures=require("./fixtures.js");
describe("Test des filtres de données", () =>
{
let converter: FreeDatas2HTML;
let selector: Selector;
beforeEach( async () =>
{
document.body.insertAdjacentHTML("afterbegin", fixtures.datasViewEltHTML);
converter=new FreeDatas2HTML();
converter.datasViewElt={ id:"datas" };
converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv";
await converter.parse();
});
afterEach( () =>
{
document.body.removeChild(document.getElementById("fixture"));
});
describe("Test des données reçues pour configurer un filtre.", () =>
{
it("Doit générer une erreur, si initialisé sans fournir la liste des champs servant à classer les données.", () =>
{
converter=new FreeDatas2HTML();
expect(() => { return new Selector(converter, 0, { id:"selector1" }); }).toThrowError(errors.selectorNeedDatas);
});
it("Doit générer une erreur, si le numéro de champ fourni n'existe pas dans les données.", () =>
{
expect(() => { return new Selector(converter, 9, { id:"selector1" }); }).toThrowError(errors.selectorFieldNotFound);
expect(() => { return new Selector(converter, -1, { id:"selector1" }); }).toThrowError(errors.selectorFieldNotFound);
expect(() => { return new Selector(converter, 1.1, { id:"selector1" }); }).toThrowError(errors.selectorFieldNotFound);
});
it("Si un séparateur vide est fourni pour un filtre, il doit être ignoré.", () =>
{
selector=new Selector(converter, 0, { id:"selector1" });
selector.separator="";
expect(selector.separator).toBeUndefined();
});
it("Si toutes les paramètres sont correctes, ils doivent être acceptés.", () =>
{
const elt=document.getElementById("selector1");
const selector=new Selector(converter, 2, { id:"selector1" });
selector.separator=",";
expect(selector.datasFieldNb).toEqual(2);
expect(selector.datasViewElt).toEqual({ id:"selector1", eltDOM:elt });
expect(selector.separator).toEqual(",");
});
});
describe("Création et action des sélecteurs permettant de filter les données affichées.", () =>
{
beforeEach( async () =>
{
document.body.insertAdjacentHTML("afterbegin", fixtures.datasViewEltHTML);
converter=new FreeDatas2HTML();
converter.datasViewElt={ id:"datas" };
converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv";
await converter.parse();
selector=new Selector(converter, 3, { id:"selector1" });
});
it("Doit générer un élement