diff --git a/tests/searchEngineSpec.ts b/tests/searchEngineSpec.ts index c785d4c..a7d2eb8 100644 --- a/tests/searchEngineSpec.ts +++ b/tests/searchEngineSpec.ts @@ -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(); }); }); });