import { describe, expect, test } from "bun:test"; import { rewriteOldGitUrl } from "./b32_git_url_redirect.ts"; describe("rewriteOldGitUrl", () => { test("rewrites old-form blob URL", () => { expect( rewriteOldGitUrl( "/GIT/syntaxai/tdd.md/blob/main/src/b32_sama_v2_verify.ts", ), ).toBe("/GIT/tdd.md/blob/main/src/b32_sama_v2_verify.ts"); }); test("rewrites old-form tree URL", () => { expect(rewriteOldGitUrl("/GIT/syntaxai/tdd.md/tree/main")).toBe( "/GIT/tdd.md/tree/main", ); }); test("rewrites old-form raw URL", () => { expect( rewriteOldGitUrl("/GIT/syntaxai/tdd.md/raw/main/sama.profile.toml"), ).toBe("/GIT/tdd.md/raw/main/sama.profile.toml"); }); test("rewrites old-form commit URL", () => { expect( rewriteOldGitUrl("/GIT/syntaxai/tdd.md/commit/abc1234"), ).toBe("/GIT/tdd.md/commit/abc1234"); }); test("rewrites old-form .diff URL (sha trailing .diff)", () => { expect( rewriteOldGitUrl("/GIT/syntaxai/tdd.md/commit/abc1234.diff"), ).toBe("/GIT/tdd.md/commit/abc1234.diff"); }); test("returns null for already-new URLs", () => { expect(rewriteOldGitUrl("/GIT/tdd.md/blob/main/x.ts")).toBe(null); }); test("returns null for other-org URLs", () => { expect(rewriteOldGitUrl("/GIT/otherorg/repo/blob/main/x.ts")).toBe(null); }); test("returns null for non-/GIT/ paths", () => { expect(rewriteOldGitUrl("/blog/some-post")).toBe(null); expect(rewriteOldGitUrl("/")).toBe(null); }); test("returns null for incomplete old-form (just /GIT/syntaxai/tdd.md)", () => { expect(rewriteOldGitUrl("/GIT/syntaxai/tdd.md")).toBe(null); expect(rewriteOldGitUrl("/GIT/syntaxai/tdd.md/")).toBe(null); }); });