import { type AudioElement, findAudio, getMeta, getRawData, prepareClasses } from "./data"; const TEST_DOM = ` Picobel.js Test Page `; const TEST_NODES = [ { ...new Audio(), currentSrc: "http://audio.eatenbymonsters.com/reviews/daughter/human.mp3", title: "Human", dataset: { artist: "Daughter" } }, { ...new Audio(), currentSrc: "http://audio.eatenbymonsters.com/reviews/coldWarKids/lostThatEasy.mp3", title: "Lost That Easy", dataset: { artist: "Cold War Kids" } }, { ...new Audio(), currentSrc: "http://audio.eatenbymonsters.com/reviews/coldWarKids/lostThatEasy.mp3" } ]; describe("data handling", () => { it("finds the audio nodes", () => { // With test DOM: document.body.innerHTML = TEST_DOM; const nodes01 = findAudio(document.body); expect(nodes01.length).toEqual(2); // With empty DOM: document.body.innerHTML = ""; const nodes02 = findAudio(document.body); expect(nodes02.length).toEqual(0); }); it("creates an array of class names", () => { const classList01 = prepareClasses(0, "some classes", "themeName"); expect(Array.isArray(classList01)).toEqual(true); expect(classList01.length).toEqual(6); expect(classList01).toContain("picobel"); expect(classList01).toContain("loading"); expect(classList01).toContain("picobel--index-0"); expect(classList01).toContain("some"); expect(classList01).toContain("classes"); expect(classList01).toContain("themeName"); const classList02 = prepareClasses(2, "", "something"); expect(Array.isArray(classList02)).toEqual(true); expect(classList02.length).toEqual(4); expect(classList02).toContain("picobel"); expect(classList02).toContain("loading"); expect(classList02).toContain("picobel--index-2"); expect(classList02).toContain("something"); }); it("sets the correct key for each node", () => { const nodes = getRawData(TEST_NODES as AudioElement[]); expect(nodes.length).toEqual(TEST_NODES.length); nodes.map((node, key) => { expect(node.key).toEqual(key); }); }); it("sets the starting values", () => { const nodes = getRawData(TEST_NODES as AudioElement[]); expect(nodes.length).toEqual(3); nodes.map((node) => { expect(node.mute).toEqual(false); expect(node.tmpVolume).toEqual(1); }); }); it("sets the correct meta values", () => { // Adds meta to every node (even if the node is missing the prerequisits) const newNodes = TEST_NODES.map(node => { const meta = getMeta(node as AudioElement); expect(meta).toHaveProperty("artist"); expect(meta).toHaveProperty("title"); return meta; }); // Correctly adds the titles expect(newNodes[0].title).toEqual("Human"); expect(newNodes[1].title).toEqual("Lost That Easy"); expect(newNodes[2].title).toEqual("lostThatEasy.mp3"); // Correctly adds the artists expect(newNodes[0].artist).toEqual("Daughter"); expect(newNodes[1].artist).toEqual("Cold War Kids"); expect(newNodes[2].artist).toEqual(false); }); });