import { Buffer } from "node:buffer"; import { describe, expect, it, vi } from "vitest"; vi.mock("electron", () => ({ nativeImage: { createFromBuffer: () => ({ isEmpty: () => false, getSize: () => ({ width: 1, height: 1 }), crop: () => ({ isEmpty: () => false, getSize: () => ({ width: 1, height: 1 }), toPNG: () => Buffer.from([]), }), toPNG: () => Buffer.from([]), }), }, })); vi.mock("../transport/api-client", () => ({ fetchDesktopApiURL: vi.fn(), resolveDesktopApiURL: (path: string) => `http://127.0.0.1:8080${path}`, })); import { buildAssetURLCandidates, getCenteredCropRect, } from "./media-image"; describe("media image helpers", () => { it("resolves public asset URLs through public and authenticated desktop candidates", () => { expect(buildAssetURLCandidates("/api/public/assets/12")).toEqual([ "http://127.0.0.1:8080/api/public/assets/12?format=png", "http://127.0.0.1:8080/api/desktop/content/assets/12?format=png", "http://127.0.0.1:8080/api/public/assets/12", ]); }); it("centers crop rectangles at the requested ratio", () => { const rect = getCenteredCropRect(1600, 1000, 4 / 3); expect(rect.x).toBeCloseTo(133.333, 3); expect(rect.y).toBeCloseTo(0); expect(rect.width).toBeCloseTo(1333.333, 3); expect(rect.height).toBeCloseTo(1000); }); });