refactor: split channel target test helpers

This commit is contained in:
Peter Steinberger
2026-04-28 02:03:06 +01:00
parent 6c859d8c82
commit dc4512ad0c
19 changed files with 110 additions and 68 deletions

View File

@@ -202,4 +202,21 @@ describe("non-extension test boundaries", () => {
expect(offenders).toEqual([]);
});
it("keeps extension tests off legacy broad testing barrels and repo helper bridges", () => {
const bannedPatterns = [
/["']openclaw\/plugin-sdk\/testing["']/u,
/["']openclaw\/plugin-sdk\/test-utils["']/u,
/["'](?:\.\.\/)+(?:test\/helpers\/channels\/)[^"']+["']/u,
/["'](?:\.\.\/)+(?:test\/helpers\/plugins\/)[^"']+["']/u,
];
const files = walkCode(path.join(repoRoot, "extensions"));
const offenders = files.filter((file) => {
const source = fs.readFileSync(path.join(repoRoot, file), "utf8");
return bannedPatterns.some((pattern) => pattern.test(source));
});
expect(offenders).toEqual([]);
});
});

View File

@@ -1,78 +0,0 @@
type ConversationBindingHelpers = {
requestConversationBinding: (...args: unknown[]) => unknown;
detachConversationBinding: (...args: unknown[]) => unknown;
getCurrentConversationBinding: (...args: unknown[]) => unknown;
};
type InteractiveHandlerRegistration<
TChannel extends string,
TContext,
> = ConversationBindingHelpers & {
channel: TChannel;
namespace: string;
handler: (ctx: TContext) => unknown;
};
type BaseInteractiveContext<TChannel extends string> = ConversationBindingHelpers & {
channel: TChannel;
accountId: string;
conversationId: string;
parentConversationId?: string;
senderId: string;
senderUsername?: string;
auth?: unknown;
};
export type TelegramInteractiveHandlerContext = BaseInteractiveContext<"telegram"> & {
callbackId: string;
senderUsername?: string;
threadId?: number;
isGroup?: boolean;
isForum?: boolean;
callback: {
data: string;
namespace: string;
payload: string;
messageId: number;
chatId: string;
messageText?: string;
};
respond: Record<string, (...args: unknown[]) => unknown>;
};
export type DiscordInteractiveHandlerContext = BaseInteractiveContext<"discord"> & {
interactionId: string;
guildId?: string;
interaction: {
data: string;
namespace: string;
payload: string;
[key: string]: unknown;
};
respond: Record<string, (...args: unknown[]) => unknown>;
};
export type SlackInteractiveHandlerContext = BaseInteractiveContext<"slack"> & {
interactionId: string;
threadId?: string;
interaction: {
data: string;
namespace: string;
payload: string;
[key: string]: unknown;
};
respond: Record<string, (...args: unknown[]) => unknown>;
};
export type TelegramInteractiveHandlerRegistration = InteractiveHandlerRegistration<
"telegram",
TelegramInteractiveHandlerContext
>;
export type DiscordInteractiveHandlerRegistration = InteractiveHandlerRegistration<
"discord",
DiscordInteractiveHandlerContext
>;
export type SlackInteractiveHandlerRegistration = InteractiveHandlerRegistration<
"slack",
SlackInteractiveHandlerContext
>;