mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-20 22:40:58 +00:00
* refactor: move Telegram channel implementation to extensions/telegram/src/ Move all Telegram channel code (123 files + 10 bot/ files + 8 channel plugin files) from src/telegram/ and src/channels/plugins/*/telegram.ts to extensions/telegram/src/. Leave thin re-export shims at original locations so cross-cutting src/ imports continue to resolve. - Fix all relative import paths in moved files (../X/ -> ../../../src/X/) - Fix vi.mock paths in 60 test files - Fix inline typeof import() expressions - Update tsconfig.plugin-sdk.dts.json rootDir to "." for cross-directory DTS - Update write-plugin-sdk-entry-dts.ts for new rootDir structure - Move channel plugin files with correct path remapping * fix: support keyed telegram send deps * fix: sync telegram extension copies with latest main * fix: correct import paths and remove misplaced files in telegram extension * fix: sync outbound-adapter with main (add sendTelegramPayloadMessages) and fix delivery.test import path
88 lines
3.3 KiB
TypeScript
88 lines
3.3 KiB
TypeScript
import { vi } from "vitest";
|
|
|
|
type DraftPreviewMode = "message" | "draft";
|
|
|
|
export type TestDraftStream = {
|
|
update: ReturnType<typeof vi.fn<(text: string) => void>>;
|
|
flush: ReturnType<typeof vi.fn<() => Promise<void>>>;
|
|
messageId: ReturnType<typeof vi.fn<() => number | undefined>>;
|
|
previewMode: ReturnType<typeof vi.fn<() => DraftPreviewMode>>;
|
|
previewRevision: ReturnType<typeof vi.fn<() => number>>;
|
|
lastDeliveredText: ReturnType<typeof vi.fn<() => string>>;
|
|
clear: ReturnType<typeof vi.fn<() => Promise<void>>>;
|
|
stop: ReturnType<typeof vi.fn<() => Promise<void>>>;
|
|
materialize: ReturnType<typeof vi.fn<() => Promise<number | undefined>>>;
|
|
forceNewMessage: ReturnType<typeof vi.fn<() => void>>;
|
|
sendMayHaveLanded: ReturnType<typeof vi.fn<() => boolean>>;
|
|
setMessageId: (value: number | undefined) => void;
|
|
};
|
|
|
|
export function createTestDraftStream(params?: {
|
|
messageId?: number;
|
|
previewMode?: DraftPreviewMode;
|
|
onUpdate?: (text: string) => void;
|
|
onStop?: () => void | Promise<void>;
|
|
clearMessageIdOnForceNew?: boolean;
|
|
}): TestDraftStream {
|
|
let messageId = params?.messageId;
|
|
let previewRevision = 0;
|
|
let lastDeliveredText = "";
|
|
return {
|
|
update: vi.fn().mockImplementation((text: string) => {
|
|
previewRevision += 1;
|
|
lastDeliveredText = text.trimEnd();
|
|
params?.onUpdate?.(text);
|
|
}),
|
|
flush: vi.fn().mockResolvedValue(undefined),
|
|
messageId: vi.fn().mockImplementation(() => messageId),
|
|
previewMode: vi.fn().mockReturnValue(params?.previewMode ?? "message"),
|
|
previewRevision: vi.fn().mockImplementation(() => previewRevision),
|
|
lastDeliveredText: vi.fn().mockImplementation(() => lastDeliveredText),
|
|
clear: vi.fn().mockResolvedValue(undefined),
|
|
stop: vi.fn().mockImplementation(async () => {
|
|
await params?.onStop?.();
|
|
}),
|
|
materialize: vi.fn().mockImplementation(async () => messageId),
|
|
forceNewMessage: vi.fn().mockImplementation(() => {
|
|
if (params?.clearMessageIdOnForceNew) {
|
|
messageId = undefined;
|
|
}
|
|
}),
|
|
sendMayHaveLanded: vi.fn().mockReturnValue(false),
|
|
setMessageId: (value: number | undefined) => {
|
|
messageId = value;
|
|
},
|
|
};
|
|
}
|
|
|
|
export function createSequencedTestDraftStream(startMessageId = 1001): TestDraftStream {
|
|
let activeMessageId: number | undefined;
|
|
let nextMessageId = startMessageId;
|
|
let previewRevision = 0;
|
|
let lastDeliveredText = "";
|
|
return {
|
|
update: vi.fn().mockImplementation((text: string) => {
|
|
if (activeMessageId == null) {
|
|
activeMessageId = nextMessageId++;
|
|
}
|
|
previewRevision += 1;
|
|
lastDeliveredText = text.trimEnd();
|
|
}),
|
|
flush: vi.fn().mockResolvedValue(undefined),
|
|
messageId: vi.fn().mockImplementation(() => activeMessageId),
|
|
previewMode: vi.fn().mockReturnValue("message"),
|
|
previewRevision: vi.fn().mockImplementation(() => previewRevision),
|
|
lastDeliveredText: vi.fn().mockImplementation(() => lastDeliveredText),
|
|
clear: vi.fn().mockResolvedValue(undefined),
|
|
stop: vi.fn().mockResolvedValue(undefined),
|
|
materialize: vi.fn().mockImplementation(async () => activeMessageId),
|
|
forceNewMessage: vi.fn().mockImplementation(() => {
|
|
activeMessageId = undefined;
|
|
}),
|
|
sendMayHaveLanded: vi.fn().mockReturnValue(false),
|
|
setMessageId: (value: number | undefined) => {
|
|
activeMessageId = value;
|
|
},
|
|
};
|
|
}
|