Relecture du script de test.

This commit is contained in:
Fabrice PENHOËT 2021-05-06 17:49:07 +02:00
parent 51c2d8b3f4
commit ad519f7b30

View File

@ -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="<div id='fixture'><figure id='noVideo'></figure><figure id='vFunanbule'><video controls='controls' preload='metadata'><source src='"+videosWebDir+"/Lizio-Poete-Ferrailleur-clownfunanbule.m4v' type='video/mp4'></source><p>Votre navigateur ne prend pas en charge les vidéos HTML5.</p></video><figcaption>Un clown funanbule !</figcaption></figure><figure id='vForgeron'><video controls='controls' preload='metadata'><source src='"+videosWebDir+"/Lizio-Poete-Ferrailleur-forgeron.m4v' type='video/mp4'></source><p>Votre navigateur ne prend pas en charge les vidéos HTML5.</p></video><figcaption>Il faut forger pour devenir forgeron !</figcaption></figure><figure id='vCircuit'><video controls='controls' preload='metadata'><source src='"+videosWebDir+"/Lizio-Poete-Ferrailleur-drole-de-circuit.m4v' type='video/mp4'></source><p>Votre navigateur ne prend pas en charge les vidéos HTML5.</p></video><figcaption>Drôle de circuit !</figcaption></figure></div>";
const fixture="<div id='fixture'><figure id='noVideo'></figure><figure id='video1'><video controls='controls' preload='metadata'><source src='"+videosWebDir+"/Lizio-Poete-Ferrailleur-clownfunanbule.m4v' type='video/mp4'></source></video></figure><figure id='video2'><video controls='controls' preload='metadata'><source src='"+videosWebDir+"/Lizio-Poete-Ferrailleur-forgeron.m4v' type='video/mp4'></source></video></figure><figure id='video3'><video controls='controls' preload='metadata'><source src='"+videosWebDir+"/Lizio-Poete-Ferrailleur-drole-de-circuit.m4v' type='video/mp4'></source></video></div>";
beforeEach(function()
{
@ -18,47 +18,47 @@ 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("");
});
@ -71,121 +71,113 @@ describe("vCarousel", 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=<HTMLMediaElement>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(<HTMLMediaElement>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=<HTMLMediaElement>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(<HTMLMediaElement>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=<HTMLMediaElement>document.querySelector("#vCircuit video");
let currentVideo=<HTMLMediaElement>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=<HTMLMediaElement>document.querySelector("#vCircuit video");
vCarouselTest.vContainers=["video1","video2","video3"];
vCarouselTest.firstVideoId="video3";
let currentVideo=<HTMLMediaElement>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=<HTMLMediaElement>document.querySelector("#vFunanbule video");
let currentVideo=<HTMLMediaElement>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=<HTMLMediaElement>document.querySelector("#vForgeron video");
expect(document.getElementById("video1").style.display).toBe("none");
expect(document.getElementById("video2").style.display).toBe("block");
currentVideo=<HTMLMediaElement>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=<HTMLMediaElement>document.querySelector("#vCircuit video");
expect(document.getElementById("video2").style.display).toBe("none");
expect(document.getElementById("video3").style.display).toBe("block");
currentVideo=<HTMLMediaElement>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=<HTMLMediaElement>document.querySelector("#vFunanbule video");
let currentVideo=<HTMLMediaElement>document.querySelector("#video1 video");
// Fin de lecture de la première vidéo, on passe à la suivante :
currentVideo.dispatchEvent(new Event("ended"));
currentVideo=<HTMLMediaElement>document.querySelector("#vForgeron video");
currentVideo=<HTMLMediaElement>document.querySelector("#video2 video");
// Fin de la deuxième, on passe à la dernière :
currentVideo.dispatchEvent(new Event("ended"));
currentVideo=<HTMLMediaElement>document.querySelector("#vCircuit video");
// Fin de la dernière, on retourne à la première :
currentVideo=<HTMLMediaElement>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=<HTMLMediaElement>document.querySelector("#vFunanbule video");
expect(document.getElementById("video3").style.display).toBe("none");
expect(document.getElementById("video1").style.display).toBe("block");
currentVideo=<HTMLMediaElement>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=<HTMLMediaElement>document.querySelector("#vFunanbule video");
let nextVideo=<HTMLMediaElement>document.querySelector("#vForgeron video");
let firstVideo=<HTMLMediaElement>document.querySelector("#video1 video");
let nextVideo=<HTMLMediaElement>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=<HTMLMediaElement>document.querySelector("#vFunanbule video");
let nextVideo=<HTMLMediaElement>document.querySelector("#vForgeron video");
let firstVideo=<HTMLMediaElement>document.querySelector("#video2 video");
let nextVideo=<HTMLMediaElement>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"));