mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-11 04:24:31 +00:00
refactor(channels): dedupe message routing and telegram helpers
This commit is contained in:
@@ -2,9 +2,44 @@ import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import { resolveTelegramReactionLevel } from "./reaction-level.js";
|
||||
|
||||
type ReactionResolution = ReturnType<typeof resolveTelegramReactionLevel>;
|
||||
|
||||
describe("resolveTelegramReactionLevel", () => {
|
||||
const prevTelegramToken = process.env.TELEGRAM_BOT_TOKEN;
|
||||
|
||||
const expectReactionFlags = (
|
||||
result: ReactionResolution,
|
||||
expected: {
|
||||
level: "off" | "ack" | "minimal" | "extensive";
|
||||
ackEnabled: boolean;
|
||||
agentReactionsEnabled: boolean;
|
||||
agentReactionGuidance?: "minimal" | "extensive";
|
||||
},
|
||||
) => {
|
||||
expect(result.level).toBe(expected.level);
|
||||
expect(result.ackEnabled).toBe(expected.ackEnabled);
|
||||
expect(result.agentReactionsEnabled).toBe(expected.agentReactionsEnabled);
|
||||
expect(result.agentReactionGuidance).toBe(expected.agentReactionGuidance);
|
||||
};
|
||||
|
||||
const expectMinimalFlags = (result: ReactionResolution) => {
|
||||
expectReactionFlags(result, {
|
||||
level: "minimal",
|
||||
ackEnabled: false,
|
||||
agentReactionsEnabled: true,
|
||||
agentReactionGuidance: "minimal",
|
||||
});
|
||||
};
|
||||
|
||||
const expectExtensiveFlags = (result: ReactionResolution) => {
|
||||
expectReactionFlags(result, {
|
||||
level: "extensive",
|
||||
ackEnabled: false,
|
||||
agentReactionsEnabled: true,
|
||||
agentReactionGuidance: "extensive",
|
||||
});
|
||||
};
|
||||
|
||||
beforeAll(() => {
|
||||
process.env.TELEGRAM_BOT_TOKEN = "test-token";
|
||||
});
|
||||
@@ -23,10 +58,7 @@ describe("resolveTelegramReactionLevel", () => {
|
||||
};
|
||||
|
||||
const result = resolveTelegramReactionLevel({ cfg });
|
||||
expect(result.level).toBe("minimal");
|
||||
expect(result.ackEnabled).toBe(false);
|
||||
expect(result.agentReactionsEnabled).toBe(true);
|
||||
expect(result.agentReactionGuidance).toBe("minimal");
|
||||
expectMinimalFlags(result);
|
||||
});
|
||||
|
||||
it("returns off level with no reactions enabled", () => {
|
||||
@@ -35,10 +67,11 @@ describe("resolveTelegramReactionLevel", () => {
|
||||
};
|
||||
|
||||
const result = resolveTelegramReactionLevel({ cfg });
|
||||
expect(result.level).toBe("off");
|
||||
expect(result.ackEnabled).toBe(false);
|
||||
expect(result.agentReactionsEnabled).toBe(false);
|
||||
expect(result.agentReactionGuidance).toBeUndefined();
|
||||
expectReactionFlags(result, {
|
||||
level: "off",
|
||||
ackEnabled: false,
|
||||
agentReactionsEnabled: false,
|
||||
});
|
||||
});
|
||||
|
||||
it("returns ack level with only ackEnabled", () => {
|
||||
@@ -47,10 +80,11 @@ describe("resolveTelegramReactionLevel", () => {
|
||||
};
|
||||
|
||||
const result = resolveTelegramReactionLevel({ cfg });
|
||||
expect(result.level).toBe("ack");
|
||||
expect(result.ackEnabled).toBe(true);
|
||||
expect(result.agentReactionsEnabled).toBe(false);
|
||||
expect(result.agentReactionGuidance).toBeUndefined();
|
||||
expectReactionFlags(result, {
|
||||
level: "ack",
|
||||
ackEnabled: true,
|
||||
agentReactionsEnabled: false,
|
||||
});
|
||||
});
|
||||
|
||||
it("returns minimal level with agent reactions enabled and minimal guidance", () => {
|
||||
@@ -59,10 +93,7 @@ describe("resolveTelegramReactionLevel", () => {
|
||||
};
|
||||
|
||||
const result = resolveTelegramReactionLevel({ cfg });
|
||||
expect(result.level).toBe("minimal");
|
||||
expect(result.ackEnabled).toBe(false);
|
||||
expect(result.agentReactionsEnabled).toBe(true);
|
||||
expect(result.agentReactionGuidance).toBe("minimal");
|
||||
expectMinimalFlags(result);
|
||||
});
|
||||
|
||||
it("returns extensive level with agent reactions enabled and extensive guidance", () => {
|
||||
@@ -71,10 +102,7 @@ describe("resolveTelegramReactionLevel", () => {
|
||||
};
|
||||
|
||||
const result = resolveTelegramReactionLevel({ cfg });
|
||||
expect(result.level).toBe("extensive");
|
||||
expect(result.ackEnabled).toBe(false);
|
||||
expect(result.agentReactionsEnabled).toBe(true);
|
||||
expect(result.agentReactionGuidance).toBe("extensive");
|
||||
expectExtensiveFlags(result);
|
||||
});
|
||||
|
||||
it("resolves reaction level from a specific account", () => {
|
||||
@@ -90,10 +118,7 @@ describe("resolveTelegramReactionLevel", () => {
|
||||
};
|
||||
|
||||
const result = resolveTelegramReactionLevel({ cfg, accountId: "work" });
|
||||
expect(result.level).toBe("extensive");
|
||||
expect(result.ackEnabled).toBe(false);
|
||||
expect(result.agentReactionsEnabled).toBe(true);
|
||||
expect(result.agentReactionGuidance).toBe("extensive");
|
||||
expectExtensiveFlags(result);
|
||||
});
|
||||
|
||||
it("falls back to global level when account has no reactionLevel", () => {
|
||||
@@ -109,8 +134,6 @@ describe("resolveTelegramReactionLevel", () => {
|
||||
};
|
||||
|
||||
const result = resolveTelegramReactionLevel({ cfg, accountId: "work" });
|
||||
expect(result.level).toBe("minimal");
|
||||
expect(result.agentReactionsEnabled).toBe(true);
|
||||
expect(result.agentReactionGuidance).toBe("minimal");
|
||||
expectMinimalFlags(result);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user