import { describe, expect, it } from
"vitest" ;
import type { HookStatusReport } from
"../hooks/hooks-status.js" ;
import { formatHookInfo, formatHooksCheck, formatHooksList } from
"./hooks-cli.js" ;
import { createEmptyInstallChecks } from
"./requirements-test-fixtures.js" ;
const report: HookStatusReport = {
workspaceDir:
"/tmp/workspace" ,
managedHooksDir:
"/tmp/hooks" ,
hooks: [
{
name:
"session-memory" ,
description:
"Save session context to memory" ,
source:
"openclaw-bundled" ,
pluginId: undefined,
filePath:
"/tmp/hooks/session-memory/HOOK.md" ,
baseDir:
"/tmp/hooks/session-memory" ,
handlerPath:
"/tmp/hooks/session-memory/handler.js" ,
hookKey:
"session-memory" ,
emoji:
"" ,
homepage:
"https://docs.openclaw.ai/automation/hooks#session-memory ",
events: [
"command:new" ],
always:
false ,
enabledByConfig:
true ,
requirementsSatisfied:
true ,
loadable:
true ,
blockedReason: undefined,
managedByPlugin:
false ,
...createEmptyInstallChecks(),
},
],
};
function createPluginManagedHookReport(): HookStatusReport {
return {
workspaceDir:
"/tmp/workspace" ,
managedHooksDir:
"/tmp/hooks" ,
hooks: [
{
name:
"plugin-hook" ,
description:
"Hook from plugin" ,
source:
"openclaw-plugin" ,
pluginId:
"voice-call" ,
filePath:
"/tmp/hooks/plugin-hook/HOOK.md" ,
baseDir:
"/tmp/hooks/plugin-hook" ,
handlerPath:
"/tmp/hooks/plugin-hook/handler.js" ,
hookKey:
"plugin-hook" ,
emoji:
"" ,
homepage: undefined,
events: [
"command:new" ],
always:
false ,
enabledByConfig:
true ,
requirementsSatisfied:
true ,
loadable:
true ,
blockedReason: undefined,
managedByPlugin:
true ,
...createEmptyInstallChecks(),
},
],
};
}
describe(
"hooks cli formatting" , () => {
it(
"labels hooks list output" , () => {
const output = formatHooksList(report, {});
expect(output).toContain(
"Hooks" );
expect(output).not.toContain(
"Internal Hooks" );
});
it(
"labels hooks status output" , () => {
const output = formatHooksCheck(report, {});
expect(output).toContain(
"Hooks Status" );
});
it(
"labels plugin-managed hooks with plugin id" , () => {
const pluginReport = createPluginManagedHookReport();
const output = formatHooksList(pluginReport, {});
expect(output).toContain(
"plugin:voice-call" );
});
it(
"shows plugin-managed details in hook info" , () => {
const pluginReport = createPluginManagedHookReport();
const output = formatHookInfo(pluginReport,
"plugin-hook" , {});
expect(output).toContain(
"voice-call" );
expect(output).toContain(
"Managed by plugin" );
});
});
Messung V0.5 in Prozent C=99 H=100 G=99
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-06-09)
¤
*© Formatika GbR, Deutschland