import { FreeDatas2HTML, Pagination } from "../src/freeDatas2HTML";
const errors=require("../src/errors.js");
const fixtures=require("./fixtures.js");
describe("Test de la pagination.", () =>
{
let converter: FreeDatas2HTML;
let pagination: Pagination;
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();
pagination=new Pagination(converter, { id:"pages" }, "Page à afficher :");
});
afterEach( () =>
{
document.body.removeChild(document.getElementById("fixture"));
});
describe("Test des options de pagination.", () =>
{
it("Doit retourner un booléen indiquant si un nombre est un entier positif ou non.", () =>
{
expect(Pagination.isPositiveInteger(-1)).toBeFalse();
expect(Pagination.isPositiveInteger(1.25)).toBeFalse();
expect(Pagination.isPositiveInteger(0)).toBeFalse();
expect(Pagination.isPositiveInteger(1)).toBeTrue();
});
it("Doit générer une erreur si la pagination est initialisée sans données à traiter.", () =>
{
converter=new FreeDatas2HTML();
expect(() => { return new Pagination(converter, { id:"pages" }); }).toThrowError(errors.paginationNeedDatas);
});
it("Ne doit pas générer d'erreur si initialisé correctement", () =>
{
expect(() => { return new Pagination(converter, { id:"pages" }); }).not.toThrowError();
});
it("Doit générer une erreur si les options de pagination sont initialisées avec un tableau de valeurs vide.", () =>
{
expect(() => { return pagination.options={ displayElement: { id:"paginationOptions" }, values: [] }; }).toThrowError(errors.paginationNeedOptionsValues);
});
it("Doit générer une erreur si au moins une des options de pagination fournies n'est pas un entier positif.", () =>
{
expect(() => { return pagination.options={ displayElement: { id:"paginationOptions" }, values: [0,10,20] }; }).toThrowError(errors.needPositiveInteger);
});
it("Ne doit pas générer d'erreur si les options de pagination fournies sont correctes.", () =>
{
const test={ displayElement: { id:"paginationOptions" }, values: [10,20,50], name: "La pagination" };
expect(() => { return pagination.options=test}).not.toThrowError();
expect(pagination.options).toEqual(test);
});
it("Doit générer une erreur si la pagination par défaut n'est pas un entier positif.", () =>
{
expect(() => { return pagination.selectedValue=0; }).toThrowError(errors.needPositiveInteger);
});
it("Doit générer une erreur si la Pagination par défaut ne fait pas partie des valeurs proposées en option.", () =>
{
expect(() => { pagination.options={ displayElement: { id:"paginationOptions" }, values: [10,20,50] }; return pagination.selectedValue=15; }).toThrowError(errors.paginationNeedByfaultValueBeInOptions);
expect(() => { pagination.selectedValue=15; return pagination.options={ displayElement: { id:"paginationOptions" }, values: [10,20,50] }; }).toThrowError(errors.paginationNeedByfaultValueBeInOptions);
});
it("Doit accepter une pagination par défaut correcte, avec ou sans options proposées.", () =>
{
expect(() => { return pagination.selectedValue=10; }).not.toThrowError();
pagination.options={ displayElement: { id:"paginationOptions" }, values: [10,20,50] };
expect(() => { return pagination.selectedValue=10; }).not.toThrowError();
});
});
describe("Création et action des sélecteurs liés à la pagination des données.", () =>
{
beforeEach( async () =>
{
pagination.options={ displayElement: { id:"paginationOptions" }, values: [10,20,50,500] , name: "Choix de pagination :" };
pagination.selectedValue=10;
pagination.rend2HTML();
converter.pagination=pagination;
await converter.run();
});
it("Si des options de pagination sont fournies, doit générer un élement