Skip to content

Commit 6ae137a

Browse files
committed
test(core): isolate session recap side query mock
1 parent c2a3602 commit 6ae137a

1 file changed

Lines changed: 22 additions & 30 deletions

File tree

packages/core/src/services/sessionRecap.test.ts

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,65 +5,57 @@
55
*/
66

77
import type { Content } from '@google/genai';
8-
import { mkdtemp, rm, writeFile } from 'node:fs/promises';
9-
import { tmpdir } from 'node:os';
10-
import { join } from 'node:path';
11-
import { afterEach, describe, expect, it, vi } from 'vitest';
8+
import { beforeEach, describe, expect, it, vi } from 'vitest';
129
import type { Config } from '../config/config.js';
13-
import { generateSessionRecap } from './sessionRecap.js';
1410

15-
describe('generateSessionRecap', () => {
16-
let tempDir: string | undefined;
11+
const runSideQueryMock = vi.hoisted(() => vi.fn());
12+
13+
vi.mock('../utils/sideQuery.js', () => ({
14+
runSideQuery: runSideQueryMock,
15+
}));
1716

18-
afterEach(async () => {
19-
if (tempDir) {
20-
await rm(tempDir, { recursive: true, force: true });
21-
tempDir = undefined;
22-
}
17+
describe('generateSessionRecap', () => {
18+
beforeEach(() => {
19+
vi.resetModules();
20+
runSideQueryMock.mockReset();
2321
});
2422

2523
it('opts into the configured output language preference for recap prompts', async () => {
26-
tempDir = await mkdtemp(join(tmpdir(), 'qwen-session-recap-'));
27-
const outputLanguagePath = join(tempDir, 'output-language.md');
28-
await writeFile(outputLanguagePath, 'Always answer in Chinese.\n');
29-
3024
const history: Content[] = [
3125
{ role: 'user', parts: [{ text: 'fix the failing auth test' }] },
3226
{ role: 'model', parts: [{ text: 'I found the mocked token issue.' }] },
3327
];
34-
const generateText = vi.fn().mockResolvedValue({
28+
runSideQueryMock.mockResolvedValue({
3529
text: '<recap>Auth test fix is in progress.</recap>',
3630
usage: undefined,
3731
});
3832
const config = {
3933
getGeminiClient: vi.fn(() => ({
4034
getChat: () => ({ getHistory: () => history }),
4135
})),
42-
getBaseLlmClient: vi.fn(() => ({ generateText })),
43-
getModel: vi.fn(() => 'qwen3-coder-plus'),
44-
getOutputLanguageFilePath: vi.fn(() => outputLanguagePath),
4536
} as unknown as Config;
37+
const abortSignal = new AbortController().signal;
38+
const { generateSessionRecap } = await import('./sessionRecap.js');
4639

47-
const result = await generateSessionRecap(
48-
config,
49-
new AbortController().signal,
50-
);
40+
const result = await generateSessionRecap(config, abortSignal);
5141

5242
expect(result).toBe('Auth test fix is in progress.');
53-
expect(generateText).toHaveBeenCalledWith(
43+
expect(runSideQueryMock).toHaveBeenCalledWith(
44+
config,
5445
expect.objectContaining({
46+
purpose: 'session-recap',
47+
respectOutputLanguagePreference: true,
5548
systemInstruction: expect.stringContaining(
5649
'You generate session recaps',
5750
),
58-
promptId: 'side-query:session-recap',
5951
maxAttempts: 1,
52+
abortSignal,
6053
}),
6154
);
62-
expect(generateText).toHaveBeenCalledWith(
55+
expect(runSideQueryMock).toHaveBeenCalledWith(
56+
config,
6357
expect.objectContaining({
64-
systemInstruction: expect.stringContaining(
65-
'User output language preference from output-language.md:\nAlways answer in Chinese.',
66-
),
58+
contents: expect.arrayContaining(history),
6759
}),
6860
);
6961
});

0 commit comments

Comments
 (0)