Files
Moltbot/src/plugin-sdk/status-helpers.test.ts
2026-02-23 21:25:28 +00:00

152 lines
3.7 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
buildBaseAccountStatusSnapshot,
buildBaseChannelStatusSummary,
buildTokenChannelStatusSummary,
collectStatusIssuesFromLastError,
createDefaultChannelRuntimeState,
} from "./status-helpers.js";
describe("createDefaultChannelRuntimeState", () => {
it("builds default runtime state without extra fields", () => {
expect(createDefaultChannelRuntimeState("default")).toEqual({
accountId: "default",
running: false,
lastStartAt: null,
lastStopAt: null,
lastError: null,
});
});
it("merges extra fields into the default runtime state", () => {
expect(
createDefaultChannelRuntimeState("alerts", {
probeAt: 123,
healthy: true,
}),
).toEqual({
accountId: "alerts",
running: false,
lastStartAt: null,
lastStopAt: null,
lastError: null,
probeAt: 123,
healthy: true,
});
});
});
describe("buildBaseChannelStatusSummary", () => {
it("defaults missing values", () => {
expect(buildBaseChannelStatusSummary({})).toEqual({
configured: false,
running: false,
lastStartAt: null,
lastStopAt: null,
lastError: null,
});
});
it("keeps explicit values", () => {
expect(
buildBaseChannelStatusSummary({
configured: true,
running: true,
lastStartAt: 1,
lastStopAt: 2,
lastError: "boom",
}),
).toEqual({
configured: true,
running: true,
lastStartAt: 1,
lastStopAt: 2,
lastError: "boom",
});
});
});
describe("buildBaseAccountStatusSnapshot", () => {
it("builds account status with runtime defaults", () => {
expect(
buildBaseAccountStatusSnapshot({
account: { accountId: "default", enabled: true, configured: true },
}),
).toEqual({
accountId: "default",
name: undefined,
enabled: true,
configured: true,
running: false,
lastStartAt: null,
lastStopAt: null,
lastError: null,
probe: undefined,
lastInboundAt: null,
lastOutboundAt: null,
});
});
});
describe("buildTokenChannelStatusSummary", () => {
it("includes token/probe fields with mode by default", () => {
expect(buildTokenChannelStatusSummary({})).toEqual({
configured: false,
tokenSource: "none",
running: false,
mode: null,
lastStartAt: null,
lastStopAt: null,
lastError: null,
probe: undefined,
lastProbeAt: null,
});
});
it("can omit mode for channels without a mode state", () => {
expect(
buildTokenChannelStatusSummary(
{
configured: true,
tokenSource: "env",
running: true,
lastStartAt: 1,
lastStopAt: 2,
lastError: "boom",
probe: { ok: true },
lastProbeAt: 3,
},
{ includeMode: false },
),
).toEqual({
configured: true,
tokenSource: "env",
running: true,
lastStartAt: 1,
lastStopAt: 2,
lastError: "boom",
probe: { ok: true },
lastProbeAt: 3,
});
});
});
describe("collectStatusIssuesFromLastError", () => {
it("returns runtime issues only for non-empty string lastError values", () => {
expect(
collectStatusIssuesFromLastError("telegram", [
{ accountId: "default", lastError: " timeout " },
{ accountId: "silent", lastError: " " },
{ accountId: "typed", lastError: { message: "boom" } },
]),
).toEqual([
{
channel: "telegram",
accountId: "default",
kind: "runtime",
message: "Channel error: timeout",
},
]);
});
});