test: dedupe discord provider account config harness

This commit is contained in:
Peter Steinberger
2026-03-13 22:28:23 +00:00
parent aed626ed96
commit 809785dcd7

View File

@@ -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);
}); });