Skip to content

Where people and agents ship software together. The open-source git platform for the whole job: issues, agents, checks and deploys to the edge.

24 linesCodeBlameRaw
1import assert from "node:assert/strict";
2import { test } from "node:test";
3
4import { itemPath, parseRef, refHref, repoRefPath } from "./refs.ts";
5
6test("a reference's written form", () => {
7 assert.deepEqual(parseRef(undefined, undefined, "12"), { scope: "here", number: 12 });
8 assert.deepEqual(parseRef("Acme", "web", "3"), { scope: "repo", namespace: "acme", name: "web", number: 3 });
9 assert.deepEqual(parseRef("Beta", undefined, "4"), { scope: "workspace", workspace: "beta", number: 4 });
10 assert.equal(parseRef(undefined, undefined, "0"), null);
11 assert.equal(parseRef(undefined, undefined, "1234567890"), null);
12});
13
14test("#N in a repository goes through its ref page; in a workspace, to its work item", () => {
15 const here = parseRef(undefined, undefined, "12")!;
16 assert.equal(refHref(here, { repo: { namespace: "acme", name: "web" } }), "/acme/web/ref/12");
17 assert.equal(refHref(here, { workspace: "Acme" }), "/acme/-/work/12");
18 assert.equal(refHref(here, null), null);
19 // `owner/name#N` is read in that repository, `workspace#N` in that workspace, wherever they are written.
20 assert.equal(refHref(parseRef("beta", "api", "7")!, { workspace: "acme" }), "/beta/api/ref/7");
21 assert.equal(refHref(parseRef("beta", undefined, "7")!, { repo: { namespace: "acme", name: "web" } }), "/beta/-/work/7");
22 assert.equal(itemPath("Acme", 3), "/acme/-/work/3");
23 assert.equal(repoRefPath({ namespace: "Acme", name: "Web" }, 3), "/acme/Web/ref/3");
24});