mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-19 11:38:38 +00:00
test: dedupe discord provider account config harness
This commit is contained in:
@@ -16,6 +16,15 @@ type PluginCommandSpecMock = {
|
|||||||
acceptsArgs: boolean;
|
acceptsArgs: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function baseDiscordAccountConfig() {
|
||||||
|
return {
|
||||||
|
commands: { native: true, nativeSkills: false },
|
||||||
|
voice: { enabled: false },
|
||||||
|
agentComponents: { enabled: false },
|
||||||
|
execApprovals: { enabled: false },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
const {
|
const {
|
||||||
clientFetchUserMock,
|
clientFetchUserMock,
|
||||||
clientGetPluginMock,
|
clientGetPluginMock,
|
||||||
@@ -91,12 +100,7 @@ const {
|
|||||||
resolveDiscordAccountMock: vi.fn(() => ({
|
resolveDiscordAccountMock: vi.fn(() => ({
|
||||||
accountId: "default",
|
accountId: "default",
|
||||||
token: "cfg-token",
|
token: "cfg-token",
|
||||||
config: {
|
config: baseDiscordAccountConfig(),
|
||||||
commands: { native: true, nativeSkills: false },
|
|
||||||
voice: { enabled: false },
|
|
||||||
agentComponents: { enabled: false },
|
|
||||||
execApprovals: { enabled: false },
|
|
||||||
},
|
|
||||||
})),
|
})),
|
||||||
resolveDiscordAllowlistConfigMock: vi.fn(async () => ({
|
resolveDiscordAllowlistConfigMock: vi.fn(async () => ({
|
||||||
guildEntries: undefined,
|
guildEntries: undefined,
|
||||||
@@ -108,6 +112,23 @@ const {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function mockResolvedDiscordAccountConfig(overrides: Record<string, unknown>) {
|
||||||
|
resolveDiscordAccountMock.mockImplementation(() => ({
|
||||||
|
accountId: "default",
|
||||||
|
token: "cfg-token",
|
||||||
|
config: {
|
||||||
|
...baseDiscordAccountConfig(),
|
||||||
|
...overrides,
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
function getFirstDiscordMessageHandlerParams<T extends object>() {
|
||||||
|
expect(createDiscordMessageHandlerMock).toHaveBeenCalledTimes(1);
|
||||||
|
const firstCall = createDiscordMessageHandlerMock.mock.calls.at(0) as [T] | undefined;
|
||||||
|
return firstCall?.[0];
|
||||||
|
}
|
||||||
|
|
||||||
vi.mock("@buape/carbon", () => {
|
vi.mock("@buape/carbon", () => {
|
||||||
class ReadyListener {}
|
class ReadyListener {}
|
||||||
class Client {
|
class Client {
|
||||||
@@ -663,17 +684,9 @@ describe("monitorDiscordProvider", () => {
|
|||||||
it("forwards custom eventQueue config from discord config to Carbon Client", async () => {
|
it("forwards custom eventQueue config from discord config to Carbon Client", async () => {
|
||||||
const { monitorDiscordProvider } = await import("./provider.js");
|
const { monitorDiscordProvider } = await import("./provider.js");
|
||||||
|
|
||||||
resolveDiscordAccountMock.mockImplementation(() => ({
|
mockResolvedDiscordAccountConfig({
|
||||||
accountId: "default",
|
eventQueue: { listenerTimeout: 300_000 },
|
||||||
token: "cfg-token",
|
});
|
||||||
config: {
|
|
||||||
commands: { native: true, nativeSkills: false },
|
|
||||||
voice: { enabled: false },
|
|
||||||
agentComponents: { enabled: false },
|
|
||||||
execApprovals: { enabled: false },
|
|
||||||
eventQueue: { listenerTimeout: 300_000 },
|
|
||||||
},
|
|
||||||
}));
|
|
||||||
|
|
||||||
await monitorDiscordProvider({
|
await monitorDiscordProvider({
|
||||||
config: baseConfig(),
|
config: baseConfig(),
|
||||||
@@ -687,28 +700,19 @@ describe("monitorDiscordProvider", () => {
|
|||||||
it("does not reuse eventQueue.listenerTimeout as the queued inbound worker timeout", async () => {
|
it("does not reuse eventQueue.listenerTimeout as the queued inbound worker timeout", async () => {
|
||||||
const { monitorDiscordProvider } = await import("./provider.js");
|
const { monitorDiscordProvider } = await import("./provider.js");
|
||||||
|
|
||||||
resolveDiscordAccountMock.mockImplementation(() => ({
|
mockResolvedDiscordAccountConfig({
|
||||||
accountId: "default",
|
eventQueue: { listenerTimeout: 50_000 },
|
||||||
token: "cfg-token",
|
});
|
||||||
config: {
|
|
||||||
commands: { native: true, nativeSkills: false },
|
|
||||||
voice: { enabled: false },
|
|
||||||
agentComponents: { enabled: false },
|
|
||||||
execApprovals: { enabled: false },
|
|
||||||
eventQueue: { listenerTimeout: 50_000 },
|
|
||||||
},
|
|
||||||
}));
|
|
||||||
|
|
||||||
await monitorDiscordProvider({
|
await monitorDiscordProvider({
|
||||||
config: baseConfig(),
|
config: baseConfig(),
|
||||||
runtime: baseRuntime(),
|
runtime: baseRuntime(),
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(createDiscordMessageHandlerMock).toHaveBeenCalledTimes(1);
|
const params = getFirstDiscordMessageHandlerParams<{
|
||||||
const firstCall = createDiscordMessageHandlerMock.mock.calls.at(0) as
|
workerRunTimeoutMs?: number;
|
||||||
| [{ workerRunTimeoutMs?: number; listenerTimeoutMs?: number }]
|
listenerTimeoutMs?: number;
|
||||||
| undefined;
|
}>();
|
||||||
const params = firstCall?.[0];
|
|
||||||
expect(params?.workerRunTimeoutMs).toBeUndefined();
|
expect(params?.workerRunTimeoutMs).toBeUndefined();
|
||||||
expect("listenerTimeoutMs" in (params ?? {})).toBe(false);
|
expect("listenerTimeoutMs" in (params ?? {})).toBe(false);
|
||||||
});
|
});
|
||||||
@@ -716,28 +720,18 @@ describe("monitorDiscordProvider", () => {
|
|||||||
it("forwards inbound worker timeout config to the Discord message handler", async () => {
|
it("forwards inbound worker timeout config to the Discord message handler", async () => {
|
||||||
const { monitorDiscordProvider } = await import("./provider.js");
|
const { monitorDiscordProvider } = await import("./provider.js");
|
||||||
|
|
||||||
resolveDiscordAccountMock.mockImplementation(() => ({
|
mockResolvedDiscordAccountConfig({
|
||||||
accountId: "default",
|
inboundWorker: { runTimeoutMs: 300_000 },
|
||||||
token: "cfg-token",
|
});
|
||||||
config: {
|
|
||||||
commands: { native: true, nativeSkills: false },
|
|
||||||
voice: { enabled: false },
|
|
||||||
agentComponents: { enabled: false },
|
|
||||||
execApprovals: { enabled: false },
|
|
||||||
inboundWorker: { runTimeoutMs: 300_000 },
|
|
||||||
},
|
|
||||||
}));
|
|
||||||
|
|
||||||
await monitorDiscordProvider({
|
await monitorDiscordProvider({
|
||||||
config: baseConfig(),
|
config: baseConfig(),
|
||||||
runtime: baseRuntime(),
|
runtime: baseRuntime(),
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(createDiscordMessageHandlerMock).toHaveBeenCalledTimes(1);
|
const params = getFirstDiscordMessageHandlerParams<{
|
||||||
const firstCall = createDiscordMessageHandlerMock.mock.calls.at(0) as
|
workerRunTimeoutMs?: number;
|
||||||
| [{ workerRunTimeoutMs?: number }]
|
}>();
|
||||||
| undefined;
|
|
||||||
const params = firstCall?.[0];
|
|
||||||
expect(params?.workerRunTimeoutMs).toBe(300_000);
|
expect(params?.workerRunTimeoutMs).toBe(300_000);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user