import { describe, expect, test } from "bun:test"; import { extractMediaUrlsFromMarkdown, publicAssetUrlToStorageKey } from "./post-media-urls"; describe("extractMediaUrlsFromMarkdown", () => { test("accepts site-relative /public/assets/ URL", () => { expect(extractMediaUrlsFromMarkdown("![](/public/assets/a.webp)")).toEqual(["/public/assets/a.webp"]); }); test("accepts absolute URL with same path and normalizes to relative", () => { expect( extractMediaUrlsFromMarkdown("![](https://blog.example.com/public/assets/b.webp)"), ).toEqual(["/public/assets/b.webp"]); }); test("strips query on relative asset URL", () => { expect(extractMediaUrlsFromMarkdown("![](/public/assets/c.webp?v=1)")).toEqual(["/public/assets/c.webp"]); }); test("strips query on absolute asset URL via pathname", () => { expect( extractMediaUrlsFromMarkdown("![](https://x.example/public/assets/d.webp?cache=1)"), ).toEqual(["/public/assets/d.webp"]); }); test("ignores non-asset absolute URLs", () => { expect(extractMediaUrlsFromMarkdown("![](https://evil.com/other.png)")).toEqual([]); }); }); describe("publicAssetUrlToStorageKey", () => { test("maps normalized path to storage key", () => { expect(publicAssetUrlToStorageKey("/public/assets/z.webp")).toBe("z.webp"); }); });