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( `before > after`, `{"adjust":{"contrast":0.1}}`, ); expect(count).toBe(1); expect(html).toBe( `before > after`, ); }); 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( ``, ); }); });