import { describe, it, expect } from "vitest";
import createStyledElement from "../create_styled_element";
describe("parsers - webvtt - createStyledElement", () => {
it("should apply style for authorized elements", () => {
const node = document.createElement("div");
const authorizedNodeNames = ["u", "i", "b", "c"];
authorizedNodeNames.forEach((nodeName) => {
const _node = document.createElement(nodeName);
node.appendChild(_node);
});
const styleElements = {
u: "color: yellow",
i: " color: green",
b: "color: red",
c: "color: blue",
};
const element = createStyledElement(node, styleElements);
expect(element.outerHTML).toEqual(
"" +
'' +
'' +
'' +
'' +
"",
);
});
it("should not apply style for authorized elements", () => {
const node = document.createElement("div");
const authorizedNodeNames = ["u", "i", "b", "c"];
authorizedNodeNames.forEach((nodeName) => {
const _node = document.createElement(nodeName);
node.appendChild(_node);
});
const styleElements = {};
const element = createStyledElement(node, styleElements);
expect(element.outerHTML).toEqual(
"" + "" + "" + "" + "" + "",
);
});
it("should not apply style for text elements", () => {
const node = document.createElement("div");
const textNode = document.createTextNode("Hello");
node.appendChild(textNode);
const styleElements = {
// eslint-disable-next-line @typescript-eslint/naming-convention
"#text": "color: yellow",
};
const element = createStyledElement(node, styleElements);
expect(element.outerHTML).toEqual("" + "Hello" + "");
});
it("should turn empty text node into span", () => {
const node = document.createElement("div");
const textNode = document.createTextNode("");
node.appendChild(textNode);
const element = createStyledElement(node, {});
expect(element.outerHTML).toEqual("" + "" + "");
});
it("should add
tags for text elements", () => {
const node = document.createElement("div");
const textNode = document.createTextNode("Hello\nWorld!");
node.appendChild(textNode);
const element = createStyledElement(node, {});
expect(element.outerHTML).toEqual(
"" + "Hello" + "
" + "World!" + "",
);
});
it("should create span for unknown nodes", () => {
const node = document.createElement("svg");
const styleElements = {};
const element = createStyledElement(node, styleElements);
expect(element.outerHTML).toEqual("");
});
it("should convert authorized node and his children", () => {
const node = document.createElement("b");
const childNode = document.createElement("b");
node.appendChild(childNode);
const styleElements = {};
const element = createStyledElement(node, styleElements);
expect(element.outerHTML).toEqual("" + "" + "");
});
});