Files
openclaw/src/infra/package-tag.test.ts
2026-03-14 00:58:12 +00:00

29 lines
1.3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { normalizePackageTagInput } from "./package-tag.js";
describe("normalizePackageTagInput", () => {
const packageNames = ["openclaw", "@openclaw/plugin"] as const;
it("returns null for blank inputs", () => {
expect(normalizePackageTagInput(undefined, packageNames)).toBeNull();
expect(normalizePackageTagInput(" ", packageNames)).toBeNull();
});
it("strips known package-name prefixes before returning the tag", () => {
expect(normalizePackageTagInput("openclaw@beta", packageNames)).toBe("beta");
expect(normalizePackageTagInput("@openclaw/plugin@2026.2.24", packageNames)).toBe("2026.2.24");
expect(normalizePackageTagInput("openclaw@ ", packageNames)).toBeNull();
});
it("treats exact known package names as an empty tag", () => {
expect(normalizePackageTagInput("openclaw", packageNames)).toBeNull();
expect(normalizePackageTagInput(" @openclaw/plugin ", packageNames)).toBeNull();
});
it("returns trimmed raw values when no package prefix matches", () => {
expect(normalizePackageTagInput(" latest ", packageNames)).toBe("latest");
expect(normalizePackageTagInput("@other/plugin@beta", packageNames)).toBe("@other/plugin@beta");
expect(normalizePackageTagInput("openclawer@beta", packageNames)).toBe("openclawer@beta");
});
});