mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-30 03:11:10 +00:00
61 lines
2.2 KiB
TypeScript
61 lines
2.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
isHeartbeatActionWakeReason,
|
|
isHeartbeatEventDrivenReason,
|
|
normalizeHeartbeatWakeReason,
|
|
resolveHeartbeatReasonKind,
|
|
} from "./heartbeat-reason.js";
|
|
|
|
describe("heartbeat-reason", () => {
|
|
it.each([
|
|
{ value: " cron:job-1 ", expected: "cron:job-1" },
|
|
{ value: " ", expected: "requested" },
|
|
{ value: undefined, expected: "requested" },
|
|
])("normalizes wake reasons for %j", ({ value, expected }) => {
|
|
expect(normalizeHeartbeatWakeReason(value)).toBe(expected);
|
|
});
|
|
|
|
it.each([
|
|
{ value: "retry", expected: "retry" },
|
|
{ value: "interval", expected: "interval" },
|
|
{ value: "manual", expected: "manual" },
|
|
{ value: "exec-event", expected: "exec-event" },
|
|
{ value: "wake", expected: "wake" },
|
|
{ value: "acp:spawn:stream", expected: "wake" },
|
|
{ value: "acp:spawn:", expected: "wake" },
|
|
{ value: "cron:job-1", expected: "cron" },
|
|
{ value: "hook:wake", expected: "hook" },
|
|
{ value: " hook:wake ", expected: "hook" },
|
|
{ value: "requested", expected: "other" },
|
|
{ value: "slow", expected: "other" },
|
|
{ value: "", expected: "other" },
|
|
{ value: undefined, expected: "other" },
|
|
])("classifies reason kinds for %j", ({ value, expected }) => {
|
|
expect(resolveHeartbeatReasonKind(value)).toBe(expected);
|
|
});
|
|
|
|
it.each([
|
|
{ value: "exec-event", expected: true },
|
|
{ value: "cron:job-1", expected: true },
|
|
{ value: "wake", expected: true },
|
|
{ value: "acp:spawn:stream", expected: true },
|
|
{ value: "hook:gmail:sync", expected: true },
|
|
{ value: "interval", expected: false },
|
|
{ value: "manual", expected: false },
|
|
{ value: "other", expected: false },
|
|
])("matches event-driven behavior for %j", ({ value, expected }) => {
|
|
expect(isHeartbeatEventDrivenReason(value)).toBe(expected);
|
|
});
|
|
|
|
it.each([
|
|
{ value: "manual", expected: true },
|
|
{ value: "exec-event", expected: true },
|
|
{ value: "hook:wake", expected: true },
|
|
{ value: "interval", expected: false },
|
|
{ value: "cron:job-1", expected: false },
|
|
{ value: "retry", expected: false },
|
|
])("matches action-priority wake behavior for %j", ({ value, expected }) => {
|
|
expect(isHeartbeatActionWakeReason(value)).toBe(expected);
|
|
});
|
|
});
|