mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 15:04:33 +00:00
refactor(test): dedupe hook transform skip assertions
This commit is contained in:
@@ -7,6 +7,47 @@ import { applyHookMappings, resolveHookMappings } from "./hooks-mapping.js";
|
|||||||
const baseUrl = new URL("http://127.0.0.1:18789/hooks/gmail");
|
const baseUrl = new URL("http://127.0.0.1:18789/hooks/gmail");
|
||||||
|
|
||||||
describe("hooks mapping", () => {
|
describe("hooks mapping", () => {
|
||||||
|
function expectSkippedTransformResult(result: Awaited<ReturnType<typeof applyHookMappings>>) {
|
||||||
|
expect(result?.ok).toBe(true);
|
||||||
|
if (result?.ok) {
|
||||||
|
expect(result.action).toBeNull();
|
||||||
|
expect("skipped" in result).toBe(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function applyNullTransformFromTempConfig(params: {
|
||||||
|
configDir: string;
|
||||||
|
transformsDir?: string;
|
||||||
|
}) {
|
||||||
|
const transformsRoot = path.join(params.configDir, "hooks", "transforms");
|
||||||
|
const transformsDir = params.transformsDir
|
||||||
|
? path.join(transformsRoot, params.transformsDir)
|
||||||
|
: transformsRoot;
|
||||||
|
fs.mkdirSync(transformsDir, { recursive: true });
|
||||||
|
fs.writeFileSync(path.join(transformsDir, "transform.mjs"), "export default () => null;");
|
||||||
|
|
||||||
|
const mappings = resolveHookMappings(
|
||||||
|
{
|
||||||
|
transformsDir: params.transformsDir,
|
||||||
|
mappings: [
|
||||||
|
{
|
||||||
|
match: { path: "skip" },
|
||||||
|
action: "agent",
|
||||||
|
transform: { module: "transform.mjs" },
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{ configDir: params.configDir },
|
||||||
|
);
|
||||||
|
|
||||||
|
return applyHookMappings(mappings, {
|
||||||
|
payload: {},
|
||||||
|
headers: {},
|
||||||
|
url: new URL("http://127.0.0.1:18789/hooks/skip"),
|
||||||
|
path: "skip",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
it("resolves gmail preset", () => {
|
it("resolves gmail preset", () => {
|
||||||
const mappings = resolveHookMappings({ presets: ["gmail"] });
|
const mappings = resolveHookMappings({ presets: ["gmail"] });
|
||||||
expect(mappings.length).toBeGreaterThan(0);
|
expect(mappings.length).toBeGreaterThan(0);
|
||||||
@@ -186,69 +227,13 @@ describe("hooks mapping", () => {
|
|||||||
|
|
||||||
it("accepts transformsDir subdirectory within the transforms root", async () => {
|
it("accepts transformsDir subdirectory within the transforms root", async () => {
|
||||||
const configDir = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-config-xformdir-ok-"));
|
const configDir = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-config-xformdir-ok-"));
|
||||||
const transformsSubdir = path.join(configDir, "hooks", "transforms", "subdir");
|
const result = await applyNullTransformFromTempConfig({ configDir, transformsDir: "subdir" });
|
||||||
fs.mkdirSync(transformsSubdir, { recursive: true });
|
expectSkippedTransformResult(result);
|
||||||
fs.writeFileSync(path.join(transformsSubdir, "transform.mjs"), "export default () => null;");
|
|
||||||
|
|
||||||
const mappings = resolveHookMappings(
|
|
||||||
{
|
|
||||||
transformsDir: "subdir",
|
|
||||||
mappings: [
|
|
||||||
{
|
|
||||||
match: { path: "skip" },
|
|
||||||
action: "agent",
|
|
||||||
transform: { module: "transform.mjs" },
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{ configDir },
|
|
||||||
);
|
|
||||||
|
|
||||||
const result = await applyHookMappings(mappings, {
|
|
||||||
payload: {},
|
|
||||||
headers: {},
|
|
||||||
url: new URL("http://127.0.0.1:18789/hooks/skip"),
|
|
||||||
path: "skip",
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(result?.ok).toBe(true);
|
|
||||||
if (result?.ok) {
|
|
||||||
expect(result.action).toBeNull();
|
|
||||||
expect("skipped" in result).toBe(true);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
it("treats null transform as a handled skip", async () => {
|
it("treats null transform as a handled skip", async () => {
|
||||||
const configDir = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-config-skip-"));
|
const configDir = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-config-skip-"));
|
||||||
const transformsRoot = path.join(configDir, "hooks", "transforms");
|
const result = await applyNullTransformFromTempConfig({ configDir });
|
||||||
fs.mkdirSync(transformsRoot, { recursive: true });
|
expectSkippedTransformResult(result);
|
||||||
const modPath = path.join(transformsRoot, "transform.mjs");
|
|
||||||
fs.writeFileSync(modPath, "export default () => null;");
|
|
||||||
|
|
||||||
const mappings = resolveHookMappings(
|
|
||||||
{
|
|
||||||
mappings: [
|
|
||||||
{
|
|
||||||
match: { path: "skip" },
|
|
||||||
action: "agent",
|
|
||||||
transform: { module: "transform.mjs" },
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{ configDir },
|
|
||||||
);
|
|
||||||
|
|
||||||
const result = await applyHookMappings(mappings, {
|
|
||||||
payload: {},
|
|
||||||
headers: {},
|
|
||||||
url: new URL("http://127.0.0.1:18789/hooks/skip"),
|
|
||||||
path: "skip",
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(result?.ok).toBe(true);
|
|
||||||
if (result?.ok) {
|
|
||||||
expect(result.action).toBeNull();
|
|
||||||
expect("skipped" in result).toBe(true);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("prefers explicit mappings over presets", async () => {
|
it("prefers explicit mappings over presets", async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user