diff --git a/tests/vCarouselSpec.ts b/tests/vCarouselSpec.ts index 32b4e01..774377f 100644 --- a/tests/vCarouselSpec.ts +++ b/tests/vCarouselSpec.ts @@ -5,7 +5,7 @@ describe("vCarousel", function() { let vCarouselTest : vCarousel; const videosWebDir="https://forge.chapril.org/Fab_Blab/vCarousel/src/branch/master/public/videos"; - const fixture="
Un clown funanbule !
Il faut forger pour devenir forgeron !
Drôle de circuit !
"; + const fixture="
"; beforeEach(function() { @@ -18,174 +18,166 @@ describe("vCarousel", function() document.body.removeChild(document.getElementById('fixture')); }); - it("should be an instance of vCarousel", function() + it("Should be an instance of vCarousel", function() { expect(vCarouselTest).toBeInstanceOf(vCarousel); }); - describe("setting vCarousel", function() + describe("Setting vCarousel", function() { it("Doit générer une erreur si tous les ids passés ne correspondent pas à des éléments HTML existants.", function() { - expect(function() { return vCarouselTest.vContainers=["dontExistId","vFunanbule","vForgeron"]; }).toThrowError(errors.elementNotFound+"dontExistId"); - expect(function() { return vCarouselTest.vContainers=["vFunanbule","dontExistId","vForgeron"]; }).toThrowError(errors.elementNotFound+"dontExistId"); - expect(function() { return vCarouselTest.vContainers=["vFunanbule","vForgeron","dontExistId"]; }).toThrowError(errors.elementNotFound+"dontExistId"); + expect(function() { return vCarouselTest.vContainers=["dontExistId","video1","video2"]; }).toThrowError(errors.elementNotFound+"dontExistId"); + expect(function() { return vCarouselTest.vContainers=["video1","dontExistId","video2"]; }).toThrowError(errors.elementNotFound+"dontExistId"); + expect(function() { return vCarouselTest.vContainers=["video1","video2","dontExistId"]; }).toThrowError(errors.elementNotFound+"dontExistId"); }); it("Doit générer une erreur si tous les ids passés ne correspondent pas à des éléments HTML contenant une vidéo.", function() - { - expect(function() { return vCarouselTest.vContainers=["noVideo","vFunanbule","vForgeron"]; }).toThrowError(errors.videoNotFound+"noVideo"); - expect(function() { return vCarouselTest.vContainers=["vFunanbule","noVideo","vForgeron"]; }).toThrowError(errors.videoNotFound+"noVideo"); - expect(function() { return vCarouselTest.vContainers=["vFunanbule","vForgeron","noVideo"]; }).toThrowError(errors.videoNotFound+"noVideo"); + { + expect(function() { return vCarouselTest.vContainers=["noVideo","video1","video2"]; }).toThrowError(errors.videoNotFound+"noVideo"); + expect(function() { return vCarouselTest.vContainers=["video1","noVideo","video2"]; }).toThrowError(errors.videoNotFound+"noVideo"); + expect(function() { return vCarouselTest.vContainers=["video1","video2","noVideo"]; }).toThrowError(errors.videoNotFound+"noVideo"); }); - it("Doit générer une erreur s'il n'y a pas au moins deux éléments HTML valides fournis.", function() + it("Doit générer une erreur s'il n'y a pas au moins 2 ids valides passés pour les éléments HTML contenant les vidéos.", function() { - expect(function() { return vCarouselTest.vContainers=["vFunanbule"]; }).toThrowError(errors.need2Videos); + expect(function() { return vCarouselTest.vContainers=["video1"]; }).toThrowError(errors.need2Videos); }); it("Ne doit pas générer d'erreur s'il y a au moins 2 ids passés correspondant à des éléments HTML valides et contenant chacun une vidéo.", function() { - expect(function() { return vCarouselTest.vContainers=["vFunanbule","vForgeron"]; }).not.toThrowError(); + expect(function() { return vCarouselTest.vContainers=["video1","video2"]; }).not.toThrowError(); }); - it("Ne doit pas prendre en compte l'id fourni pour la première vidéo à afficher s'il n'est pas correcte.", function() + it("Ne doit pas prendre en compte l'id fourni pour la première vidéo à afficher, s'il ne correspond pas à une des vidéos fournis.", function() { - vCarouselTest.vContainers=["vFunanbule","vForgeron"]; - vCarouselTest.firstVideoId="vCircuit"; + vCarouselTest.vContainers=["video1","video2"]; + vCarouselTest.firstVideoId="video3"; expect(vCarouselTest.firstVideoId).toBeUndefined(); }); - - it("Doit accepter un firstVideoId vide pour n'afficher aucune vidéo au lancement.", function() + + it("Doit accepter un firstVideoId vide permettant de cacher toutes les vidéos au lancement.", function() { - vCarouselTest.vContainers=["vFunanbule","vForgeron"]; + vCarouselTest.vContainers=["video1","video2"]; vCarouselTest.firstVideoId=""; expect(vCarouselTest.firstVideoId).toBe(""); }); }); describe("running vCarousel", function() - { + { it("Doit générer une erreur si on lance le carrousel sans avoir fourni les éléments HTML contenant les vidéos.", function() { expect(function() { return vCarouselTest.run(); }).toThrowError(errors.needVideosProvided); }); - it("Doit cacher toutes les vidéos si cela est demandé en option, aucune vidéo n'étant enregistrée comme en cours.", function() + it("Doit cacher toutes les vidéos si cela est demandé en option, aucune vidéo n'étant alors enregistrée comme en cours.", function() { - const videosId=["vFunanbule","vForgeron","vCircuit"]; + const videosId=["video1","video2","video3"]; vCarouselTest.vContainers=videosId; vCarouselTest.firstVideoId=""; vCarouselTest.run(); for(let containerId of videosId) - { expect(document.getElementById(containerId).style.display).toBe("none"); - } expect(vCarouselTest.currentVideo).toBeUndefined(); }); it("Doit cacher toutes les vidéos, sauf celle passée en option, qui doit être enregistrée comme celle en cours.", function() { - vCarouselTest.vContainers=["vFunanbule","vForgeron","vCircuit"]; - vCarouselTest.firstVideoId="vCircuit"; + vCarouselTest.vContainers=["video1","video2","video3"]; + vCarouselTest.firstVideoId="video3"; vCarouselTest.run(); - expect(document.getElementById("vFunanbule").style.display).toBe("none"); - expect(document.getElementById("vForgeron").style.display).toBe("none"); - expect(document.getElementById("vCircuit").style.display).toBe("block"); - let currentVideo=document.querySelector("#vCircuit video"); - expect(vCarouselTest.currentVideo).toEqual(currentVideo); + expect(document.getElementById("video1").style.display).toBe("none"); + expect(document.getElementById("video2").style.display).toBe("none"); + expect(document.getElementById("video3").style.display).toBe("block"); + expect(vCarouselTest.currentVideo).toEqual(document.querySelector("#video3 video")); }); - it("Doit cacher toutes les vidéos sauf la première, si aucune indication n'est passée en option, qui doit être enregistrée comme celle en cours.", function() + it("Si aucune indication n'est passée en option, doit cacher toutes les vidéos sauf la première qui doit être enregistrée comme celle en cours.", function() { - vCarouselTest.vContainers=["vFunanbule","vForgeron","vCircuit"]; + vCarouselTest.vContainers=["video1","video2","video3"]; vCarouselTest.run(); - expect(document.getElementById("vFunanbule").style.display).toBe("block"); - expect(document.getElementById("vForgeron").style.display).toBe("none"); - expect(document.getElementById("vCircuit").style.display).toBe("none"); - let currentVideo=document.querySelector("#vFunanbule video"); - expect(vCarouselTest.currentVideo).toEqual(currentVideo); + expect(document.getElementById("video1").style.display).toBe("block"); + expect(document.getElementById("video2").style.display).toBe("none"); + expect(document.getElementById("video3").style.display).toBe("none"); + expect(vCarouselTest.currentVideo).toEqual(document.querySelector("#video1 video")); }); it("Doit demander le lancement de la première vidéo affichée, si demandé en option.", function() { - vCarouselTest.vContainers=["vFunanbule","vForgeron","vCircuit"]; - vCarouselTest.firstVideoId="vCircuit"; + vCarouselTest.vContainers=["video1","video2","video3"]; + vCarouselTest.firstVideoId="video2"; vCarouselTest.playFirstVideo=true; - let currentVideo=document.querySelector("#vCircuit video"); + let currentVideo=document.querySelector("#video2 video"); spyOn(currentVideo, "play"); vCarouselTest.run(); expect(currentVideo.play).toHaveBeenCalled(); }); - it("Ne doit demander le lancement de la première vidéo affichée, si cela n'est pas demandé en option.", function() + it("Ne doit pas demander le lancement de la première vidéo affichée, si cela n'est pas demandé en option.", function() { - vCarouselTest.vContainers=["vFunanbule","vForgeron","vCircuit"]; - vCarouselTest.firstVideoId="vCircuit"; - let currentVideo=document.querySelector("#vCircuit video"); + vCarouselTest.vContainers=["video1","video2","video3"]; + vCarouselTest.firstVideoId="video3"; + let currentVideo=document.querySelector("#video3 video"); spyOn(currentVideo, "play"); vCarouselTest.run(); expect(currentVideo.play).not.toHaveBeenCalled(); }); - it("Doit passer d'une vidéo à l'autre jusqu'à ce qu'elles aient été toutes affichées.", function() + it("Doit passer d'une vidéo à l'autre et arrêter lorsqu'elles ont toutes été affichées.", function() { - vCarouselTest.vContainers=["vFunanbule","vForgeron","vCircuit"]; + vCarouselTest.vContainers=["video1","video2","video3"]; vCarouselTest.run(); - let currentVideo=document.querySelector("#vFunanbule video"); - + let currentVideo=document.querySelector("#video1 video"); // Fin de lecture de la première vidéo, on passe à la suivante : currentVideo.dispatchEvent(new Event("ended")); - expect(document.getElementById("vFunanbule").style.display).toBe("none"); - expect(document.getElementById("vForgeron").style.display).toBe("block"); - currentVideo=document.querySelector("#vForgeron video"); + expect(document.getElementById("video1").style.display).toBe("none"); + expect(document.getElementById("video2").style.display).toBe("block"); + currentVideo=document.querySelector("#video2 video"); expect(vCarouselTest.currentVideo).toEqual(currentVideo); - expect(window.location.hash).toEqual("#vForgeron"); - + expect(window.location.hash).toEqual("#video2"); // Fin de la deuxième, on passe à la dernière : currentVideo.dispatchEvent(new Event("ended")); - expect(document.getElementById("vForgeron").style.display).toBe("none"); - expect(document.getElementById("vCircuit").style.display).toBe("block"); - currentVideo=document.querySelector("#vCircuit video"); + expect(document.getElementById("video2").style.display).toBe("none"); + expect(document.getElementById("video3").style.display).toBe("block"); + currentVideo=document.querySelector("#video3 video"); expect(vCarouselTest.currentVideo).toEqual(currentVideo); - expect(window.location.hash).toEqual("#vCircuit"); - + expect(window.location.hash).toEqual("#video3"); // Fin de la dernière, rien ne bouge : currentVideo.dispatchEvent(new Event("ended")); - expect(document.getElementById("vCircuit").style.display).toBe("block"); + expect(document.getElementById("video3").style.display).toBe("block"); expect(vCarouselTest.currentVideo).toEqual(currentVideo); - expect(window.location.hash).toEqual("#vCircuit"); + expect(window.location.hash).toEqual("#video3"); }); - it("Si demandé, le carrousel doit continuer après avoir parcouru toutes les vidéos.", function() + it("Si cela est demandé, le carrousel doit reprendre au début après avoir parcouru toutes les vidéos.", function() { - vCarouselTest.vContainers=["vFunanbule","vForgeron","vCircuit"]; + vCarouselTest.vContainers=["video1","video2","video3"]; vCarouselTest.noStop=true; vCarouselTest.run(); - let currentVideo=document.querySelector("#vFunanbule video"); - + let currentVideo=document.querySelector("#video1 video"); // Fin de lecture de la première vidéo, on passe à la suivante : currentVideo.dispatchEvent(new Event("ended")); - currentVideo=document.querySelector("#vForgeron video"); + currentVideo=document.querySelector("#video2 video"); // Fin de la deuxième, on passe à la dernière : currentVideo.dispatchEvent(new Event("ended")); - currentVideo=document.querySelector("#vCircuit video"); - // Fin de la dernière, on retourne à la première : + currentVideo=document.querySelector("#video3 video"); + // Fin de la dernière, on doit retourner à la première : currentVideo.dispatchEvent(new Event("ended")); - expect(document.getElementById("vCircuit").style.display).toBe("none"); - expect(document.getElementById("vFunanbule").style.display).toBe("block"); - currentVideo=document.querySelector("#vFunanbule video"); + expect(document.getElementById("video3").style.display).toBe("none"); + expect(document.getElementById("video1").style.display).toBe("block"); + currentVideo=document.querySelector("#video1 video"); expect(vCarouselTest.currentVideo).toEqual(currentVideo); - expect(window.location.hash).toEqual("#vFunanbule"); + expect(window.location.hash).toEqual("#video1"); }); it("Doit demander le lancement des nouvelles vidéos affichées, si cela est demandé en option.", function() { - vCarouselTest.vContainers=["vFunanbule","vForgeron","vCircuit"]; + vCarouselTest.vContainers=["video1","video2","video3"]; vCarouselTest.playNextVideos=true; vCarouselTest.run(); - let firstVideo=document.querySelector("#vFunanbule video"); - let nextVideo=document.querySelector("#vForgeron video"); + let firstVideo=document.querySelector("#video1 video"); + let nextVideo=document.querySelector("#video2 video"); spyOn(nextVideo, "play"); // Fin de lecture de la première vidéo, on passe à la suivante qui doit se lancer automatiquement : firstVideo.dispatchEvent(new Event("ended")); @@ -194,10 +186,11 @@ describe("vCarousel", function() it("Ne doit pas demander le lancement des nouvelles vidéos affichées, si cela n'est pas demandé en option.", function() { - vCarouselTest.vContainers=["vFunanbule","vForgeron","vCircuit"]; + vCarouselTest.vContainers=["video1","video2","video3"]; + vCarouselTest.firstVideoId="video2"; vCarouselTest.run(); - let firstVideo=document.querySelector("#vFunanbule video"); - let nextVideo=document.querySelector("#vForgeron video"); + let firstVideo=document.querySelector("#video2 video"); + let nextVideo=document.querySelector("#video3 video"); spyOn(nextVideo, "play"); // Fin de lecture de la première vidéo, on passe à la suivante qui ne doit pas se lancer automatiquement : firstVideo.dispatchEvent(new Event("ended"));