syntaxai/tdd.md · main · src / b32_git_url_redirect.test.ts
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);
});
});