import { describe, expect, it } from "vitest";
import { patchMediaColorGradingInHtml } from "./colorGradingScopePatch";
describe("patchMediaColorGradingInHtml", () => {
it("adds color grading to video and image tags only", () => {
const { html, count } = patchMediaColorGradingInHtml(
`
`,
`{"preset":"natural-lift"}`,
);
expect(count).toBe(2);
expect(html).toContain(
`video id="v" data-color-grading="{"preset":"natural-lift"}"`,
);
expect(html).toContain(
`img id="i" data-color-grading="{"preset":"natural-lift"}"`,
);
expect(html).toContain(``);
});
it("replaces existing color grading without touching other attributes", () => {
const { html, count } = patchMediaColorGradingInHtml(
``,
`{"adjust":{"exposure":0.2}}`,
);
expect(count).toBe(1);
expect(html).toBe(
``,
);
});
it("keeps quoted greater-than characters inside media attributes", () => {
const { html, count } = patchMediaColorGradingInHtml(
`
`,
`{"adjust":{"contrast":0.1}}`,
);
expect(count).toBe(1);
expect(html).toBe(
`
`,
);
});
it("removes color grading when value is empty", () => {
const { html, count } = patchMediaColorGradingInHtml(
`
`,
null,
);
expect(count).toBe(1);
expect(html).toBe(`
`);
});
it("does not patch media-looking text inside scripts, styles, or comments", () => {
const { html, count } = patchMediaColorGradingInHtml(
[
``,
``,
``,
``,
].join(""),
`{"preset":"clean-studio"}`,
);
expect(count).toBe(1);
expect(html).toContain(``);
expect(html).toContain(``);
expect(html).toContain(``);
expect(html).toContain(
``,
);
});
});