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