83 lines · 2.6 KB · TypeScript
RawDownload
import { assert, describe, it } from "@effect/vitest";import { Option } from "effect"; import {  detectSourceControlProviderFromRemoteUrl,  getChangeRequestTerminologyForKind,  parseRemoteHostForSourceControl,  resolveChangeRequestPresentation,} from "./sourceControl.ts"; describe("source control presentation", () => {  it("uses merge request terminology for GitLab", () => {    assert.deepEqual(getChangeRequestTerminologyForKind("gitlab"), {      shortLabel: "MR",      singular: "merge request",    });  });   it("uses pull request terminology for GitHub-compatible providers", () => {    assert.deepEqual(getChangeRequestTerminologyForKind("github"), {      shortLabel: "PR",      singular: "pull request",    });    assert.deepEqual(getChangeRequestTerminologyForKind("azure-devops"), {      shortLabel: "PR",      singular: "pull request",    });    assert.deepEqual(getChangeRequestTerminologyForKind("bitbucket"), {      shortLabel: "PR",      singular: "pull request",    });  });   it("falls back to generic change request copy for unknown providers", () => {    const presentation = resolveChangeRequestPresentation({      kind: "unknown",      name: "forge",      baseUrl: "",    });     assert.equal(presentation.shortName, "change request");    assert.equal(presentation.longName, "change request");  });}); describe("detectSourceControlProviderFromRemoteUrl", () => {  it("detects common source control hosts", () => {    assert.equal(      detectSourceControlProviderFromRemoteUrl("git@github.com:owner/repo.git")?.kind,      "github",    );    assert.equal(      detectSourceControlProviderFromRemoteUrl("https://gitlab.com/group/repo.git")?.kind,      "gitlab",    );    assert.equal(      detectSourceControlProviderFromRemoteUrl("https://dev.azure.com/org/project/_git/repo")?.kind,      "azure-devops",    );    assert.equal(      detectSourceControlProviderFromRemoteUrl("git@bitbucket.org:workspace/repo.git")?.kind,      "bitbucket",    );  });}); describe("parseRemoteHostOption", () => {  it("returns parsed hosts as options", () => {    assert.deepEqual(      parseRemoteHostForSourceControl("git@github.com:owner/repo.git"),      Option.some("github.com"),    );    assert.deepEqual(      parseRemoteHostForSourceControl("https://gitlab.com/group/repo.git"),      Option.some("gitlab.com"),    );  });   it("returns none for empty or invalid remotes", () => {    assert.equal(Option.isNone(parseRemoteHostForSourceControl("   ")), true);    assert.equal(Option.isNone(parseRemoteHostForSourceControl("not a url")), true);  });});