Showing the changes to apps/server/src/pullRequest/pullRequestSyncKey.test.ts (1 of 172 files). Show all
Unified · Split
| @@ -0,0 +1,46 @@ | ||
| 1 | +import { ProjectId } from "@t3tools/contracts"; | |
| 2 | +import { describe, expect, it } from "vite-plus/test"; | |
| 3 | + | |
| 4 | +import { pullRequestSyncKey } from "./pullRequestSyncKey.ts"; | |
| 5 | + | |
| 6 | +describe("pullRequestSyncKey", () => { | |
| 7 | + const reference = { projectId: ProjectId.make("project"), repository: "web", number: 7 }; | |
| 8 | + it.each([ | |
| 9 | + "dev.azure.com/org/project/_git/web", | |
| 10 | + "ssh.dev.azure.com/v3/org/project/web", | |
| 11 | + "vs-ssh.visualstudio.com/v3/org/project/web", | |
| 12 | + "org.visualstudio.com/defaultcollection/project/_git/web", | |
| 13 | + ])("resolves hostless and checkout-host Azure references for %s", (canonicalKey) => { | |
| 14 | + const identity = { | |
| 15 | + canonicalKey, | |
| 16 | + provider: "azure-devops", | |
| 17 | + name: "web", | |
| 18 | + displayName: canonicalKey.split("/").slice(1).join("/"), | |
| 19 | + locator: { | |
| 20 | + source: "git-remote" as const, | |
| 21 | + remoteName: "origin", | |
| 22 | + remoteUrl: `https://${canonicalKey}`, | |
| 23 | + }, | |
| 24 | + }; | |
| 25 | + const expected = { host: "dev.azure.com", repository: "org/project/_git/web", number: 7 }; | |
| 26 | + expect(pullRequestSyncKey(reference, identity)).toEqual(expected); | |
| 27 | + expect( | |
| 28 | + pullRequestSyncKey({ ...reference, host: canonicalKey.split("/")[0]! }, identity), | |
| 29 | + ).toEqual(expected); | |
| 30 | + expect(pullRequestSyncKey({ ...reference, repository: "other" }, identity)).toBeNull(); | |
| 31 | + expect(pullRequestSyncKey({ ...reference, host: "unrelated.test" }, identity)).toBeNull(); | |
| 32 | + }); | |
| 33 | + it("normalizes complete hosted aliases without requiring a checkout", () => { | |
| 34 | + expect( | |
| 35 | + pullRequestSyncKey({ | |
| 36 | + ...reference, | |
| 37 | + host: "org.visualstudio.com", | |
| 38 | + repository: "project/_git/web", | |
| 39 | + }), | |
| 40 | + ).toEqual({ host: "dev.azure.com", repository: "org/project/_git/web", number: 7 }); | |
| 41 | + expect( | |
| 42 | + pullRequestSyncKey({ ...reference, host: "github.com", repository: "acme/web" }), | |
| 43 | + ).toEqual({ host: "github.com", repository: "acme/web", number: 7 }); | |
| 44 | + expect(pullRequestSyncKey(reference)).toBeNull(); | |
| 45 | + }); | |
| 46 | +}); | |