refactor(cli): extract Query CLI Adapter Module seam (#3074)
* refactor(cli): extract query adapter seam from cli entrypoint * test: update ws forwarding guard for query-cli-adapter seam * fix(query): close remaining CodeRabbit findings on cli adapter * test: address remaining CodeRabbit nitpicks on ws forwarding coverage
This commit is contained in:
58
sdk/src/query/query-cli-adapter.test.ts
Normal file
58
sdk/src/query/query-cli-adapter.test.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
const dispatchSpy = vi.hoisted(() => vi.fn());
|
||||
const runQueryDispatchSpy = vi.hoisted(() => vi.fn());
|
||||
|
||||
vi.mock('./helpers.js', () => ({
|
||||
findProjectRoot: (projectDir: string) => projectDir,
|
||||
}));
|
||||
|
||||
vi.mock('./index.js', () => ({
|
||||
createRegistry: () => ({ dispatch: dispatchSpy }),
|
||||
}));
|
||||
|
||||
vi.mock('./query-dispatch.js', () => ({
|
||||
runQueryDispatch: (...args: unknown[]) => runQueryDispatchSpy(...args),
|
||||
}));
|
||||
|
||||
import { runQueryCliCommand } from './query-cli-adapter.js';
|
||||
|
||||
describe('query-cli-adapter', () => {
|
||||
beforeEach(() => {
|
||||
dispatchSpy.mockReset();
|
||||
runQueryDispatchSpy.mockReset();
|
||||
});
|
||||
|
||||
it('returns validation failure for missing query command', async () => {
|
||||
runQueryDispatchSpy.mockResolvedValueOnce({
|
||||
ok: false,
|
||||
exit_code: 10,
|
||||
stdout: '',
|
||||
stderr: [],
|
||||
error: { kind: 'validation_error', message: 'query requires a command', details: {} },
|
||||
});
|
||||
|
||||
const out = await runQueryCliCommand({
|
||||
projectDir: process.cwd(),
|
||||
queryArgv: [],
|
||||
});
|
||||
|
||||
expect(out.exitCode).toBe(10);
|
||||
expect(out.stderrLines.join('\n')).toContain('requires a command');
|
||||
});
|
||||
|
||||
it('forwards ws to registry.dispatch via dispatchNative', async () => {
|
||||
runQueryDispatchSpy.mockImplementationOnce(async (input: any) => {
|
||||
await input.dispatchNative('state', ['show']);
|
||||
return { ok: true, exit_code: 0, stdout: '', stderr: [] };
|
||||
});
|
||||
|
||||
await runQueryCliCommand({
|
||||
projectDir: process.cwd(),
|
||||
ws: 'alpha',
|
||||
queryArgv: ['state', 'show'],
|
||||
});
|
||||
|
||||
expect(dispatchSpy).toHaveBeenCalledWith('state', ['show'], process.cwd(), 'alpha');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user