diff --git a/tests/datas/elements-chimiques-erreurs.csv b/tests/datas/datas-errors1.csv similarity index 100% rename from tests/datas/elements-chimiques-erreurs.csv rename to tests/datas/datas-errors1.csv diff --git a/tests/datas/elements-chimiques.csv b/tests/datas/datas1.csv similarity index 100% rename from tests/datas/elements-chimiques.csv rename to tests/datas/datas1.csv diff --git a/tests/datas/elements-chimiques-vide.csv b/tests/datas/nodatas.csv similarity index 100% rename from tests/datas/elements-chimiques-vide.csv rename to tests/datas/nodatas.csv diff --git a/tests/fixtures.js b/tests/fixtures.js index 68a07ae..d9de9a1 100644 --- a/tests/fixtures.js +++ b/tests/fixtures.js @@ -4,8 +4,7 @@ module.exports = datasHTML : '
Z (numéro atomique)ÉlémentSymboleFamilleAbondance des éléments dans la croûte terrestre (μg/k)
1HydrogèneHNon-métal> 100000
2HéliumHeGaz noble> 1 et < 100 000
3LithiumLiMétal alcalin> 1 et < 100 000
4BérylliumBeMétal alcalino-terreux> 1 et < 100 000
5BoreBMétalloïde> 1 et < 100 000
6CarboneCNon-métal> 100000
7AzoteNNon-métal> 1 et < 100 000
8OxygèneONon-métal> 100000
9FluorFHalogène> 100000
10NéonNeGaz noble> 1 et < 100 000
11SodiumNaMétal alcalin> 100000
12MagnésiumMgMétal alcalino-terreux> 100000
13AluminiumAlMétal pauvre> 100000
14SiliciumSiMétalloïde> 100000
15PhosphorePNon-métal> 100000
16SoufreSNon-métal> 100000
17ChloreClHalogène> 100000
18ArgonArGaz noble> 1 et < 100 000
19PotassiumKMétal alcalin> 100000
20CalciumCaMétal alcalino-terreux> 100000
21ScandiumScMétal de transition> 1 et < 100 000
22TitaneTiMétal de transition> 100000
23VanadiumVMétal de transition> 100000
24ChromeCrMétal de transition> 100000
25ManganèseMnMétal de transition> 100000
26FerFeMétal de transition> 100000
27CobaltCoMétal de transition> 1 et < 100 000
28NickelNiMétal de transition> 1 et < 100 000
29CuivreCuMétal de transition> 1 et < 100 000
30ZincZnMétal pauvre> 1 et < 100 000
31GalliumGaMétal pauvre> 1 et < 100 000
32GermaniumGeMétalloïde> 1 et < 100 000
33ArsenicAsMétalloïde> 1 et < 100 000
34SéléniumSeNon-métal> 1 et < 100 000
35BromeBrHalogène> 1 et < 100 000
36KryptonKrgaz rare≤ 1
37RubidiumRbMétal alcalin> 1 et < 100 000
38StrontiumSrMétal alcalino-terreux> 100000
39YttriumYMétal de transition> 1 et < 100 000
40ZirconiumZrMétal de transition> 100000
41NiobiumNbMétal de transition> 1 et < 100 000
42MolybdèneMoMétal de transition> 1 et < 100 000
43TechnétiumTcMétal de transitionTraces
44RuthéniumRuMétal de transition≤ 1
45RhodiumRhMétal de transition≤ 1
46PalladiumPdMétal de transition> 1 et < 100 000
47ArgentAgMétal de transition> 1 et < 100 000
48CadmiumCdMétal pauvre> 1 et < 100 000
49IndiumInMétal pauvre> 1 et < 100 000
50ÉtainSnMétal pauvre> 1 et < 100 000
51AntimoineSbMétalloïde> 1 et < 100 000
52TellureTeMétalloïde≤ 1
53IodeIHalogène> 1 et < 100 000
54XénonXegaz rare≤ 1
55CésiumCsMétal alcalin> 1 et < 100 000
56BaryumBaMétal alcalino-terreux> 100000
57LanthaneLaLanthanide> 1 et < 100 000
58CériumCeLanthanide> 1 et < 100 000
59PraséodymePrLanthanide> 1 et < 100 000
60NéodymeNdLanthanide> 1 et < 100 000
61ProméthiumPmLanthanideTraces
62SamariumSmLanthanide> 1 et < 100 000
63EuropiumEuLanthanide> 1 et < 100 000
64GadoliniumGdLanthanide> 1 et < 100 000
65TerbiumTbLanthanide> 1 et < 100 000
66DysprosiumDyLanthanide> 1 et < 100 000
67HolmiumHoLanthanide> 1 et < 100 000
68ErbiumErLanthanide> 1 et < 100 000
69ThuliumTmLanthanide> 1 et < 100 000
70YtterbiumYbLanthanide> 1 et < 100 000
71LutéciumLuLanthanide> 1 et < 100 000
72HafniumHfMétal de transition> 1 et < 100 000
73TantaleTaMétal de transition> 1 et < 100 000
74TungstèneWMétal de transition> 1 et < 100 000
75RhéniumReMétal de transition≤ 1
76OsmiumOsMétal de transition> 1 et < 100 000
77IridiumIrMétal de transition≤ 1
78PlatinePtMétal de transition> 1 et < 100 000
79OrAuMétal de transition> 1 et < 100 000
80MercureHgMétal pauvre> 1 et < 100 000
81ThalliumTlMétal pauvre> 1 et < 100 000
82PlombPbMétal pauvre> 1 et < 100 000
83BismuthBiMétal pauvre> 1 et < 100 000
84PoloniumPoMétal pauvre≤ 1
85AstateAtMétalloïdeTraces
86RadonRnGaz noble≤ 1
87FranciumFrMétal alcalinTraces
88RadiumRaMétal alcalino-terreux≤ 1
89ActiniumAcActinide≤ 1
90ThoriumThActinide> 1 et < 100 000
91ProtactiniumPaActinide≤ 1
92UraniumUActinide> 1 et < 100 000
93NeptuniumNpActinideTraces
94PlutoniumPuActinideTraces
95AmériciumAmActinideInexistant
96CuriumCmActinideInexistant
97BerkéliumBkActinideInexistant
98CaliforniumCfActinideInexistant
99EinsteiniumEsActinideInexistant
100FermiumFmActinideInexistant
101MendéléviumMdActinideInexistant
102NobéliumNoActinideInexistant
103LawrenciumLrActinideInexistant
104RutherfordiumRfMétal de transitionInexistant
105DubniumDbMétal de transitionInexistant
106SeaborgiumSgMétal de transitionInexistant
107BohriumBhMétal de transitionInexistant
108HassiumHsMétal de transitionInexistant
109MeitnériumMtIndéfinieInexistant
110DarmstadtiumDsIndéfinieInexistant
111RoentgeniumRgIndéfinieInexistant
112CoperniciumCnMétal de transitionInexistant
113NihoniumNhIndéfinieInexistant
114FléroviumFlIndéfinieInexistant
115MoscoviumMcIndéfinieInexistant
116LivermoriumLvIndéfinieInexistant
117TennesseTsIndéfinieInexistant
118OganessonOgIndéfinieInexistant
', selector1HTML: '', selector2HTML: '', - datasHTMLForSelect1: '
Z (numéro atomique)ÉlémentSymboleFamilleAbondance des éléments dans la croûte terrestre (μg/k)
109MeitnériumMtIndéfinieInexistant
110DarmstadtiumDsIndéfinieInexistant
111RoentgeniumRgIndéfinieInexistant
113NihoniumNhIndéfinieInexistant
114FléroviumFlIndéfinieInexistant
115MoscoviumMcIndéfinieInexistant
116LivermoriumLvIndéfinieInexistant
117TennesseTsIndéfinieInexistant
118OganessonOgIndéfinieInexistant
', - datasHTMLForSelect2:'
Z (numéro atomique)ÉlémentSymboleFamilleAbondance des éléments dans la croûte terrestre (μg/k)
43TechnétiumTcMétal de transitionTraces
61ProméthiumPmLanthanideTraces
85AstateAtMétalloïdeTraces
87FranciumFrMétal alcalinTraces
93NeptuniumNpActinideTraces
94PlutoniumPuActinideTraces
', - datasHTMLForSelect3:'
Z (numéro atomique)ÉlémentSymboleFamilleAbondance des éléments dans la croûte terrestre (μg/k)
2HéliumHeGaz noble> 1 et < 100 000
10NéonNeGaz noble> 1 et < 100 000
18ArgonArGaz noble> 1 et < 100 000
', - datasHTMLForSelect4:'
Z (numéro atomique)ÉlémentSymboleFamilleAbondance des éléments dans la croûte terrestre (μg/k)
', + datasHTMLFor1Select: '
Z (numéro atomique)ÉlémentSymboleFamilleAbondance des éléments dans la croûte terrestre (μg/k)
109MeitnériumMtIndéfinieInexistant
110DarmstadtiumDsIndéfinieInexistant
111RoentgeniumRgIndéfinieInexistant
113NihoniumNhIndéfinieInexistant
114FléroviumFlIndéfinieInexistant
115MoscoviumMcIndéfinieInexistant
116LivermoriumLvIndéfinieInexistant
117TennesseTsIndéfinieInexistant
118OganessonOgIndéfinieInexistant
', + datasHTMLFor2Select:'
Z (numéro atomique)ÉlémentSymboleFamilleAbondance des éléments dans la croûte terrestre (μg/k)
2HéliumHeGaz noble> 1 et < 100 000
10NéonNeGaz noble> 1 et < 100 000
18ArgonArGaz noble> 1 et < 100 000
', + datasHTMLFor2SelectNone:'
Z (numéro atomique)ÉlémentSymboleFamilleAbondance des éléments dans la croûte terrestre (μg/k)
', } \ No newline at end of file diff --git a/tests/freeCSV2HTMLSpec.ts b/tests/freeCSV2HTMLSpec.ts index 9dcd517..e98f34d 100644 --- a/tests/freeCSV2HTMLSpec.ts +++ b/tests/freeCSV2HTMLSpec.ts @@ -22,41 +22,41 @@ describe("freeCSV2HTML", () => expect(converter).toBeInstanceOf(freeCSV2HTML); }); - describe("Setting freeCSV2HTML", () => + describe("Test des données de configuration reçues.", () => { it("Doit générer une erreur s'il n'y a pas d'élément dans la page pour l'id fourni pour afficher les données.", () => { - expect( () => { return converter.datasViewElt={ id:"dontExistId" }; }).toThrowError(errors.elementNotFound+"dontExistId"); + expect(() => { return converter.datasViewElt={ id:"dontExist" }; }).toThrowError(errors.elementNotFound+"dontExist"); }); it("Ne doit pas générer une erreur s'il y a bien un élément dans la page pour l'id fourni pour afficher les données.", () => { - expect( () => { return converter.datasViewElt={ id:"datas" }; }).not.toThrowError(); + expect(() => { return converter.datasViewElt={ id:"datas" }; }).not.toThrowError(); }); - it("Doit générer une erreur s'il n'y a pas d'éléments dans la page pour chaque id fourni pour afficher un des sélecteurs.", () => + it("Doit générer une erreur s'il n'y a pas un élément dans la page pour chaque id fourni pour afficher un des sélecteurs.", () => { - expect( () =>{ return converter.datasSelectors=[{ colCSV:2, id:"selector2"},{ colCSV:3, id:"selector3"}]; }).toThrowError(errors.elementNotFound+"selector3"); + expect(() =>{ return converter.datasSelectors=[{ colCSV:2, id:"selector2" },{ colCSV:3, id:"selector3" }]; }).toThrowError(errors.elementNotFound+"selector3"); }); it("Doit générer une erreur si tous les numéros de colonne des sélecteurs ne sont pas des nombres naturels.", () => { - expect( () => { return converter.datasSelectors=[{ colCSV:2.3, id:"selector1"},{ colCSV:3, id:"selector2"}]; }).toThrowError(errors.needNaturalNumber); - expect( () => { return converter.datasSelectors=[{ colCSV:2, id:"selector1"},{ colCSV:-1, id:"selector2"}]; }).toThrowError(errors.needNaturalNumber); + expect(() => { return converter.datasSelectors=[{ colCSV:2.3, id:"selector1" },{ colCSV:3, id:"selector2" }]; }).toThrowError(errors.needNaturalNumber); + expect(() => { return converter.datasSelectors=[{ colCSV:2, id:"selector1" },{ colCSV:-1, id:"selector2" }]; }).toThrowError(errors.needNaturalNumber); }); - it("Ne doit pas générer une erreur si les informations fournies pour les sélecteurs sont correctes.", () => + it("Ne doit pas générer une erreur si toutes les informations fournies pour les sélecteurs sont correctes.", () => { - expect( () => { return converter.datasSelectors=[{ colCSV:0, id:"selector1"},{ colCSV:3, id:"selector2"}]; }).not.toThrowError(); + expect(() => { return converter.datasSelectors=[{ colCSV:0, id:"selector1" },{ colCSV:3, id:"selector2" }]; }).not.toThrowError(); }); it("Doit générer une erreur si l'url fournie pour le fichier de données est vide.", () => { - expect( () => { return converter.datasSourceUrl=" "; }).toThrowError(errors.needUrl); + expect(() => { return converter.datasSourceUrl=" "; }).toThrowError(errors.needUrl); }); }); - describe("Running freeCSV2HTML", () => + describe("Parsage du fichier et création du tableau de données", () => { it("Doit générer une erreur si au moins un des deux paramètres nécessaires au fonctionnement n'est pas fourni.", async () => { @@ -68,21 +68,14 @@ describe("freeCSV2HTML", () => it("Doit générer une erreur si la lecture du fichier échoue.", async () => { converter.datasViewElt={ id:"datas" }; - converter.datasSourceUrl="http://localhost:9876/datas/fake.csv"; + converter.datasSourceUrl="http://localhost:9876/datas/dontExist.csv"; await expectAsync( converter.parse()).toBeRejectedWith(new Error(errors.parserFail)); }); - it("Ne doit pas générer d'erreur si les deux paramètres fournis sont ok.", async () => - { - converter.datasViewElt={ id:"datas" }; - converter.datasSourceUrl="http://localhost:9876/datas/elements-chimiques.csv"; - await expectAsync( converter.run()).toBeResolved(); - }); - it("Doit enregistrer la liste des erreurs rencontrées en parsant le fichier.", async () => { converter.datasViewElt={ id:"datas" }; - converter.datasSourceUrl="http://localhost:9876/datas/elements-chimiques-erreurs.csv"; + converter.datasSourceUrl="http://localhost:9876/datas/datas-errors1.csv"; await converter.parse(); expect(converter.parseErrors.length).toBeGreaterThan(0); }); @@ -90,15 +83,22 @@ describe("freeCSV2HTML", () => it("Ne doit enregistrer aucune erreur de lecture si le fichier est ok.", async () => { converter.datasViewElt={ id:"datas" }; - converter.datasSourceUrl="http://localhost:9876/datas/elements-chimiques.csv"; + converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv"; await converter.parse(); expect(converter.parseErrors.length).toEqual(0); }); + it("Ne doit pas générer d'erreur si les deux paramètres fournis sont ok.", async () => + { + converter.datasViewElt={ id:"datas" }; + converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv"; + await expectAsync( converter.run()).toBeResolved(); + }); + it("Doit afficher une erreur dans la page si aucune donnée n'a été trouvée dans le fichier.", async () => { converter.datasViewElt={ id:"datas" }; - converter.datasSourceUrl="http://localhost:9876/datas/elements-chimiques-vide.csv"; + converter.datasSourceUrl="http://localhost:9876/datas/nodatas.csv"; await converter.run(); let txtDatasViewsElt=document.getElementById("datas").innerHTML; expect(txtDatasViewsElt).toEqual(errors.datasNotFound); @@ -107,32 +107,35 @@ describe("freeCSV2HTML", () => it("Doit afficher un tableau correspondant aux données du fichier csv", async () => { converter.datasViewElt={ id:"datas" }; - converter.datasSourceUrl="http://localhost:9876/datas/elements-chimiques.csv"; + converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv"; await converter.run(); let txtDatasViewsElt=document.getElementById("datas").innerHTML; expect(txtDatasViewsElt).toEqual(fixtures.datasHTML); }); + }); - it("Doit générer une erreur si au moins un des numéros de colonne des sélecteurs ne correspond pas à une des colonne du fichier.", async () => + describe("Création et action des sélecteurs permettant de filter les données affichées.", () => + { + beforeEach( () => { converter.datasViewElt={ id:"datas" }; - converter.datasSourceUrl="http://localhost:9876/datas/elements-chimiques.csv"; + converter.datasSourceUrl="http://localhost:9876/datas/datas1.csv"; + }); + + it("Doit générer une erreur si au moins un des numéros de colonne fournis pour les sélecteurs ne correspond pas à une des colonne du fichier.", async () => + { converter.datasSelectors=[{ colCSV:0, id:"selector1"},{ colCSV:5, id:"selector2"}]; await expectAsync(converter.run()).toBeRejectedWith(new Error(errors.selectorFieldNotFound)); }); - it("Ne doit pas générer d'erreur si tous les numéros de colonne des sélecteurs correspondent pas à une des colonne du fichier.", async () => + it("Ne doit pas pas générer d'erreur si tous les numéros de colonne des sélecteurs correspondent pas à une des colonne du fichier.", async () => { - converter.datasViewElt={ id:"datas" }; - converter.datasSourceUrl="http://localhost:9876/datas/elements-chimiques.csv"; converter.datasSelectors=[{ colCSV:3, id:"selector1"},{ colCSV:4, id:"selector2"}]; await expectAsync(converter.run()).not.toBeRejected(); }); - it("Pour chaque sélecteur demandé doit générer un élement listant les valeurs distinctes du fichier, classées par ordre alphabétique.", async () => { - converter.datasViewElt={ id:"datas" }; - converter.datasSourceUrl="http://localhost:9876/datas/elements-chimiques.csv"; converter.datasSelectors=[{ colCSV:3, id:"selector1"},{ colCSV:4, id:"selector2"}]; await converter.run(); expect(document.getElementById("selector1").innerHTML).toEqual(fixtures.selector1HTML); @@ -141,8 +144,6 @@ describe("freeCSV2HTML", () => it("Le choix d'un option dans un des sélecteurs doit modifier le contenu du tableau pour ne garder que les données correspondantes ou les afficher toutes si sélection 0.", async () => { - converter.datasViewElt={ id:"datas" }; - converter.datasSourceUrl="http://localhost:9876/datas/elements-chimiques.csv"; converter.datasSelectors=[{ colCSV:3, id:"selector1"},{ colCSV:4, id:"selector2"}]; await converter.run(); @@ -150,29 +151,16 @@ describe("freeCSV2HTML", () => selectElement.value="4"; selectElement.dispatchEvent(new Event('change')); let txtDatasViewsElt=document.getElementById("datas").innerHTML; - expect(txtDatasViewsElt).toEqual(fixtures.datasHTMLForSelect1); + expect(txtDatasViewsElt).toEqual(fixtures.datasHTMLFor1Select); selectElement.value="0"; selectElement.dispatchEvent(new Event('change')); txtDatasViewsElt=document.getElementById("datas").innerHTML; expect(txtDatasViewsElt).toEqual(fixtures.datasHTML); - - selectElement = document.getElementById("CSVDatasSelector1") as HTMLInputElement; - selectElement.value="4"; - selectElement.dispatchEvent(new Event('change')); - txtDatasViewsElt=document.getElementById("datas").innerHTML; - expect(txtDatasViewsElt).toEqual(fixtures.datasHTMLForSelect2); - - selectElement.value="0"; - selectElement.dispatchEvent(new Event('change')); - txtDatasViewsElt=document.getElementById("datas").innerHTML; - expect(txtDatasViewsElt).toEqual(fixtures.datasHTML); }); - it("Si plusieurs sélecteurs sont utilisés, seules les données correspondant aux différents choix sont affichées.", async () => + it("Si plusieurs sélecteurs sont utilisés, seules les données correspondant aux différents choix doivent être affichées. Il peut n'y avoir aucun résultat.", async () => { - converter.datasViewElt={ id:"datas" }; - converter.datasSourceUrl="http://localhost:9876/datas/elements-chimiques.csv"; converter.datasSelectors=[{ colCSV:3, id:"selector1"},{ colCSV:4, id:"selector2"}]; await converter.run(); @@ -182,11 +170,13 @@ describe("freeCSV2HTML", () => selectElement.value="1"; selectElement.dispatchEvent(new Event('change')); let txtDatasViewsElt=document.getElementById("datas").innerHTML; - expect(txtDatasViewsElt).toEqual(fixtures.datasHTMLForSelect3); + expect(txtDatasViewsElt).toEqual(fixtures.datasHTMLFor2Select); + selectElement.value="4"; selectElement.dispatchEvent(new Event('change')); txtDatasViewsElt=document.getElementById("datas").innerHTML; - expect(txtDatasViewsElt).toEqual(fixtures.datasHTMLForSelect4); + expect(txtDatasViewsElt).toEqual(fixtures.datasHTMLFor2SelectNone); }); }); + }); \ No newline at end of file