import { describe, expect, it, vi } from "vitest"; vi.mock("@slack/web-api", () => { const WebClient = vi.fn(function WebClientMock( this: Record, token: string, options?: Record, ) { this.token = token; this.options = options; }); return { WebClient }; }); const slackWebApi = await import("@slack/web-api"); const { createSlackWebClient, resolveSlackWebClientOptions, SLACK_DEFAULT_RETRY_OPTIONS } = await import("./client.js"); const WebClient = slackWebApi.WebClient as unknown as ReturnType; describe("slack web client config", () => { it("applies the default retry config when none is provided", () => { const options = resolveSlackWebClientOptions(); expect(options.retryConfig).toEqual(SLACK_DEFAULT_RETRY_OPTIONS); }); it("respects explicit retry config overrides", () => { const customRetry = { retries: 0 }; const options = resolveSlackWebClientOptions({ retryConfig: customRetry }); expect(options.retryConfig).toBe(customRetry); }); it("passes merged options into WebClient", () => { createSlackWebClient("xoxb-test", { timeout: 1234 }); expect(WebClient).toHaveBeenCalledWith( "xoxb-test", expect.objectContaining({ timeout: 1234, retryConfig: SLACK_DEFAULT_RETRY_OPTIONS, }), ); }); });