import { existsSync } from "node:fs"; import { getCaseMedia } from "./case-media"; /** Testes de caminhos-base de getCaseMedia: id inválido, pôster ausente e pôster presente em disco. */ jest.mock("node:fs", () => { const actual = jest.requireActual("node:fs"); return { ...actual, existsSync: jest.fn(actual.existsSync) }; }); const mockedExistsSync = jest.mocked(existsSync); beforeEach(() => { mockedExistsSync.mockClear(); }); describe("getCaseMedia", () => { it.each([ ["with path traversal", "../../etc/passwd"], ["with upper case", "Sev-Modaintima"], ["with a slash", "sev/modaintima"], ["empty", ""], ])("path: id %s -> undefined without touching the disk", (_label, id) => { expect(getCaseMedia(id, "desktop")).toBeUndefined(); expect(mockedExistsSync).not.toHaveBeenCalled(); }); it("path: valid id with no poster on disk -> undefined", () => { expect(getCaseMedia("twins-lab", "desktop")).toBeUndefined(); expect(mockedExistsSync).toHaveBeenCalledTimes(1); }); it("path: valid id with the poster on disk -> the showcase assets of that device", () => { const desktop = getCaseMedia("sev-modaintima", "desktop"); const mobile = getCaseMedia("sev-modaintima", "mobile"); expect(desktop?.poster).toBe("/videos/sev-modaintima/desktop.webp"); expect(mobile?.poster).toBe("/videos/sev-modaintima/mobile.webp"); expect(desktop?.sources.length).toBeGreaterThan(0); }); });