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(); selector=new Selector(converter); }); 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); }).toThrowError(errors.selectorNeedDatas); }); it("Ne doit pas générer d'erreur, si initialisé avec des données correctes.", () => { expect(() => { return new Selector(converter); }).not.toThrowError(); }); it("Doit générer une erreur s'il n'y a aucun élément trouvé dans le DOM pour l'id fourni.", () => { expect(() => { return converter.datasViewElt={ id:"dontExist" }; }).toThrowError(errors.elementNotFound+"dontExist"); }); it("Si un élément est trouvé dans le DOM pour l'id fourni, doit l'accepter.", () => { selector.datasViewElt={ id:"selector1"}; let myContainer=document.getElementById("selector1"); expect(selector.datasViewElt).toEqual({ id:"selector1", "eltDOM": myContainer }); }); it("Doit générer une erreur, si le numéro de champ fourni n'existe pas dans les données.", () => { expect(() => { return selector.datasFieldNb=9; }).toThrowError(errors.selectorFieldNotFound); expect(() => { return selector.datasFieldNb=-1; }).toThrowError(errors.selectorFieldNotFound); expect(() => { return selector.datasFieldNb=1.1; }).toThrowError(errors.selectorFieldNotFound); }); it("Si le numéro de champ fourni est valide, il doit être accepté.", () => { expect(() => { return selector.datasFieldNb=1; }).not.toThrowError(); selector.datasFieldNb=1; expect(selector.datasFieldNb).toEqual(1); }); it("Si un séparateur vide est fourni pour un filtre, il doit être ignoré.", () => { selector.separator=""; expect(selector.separator).toBeUndefined(); }); }); 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); }); it("Doit générer un élement