Relecture et adaptation du script testant le moteur de recherche.

This commit is contained in:
Fabrice PENHOËT 2022-02-21 11:49:27 +01:00
parent 596504d398
commit 0dd6fe833d

View File

@ -70,14 +70,13 @@ describe("Test du moteur de recherche.", () =>
it("Si tous numéros des champs sur lesquels effectuer les recherches existent dans les données, ils doivent être acceptés.", () =>
{
expect(() => { return new SearchEngine(converter, { id:"mySearch" }, [0,2,3]); }).not.toThrowError();
mySearch=new SearchEngine(converter, { id:"mySearch" }, [0,2,3]);
expect(() => { return mySearch=new SearchEngine(converter, { id:"mySearch" }, [0,2,3]); }).not.toThrowError();
expect(mySearch.fields2Search).toEqual(["Z (numéro atomique)","Symbole","Famille"]);
});
it("Un tableau vide pour les champs sur lesquels effectuer les recherche doit être accepté.", () =>
{
expect(() => { return new SearchEngine(converter, { id:"mySearch" }, []); }).not.toThrowError();
expect(() => { return mySearch=new SearchEngine(converter, { id:"mySearch" }, []); }).not.toThrowError();
expect(mySearch.fields2Search).toEqual(["Z (numéro atomique)","Élément","Symbole","Famille","Abondance des éléments dans la croûte terrestre (μg/k)"]);
});
});
@ -157,26 +156,7 @@ describe("Test du moteur de recherche.", () =>
searchBtn.click();
expect(converter.refreshView).toHaveBeenCalledTimes(2);
});
it("Le clic sur le bouton SUBMIT doit appeler la fonction actualisant l'affichage, pour peu que le nombre de caractères défini soit saisi.", () =>
{
spyOn(converter, "refreshView");
mySearch.nbCharsForSearch=3;
searchInput.value="z";
searchBtn.click();
expect(converter.refreshView).not.toHaveBeenCalled();
searchInput.value="zz";
searchBtn.click();
expect(converter.refreshView).not.toHaveBeenCalled();
searchInput.value="zzz";
searchBtn.click();
expect(converter.refreshView).toHaveBeenCalledTimes(1);
// Il est toujours possible d'annuler la recherche :
searchInput.value="";
searchBtn.click();
expect(converter.refreshView).toHaveBeenCalledTimes(2);
});
it("Si demandé, l'actualisation est lancée à chaque saisie, y compris si le champ est vide.", () =>
{
spyOn(converter, "refreshView");
@ -213,6 +193,16 @@ describe("Test du moteur de recherche.", () =>
searchInput.value="";
searchInput.dispatchEvent(new Event("input"));
expect(converter.refreshView).toHaveBeenCalledTimes(2);
// Les espaces entourant la valeur saisie doivent être ignorés dans le décompte des caractères :
searchInput.value=" zz";
searchInput.dispatchEvent(new Event("input"));
expect(converter.refreshView).toHaveBeenCalledTimes(2);
searchInput.value="zz ";
searchInput.dispatchEvent(new Event("input"));
expect(converter.refreshView).toHaveBeenCalledTimes(2);
searchInput.value=" zz ";
searchInput.dispatchEvent(new Event("input"));
expect(converter.refreshView).toHaveBeenCalledTimes(2);
});
it("Doit toujours retourner true si le champ de recherche est vide.", () =>
@ -227,6 +217,10 @@ describe("Test du moteur de recherche.", () =>
searchInput.value="";
searchInput.dispatchEvent(new Event("input"));
expect(mySearch.dataIsOk({ "nom" : "oui" })).toBeTrue();
// Y compris si il y a seulement des espaces :
searchInput.value=" ";
searchInput.dispatchEvent(new Event("input"));
expect(mySearch.dataIsOk({ "nom" : "oui" })).toBeTrue();
});
describe("Filtre des données", () =>
@ -250,7 +244,7 @@ describe("Test du moteur de recherche.", () =>
expect(mySearch.dataIsOk({ "Famille": "Halogene" })).toBeFalse();// sensible aux accents
});
it("Doit retourner true, si la valeur recherchée est retrouvée dans la donnée recherchée, sans prendre en compte la casse.", () =>
it("Doit retourner true, si la valeur recherchée est trouvée dans la donnée recherchée, sans prendre en compte la casse, ni les espaces entourant la saisie.", () =>
{
// Expression exacte :
searchInput.value="Halogène";
@ -264,6 +258,10 @@ describe("Test du moteur de recherche.", () =>
searchInput.value="halo";
searchInput.dispatchEvent(new Event("input"));
expect(mySearch.dataIsOk({ "Famille": "Halogène" })).toBeTrue();
// Espace entourant la saisie ignorés :
searchInput.value=" halo ";
searchInput.dispatchEvent(new Event("input"));
expect(mySearch.dataIsOk({ "Famille": "Halogène" })).toBeTrue();
});
});
});