test: remove duplicated scenario scaffolding across runtime tests

This commit is contained in:
Peter Steinberger
2026-02-18 03:38:13 +00:00
parent e57628165a
commit 262472ba20
4 changed files with 90 additions and 153 deletions

View File

@@ -34,6 +34,13 @@ type Registered = {
methods: Map<string, unknown>;
tools: unknown[];
};
type RegisterVoiceCall = (api: Record<string, unknown>) => void | Promise<void>;
type RegisterCliContext = {
program: Command;
config: Record<string, unknown>;
workspaceDir?: string;
logger: typeof noopLogger;
};
function setup(config: Record<string, unknown>): Registered {
const methods = new Map<string, unknown>();
@@ -59,6 +66,34 @@ function setup(config: Record<string, unknown>): Registered {
return { methods, tools };
}
async function registerVoiceCallCli(program: Command) {
const { register } = plugin as unknown as {
register: RegisterVoiceCall;
};
await register({
id: "voice-call",
name: "Voice Call",
description: "test",
version: "0",
source: "test",
config: {},
pluginConfig: { provider: "mock" },
runtime: { tts: { textToSpeechTelephony: vi.fn() } },
logger: noopLogger,
registerGatewayMethod: () => {},
registerTool: () => {},
registerCli: (fn: (ctx: RegisterCliContext) => void) =>
fn({
program,
config: {},
workspaceDir: undefined,
logger: noopLogger,
}),
registerService: () => {},
resolvePath: (p: string) => p,
});
}
describe("voice-call plugin", () => {
beforeEach(() => {
runtimeStub = {
@@ -145,9 +180,6 @@ describe("voice-call plugin", () => {
});
it("CLI latency summarizes turn metrics from JSONL", async () => {
const { register } = plugin as unknown as {
register: (api: Record<string, unknown>) => void | Promise<void>;
};
const program = new Command();
const tmpFile = path.join(os.tmpdir(), `voicecall-latency-${Date.now()}.jsonl`);
fs.writeFileSync(
@@ -162,35 +194,7 @@ describe("voice-call plugin", () => {
const logSpy = vi.spyOn(console, "log").mockImplementation(() => {});
try {
await register({
id: "voice-call",
name: "Voice Call",
description: "test",
version: "0",
source: "test",
config: {},
pluginConfig: { provider: "mock" },
runtime: { tts: { textToSpeechTelephony: vi.fn() } },
logger: noopLogger,
registerGatewayMethod: () => {},
registerTool: () => {},
registerCli: (
fn: (ctx: {
program: Command;
config: Record<string, unknown>;
workspaceDir?: string;
logger: typeof noopLogger;
}) => void,
) =>
fn({
program,
config: {},
workspaceDir: undefined,
logger: noopLogger,
}),
registerService: () => {},
resolvePath: (p: string) => p,
});
await registerVoiceCallCli(program);
await program.parseAsync(["voicecall", "latency", "--file", tmpFile, "--last", "10"], {
from: "user",
@@ -208,40 +212,9 @@ describe("voice-call plugin", () => {
});
it("CLI start prints JSON", async () => {
const { register } = plugin as unknown as {
register: (api: Record<string, unknown>) => void | Promise<void>;
};
const program = new Command();
const logSpy = vi.spyOn(console, "log").mockImplementation(() => {});
await register({
id: "voice-call",
name: "Voice Call",
description: "test",
version: "0",
source: "test",
config: {},
pluginConfig: { provider: "mock" },
runtime: { tts: { textToSpeechTelephony: vi.fn() } },
logger: noopLogger,
registerGatewayMethod: () => {},
registerTool: () => {},
registerCli: (
fn: (ctx: {
program: Command;
config: Record<string, unknown>;
workspaceDir?: string;
logger: typeof noopLogger;
}) => void,
) =>
fn({
program,
config: {},
workspaceDir: undefined,
logger: noopLogger,
}),
registerService: () => {},
resolvePath: (p: string) => p,
});
await registerVoiceCallCli(program);
await program.parseAsync(["voicecall", "start", "--to", "+1", "--message", "Hello"], {
from: "user",