import { describe, expect, it } from "vitest" import { getSemver } from "./getSemver" describe("getSemver", () => { it("should return undefined if version is undefined", () => { expect(getSemver("package", undefined, "master")).toBeUndefined() }) it("should return undefined if version is not a string", () => { // @ts-expect-error Testing invalid input expect(getSemver("package", 123, "master")).toBeUndefined() }) it("should strip 'v' prefix from version", () => { expect(getSemver("package", "v1.0.0", "master")).toBe("package@1.0.0") }) it("should return undefined if version format is invalid", () => { expect(getSemver("package", "invalid-version", "master")).toBeUndefined() }) it("should return the version as-is for named branches", () => { expect(getSemver("package", "1.0.0", "release")).toBe("package@1.0.0") expect(getSemver("package", "1.0.0", "master")).toBe("package@1.0.0") expect(getSemver("package", "1.0.0", "test")).toBe("package@1.0.0") expect(getSemver("package", "1.0.0", "stage")).toBe("package@1.0.0") expect(getSemver("package", "1.0.0", "prod")).toBe("package@1.0.0") }) it("should append cleaned branch name for non-named branches", () => { expect(getSemver("package", "1.0.0", "feature/my-feature")).toBe( "package@1.0.0-feature-my-feature" ) }) it("should handle special characters in non-named branches", () => { expect(getSemver("package", "1.0.0", "fix/bug#123")).toBe( "package@1.0.0-fix-bug-123" ) }) it("should lowercase and trim non-named branches", () => { expect(getSemver("package", "1.0.0", " MY-BRANCH ")).toBe( "package@1.0.0-my-branch" ) }) it("should truncate long branch names", () => { expect( getSemver( "package", "1.0.0", "feature/very-long-branch-name-that-exceeds-limit" ) ).toBe("package@1.0.0-feature-very-long-br") }) })