Download extensions/irc/src/send.test.ts from Darochin/openskynet: direct link, hf CLI and curl.
- Browser
- Download file 3.27 kB
-
https://huggingface.co/Darochin/openskynet/resolve/main/extensions/irc/src/send.test.ts
- Command line
-
hf download hf://Darochin/openskynet/extensions/irc/src/send.test.ts
-
curl -L -o send.test.ts https://huggingface.co/Darochin/openskynet/resolve/main/extensions/irc/src/send.test.ts
3.27 kB
| import { beforeEach, describe, expect, it, vi } from "vitest"; | |
| import type { IrcClient } from "./client.js"; | |
| import type { CoreConfig } from "./types.js"; | |
| const hoisted = vi.hoisted(() => { | |
| const loadConfig = vi.fn(); | |
| const resolveMarkdownTableMode = vi.fn(() => "preserve"); | |
| const convertMarkdownTables = vi.fn((text: string) => text); | |
| const record = vi.fn(); | |
| return { | |
| loadConfig, | |
| resolveMarkdownTableMode, | |
| convertMarkdownTables, | |
| record, | |
| resolveIrcAccount: vi.fn(() => ({ | |
| configured: true, | |
| accountId: "default", | |
| host: "irc.example.com", | |
| nick: "openclaw", | |
| port: 6697, | |
| tls: true, | |
| })), | |
| normalizeIrcMessagingTarget: vi.fn((value: string) => value.trim()), | |
| connectIrcClient: vi.fn(), | |
| buildIrcConnectOptions: vi.fn(() => ({})), | |
| }; | |
| }); | |
| vi.mock("./runtime.js", () => ({ | |
| getIrcRuntime: () => ({ | |
| config: { | |
| loadConfig: hoisted.loadConfig, | |
| }, | |
| channel: { | |
| text: { | |
| resolveMarkdownTableMode: hoisted.resolveMarkdownTableMode, | |
| convertMarkdownTables: hoisted.convertMarkdownTables, | |
| }, | |
| activity: { | |
| record: hoisted.record, | |
| }, | |
| }, | |
| }), | |
| })); | |
| vi.mock("./accounts.js", () => ({ | |
| resolveIrcAccount: hoisted.resolveIrcAccount, | |
| })); | |
| vi.mock("./normalize.js", () => ({ | |
| normalizeIrcMessagingTarget: hoisted.normalizeIrcMessagingTarget, | |
| })); | |
| vi.mock("./client.js", () => ({ | |
| connectIrcClient: hoisted.connectIrcClient, | |
| })); | |
| vi.mock("./connect-options.js", () => ({ | |
| buildIrcConnectOptions: hoisted.buildIrcConnectOptions, | |
| })); | |
| vi.mock("./protocol.js", async () => { | |
| const actual = await vi.importActual<typeof import("./protocol.js")>("./protocol.js"); | |
| return { | |
| ...actual, | |
| makeIrcMessageId: () => "irc-msg-1", | |
| }; | |
| }); | |
| import { sendMessageIrc } from "./send.js"; | |
| describe("sendMessageIrc cfg threading", () => { | |
| beforeEach(() => { | |
| vi.clearAllMocks(); | |
| }); | |
| it("uses explicitly provided cfg without loading runtime config", async () => { | |
| const providedCfg = { source: "provided" } as unknown as CoreConfig; | |
| const client = { | |
| isReady: vi.fn(() => true), | |
| sendPrivmsg: vi.fn(), | |
| } as unknown as IrcClient; | |
| const result = await sendMessageIrc("#room", "hello", { | |
| cfg: providedCfg, | |
| client, | |
| accountId: "work", | |
| }); | |
| expect(hoisted.loadConfig).not.toHaveBeenCalled(); | |
| expect(hoisted.resolveIrcAccount).toHaveBeenCalledWith({ | |
| cfg: providedCfg, | |
| accountId: "work", | |
| }); | |
| expect(client.sendPrivmsg).toHaveBeenCalledWith("#room", "hello"); | |
| expect(result).toEqual({ messageId: "irc-msg-1", target: "#room" }); | |
| }); | |
| it("falls back to runtime config when cfg is omitted", async () => { | |
| const runtimeCfg = { source: "runtime" } as unknown as CoreConfig; | |
| hoisted.loadConfig.mockReturnValueOnce(runtimeCfg); | |
| const client = { | |
| isReady: vi.fn(() => true), | |
| sendPrivmsg: vi.fn(), | |
| } as unknown as IrcClient; | |
| await sendMessageIrc("#ops", "ping", { client }); | |
| expect(hoisted.loadConfig).toHaveBeenCalledTimes(1); | |
| expect(hoisted.resolveIrcAccount).toHaveBeenCalledWith({ | |
| cfg: runtimeCfg, | |
| accountId: undefined, | |
| }); | |
| expect(client.sendPrivmsg).toHaveBeenCalledWith("#ops", "ping"); | |
| }); | |
| }); | |