mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-13 19:10:39 +00:00
46 lines
1.5 KiB
TypeScript
46 lines
1.5 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { buildNpmResolutionInstallFields, recordPluginInstall } from "./installs.js";
|
|
|
|
describe("buildNpmResolutionInstallFields", () => {
|
|
it("maps npm resolution metadata into install record fields", () => {
|
|
const fields = buildNpmResolutionInstallFields({
|
|
name: "@openclaw/demo",
|
|
version: "1.2.3",
|
|
resolvedSpec: "@openclaw/demo@1.2.3",
|
|
integrity: "sha512-abc",
|
|
shasum: "deadbeef",
|
|
resolvedAt: "2026-02-22T00:00:00.000Z",
|
|
});
|
|
expect(fields).toEqual({
|
|
resolvedName: "@openclaw/demo",
|
|
resolvedVersion: "1.2.3",
|
|
resolvedSpec: "@openclaw/demo@1.2.3",
|
|
integrity: "sha512-abc",
|
|
shasum: "deadbeef",
|
|
resolvedAt: "2026-02-22T00:00:00.000Z",
|
|
});
|
|
});
|
|
|
|
it("returns undefined fields when resolution is missing", () => {
|
|
expect(buildNpmResolutionInstallFields(undefined)).toEqual({
|
|
resolvedName: undefined,
|
|
resolvedVersion: undefined,
|
|
resolvedSpec: undefined,
|
|
integrity: undefined,
|
|
shasum: undefined,
|
|
resolvedAt: undefined,
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("recordPluginInstall", () => {
|
|
it("stores install metadata for the plugin id", () => {
|
|
const next = recordPluginInstall({}, { pluginId: "demo", source: "npm", spec: "demo@latest" });
|
|
expect(next.plugins?.installs?.demo).toMatchObject({
|
|
source: "npm",
|
|
spec: "demo@latest",
|
|
});
|
|
expect(typeof next.plugins?.installs?.demo?.installedAt).toBe("string");
|
|
});
|
|
});
|