import { describe, expect, it, vi } from
"vitest" ;
import { CronService } from
"./service.js" ;
import {
createCronStoreHarness,
createNoopLogger,
installCronTestHooks,
} from
"./service.test-harness.js" ;
const logger = createNoopLogger();
const { makeStorePath } = createCronStoreHarness({ prefix:
"openclaw-cron-get-job-" });
installCronTestHooks({ logger });
function createCronService(storePath: string) {
return new CronService({
storePath,
cronEnabled:
true ,
log: logger,
enqueueSystemEvent: vi.fn(),
requestHeartbeatNow: vi.fn(),
runIsolatedAgentJob: vi.fn(async () => ({ status:
"ok" as
const })),
});
}
describe(
"CronService.getJob" , () => {
it(
"returns added jobs and undefined for missing ids" , async () => {
const { storePath } = await makeStorePath();
const cron = createCronService(storePath);
await cron.start();
try {
const added = await cron.add({
name:
"lookup-test" ,
enabled:
true ,
schedule: { kind:
"every" , everyMs:
60 _
000 },
sessionTarget:
"main" ,
wakeMode:
"next-heartbeat" ,
payload: { kind:
"systemEvent" , text:
"ping" },
});
expect(cron.getJob(added.id)?.id).toBe(added.id);
expect(cron.getJob(
"missing-job-id" )).toBeUndefined();
}
finally {
cron.stop();
}
});
it(
"preserves webhook delivery on create" , async () => {
const { storePath } = await makeStorePath();
const cron = createCronService(storePath);
await cron.start();
try {
const webhookJob = await cron.add({
name:
"webhook-job" ,
enabled:
true ,
schedule: { kind:
"every" , everyMs:
60 _
000 },
sessionTarget:
"main" ,
wakeMode:
"next-heartbeat" ,
payload: { kind:
"systemEvent" , text:
"ping" },
delivery: { mode:
"webhook" , to:
"https://example.invalid/cron " },
});
expect(cron.getJob(webhookJob.id)?.delivery).toEqual({
mode:
"webhook" ,
to:
"https://example.invalid/cron ",
});
}
finally {
cron.stop();
}
});
});
Messung V0.5 in Prozent C=98 H=100 G=98
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet am 2026-06-09)
¤
*© Formatika GbR, Deutschland