mirror of
https://github.com/moltbot/moltbot.git
synced 2026-04-24 07:01:49 +00:00
60 lines
1.6 KiB
TypeScript
60 lines
1.6 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
shouldEnqueueCronMainSummary,
|
|
shouldSkipHeartbeatOnlyDelivery,
|
|
} from "./heartbeat-policy.js";
|
|
|
|
describe("shouldSkipHeartbeatOnlyDelivery", () => {
|
|
it("suppresses empty payloads", () => {
|
|
expect(shouldSkipHeartbeatOnlyDelivery([], 300)).toBe(true);
|
|
});
|
|
|
|
it("suppresses when any payload is a heartbeat ack and no media is present", () => {
|
|
expect(
|
|
shouldSkipHeartbeatOnlyDelivery(
|
|
[{ text: "Checked inbox and calendar." }, { text: "HEARTBEAT_OK" }],
|
|
300,
|
|
),
|
|
).toBe(true);
|
|
});
|
|
|
|
it("does not suppress when media is present", () => {
|
|
expect(
|
|
shouldSkipHeartbeatOnlyDelivery(
|
|
[{ text: "HEARTBEAT_OK", mediaUrl: "https://example.com/image.png" }],
|
|
300,
|
|
),
|
|
).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe("shouldEnqueueCronMainSummary", () => {
|
|
const isSystemEvent = (text: string) => text.includes("HEARTBEAT_OK");
|
|
|
|
it("enqueues only when delivery was requested but did not run", () => {
|
|
expect(
|
|
shouldEnqueueCronMainSummary({
|
|
summaryText: "HEARTBEAT_OK",
|
|
deliveryRequested: true,
|
|
delivered: false,
|
|
deliveryAttempted: false,
|
|
suppressMainSummary: false,
|
|
isCronSystemEvent: isSystemEvent,
|
|
}),
|
|
).toBe(true);
|
|
});
|
|
|
|
it("does not enqueue after attempted outbound delivery", () => {
|
|
expect(
|
|
shouldEnqueueCronMainSummary({
|
|
summaryText: "HEARTBEAT_OK",
|
|
deliveryRequested: true,
|
|
delivered: false,
|
|
deliveryAttempted: true,
|
|
suppressMainSummary: false,
|
|
isCronSystemEvent: isSystemEvent,
|
|
}),
|
|
).toBe(false);
|
|
});
|
|
});
|