Files
openclaw/test/helpers/node-builtin-mocks.test.ts
2026-04-03 18:40:28 +01:00

55 lines
1.5 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { mockNodeBuiltinModule } from "./node-builtin-mocks.js";
describe("mockNodeBuiltinModule", () => {
it("merges partial overrides into the original module", async () => {
const actual = { readFileSync: () => "actual", watch: () => "watch" };
const readFileSync = () => "mock";
const mocked = await mockNodeBuiltinModule(async () => actual, {
readFileSync,
});
expect(mocked.readFileSync).toBe(readFileSync);
expect(mocked.watch).toBe(actual.watch);
expect("default" in mocked).toBe(false);
});
it("mirrors overrides into the default export when requested", async () => {
const homedir = () => "/tmp/home";
const mocked = await mockNodeBuiltinModule(
async () => ({ tmpdir: () => "/tmp" }),
{ homedir },
{ mirrorToDefault: true },
);
expect(mocked.default).toMatchObject({
homedir,
tmpdir: expect.any(Function),
});
});
it("preserves existing default exports while overriding members", async () => {
const actual = {
readFileSync: () => "actual",
default: {
readFileSync: () => "actual",
statSync: () => "stat",
},
};
const readFileSync = () => "mock";
const mocked = await mockNodeBuiltinModule(
async () => actual,
{ readFileSync },
{ mirrorToDefault: true },
);
expect(mocked.default).toMatchObject({
readFileSync,
statSync: expect.any(Function),
});
});
});