fix: use valid Zen summaries for notes
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import { afterEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import { summarizeText } from './summarization.js';
|
||||
|
||||
describe('text summarization zen requests', () => {
|
||||
afterEach(() => {
|
||||
vi.unstubAllGlobals();
|
||||
});
|
||||
|
||||
it('uses responses endpoint for gpt models', async () => {
|
||||
const fetchMock = vi.fn(async () => ({
|
||||
ok: true,
|
||||
json: async () => ({
|
||||
output: [{
|
||||
type: 'message',
|
||||
content: [{ type: 'output_text', text: 'Short summary' }],
|
||||
}],
|
||||
}),
|
||||
}));
|
||||
vi.stubGlobal('fetch', fetchMock);
|
||||
|
||||
const result = await summarizeText({
|
||||
text: 'Long text '.repeat(30),
|
||||
threshold: 0,
|
||||
maxLength: 100,
|
||||
zenModel: 'gpt-5-nano',
|
||||
mode: 'notification',
|
||||
});
|
||||
|
||||
expect(fetchMock).toHaveBeenCalledWith(
|
||||
'https://opencode.ai/zen/v1/responses',
|
||||
expect.objectContaining({
|
||||
body: expect.stringContaining('"input"'),
|
||||
}),
|
||||
);
|
||||
expect(result.summary).toBe('Short summary');
|
||||
});
|
||||
|
||||
it('uses chat completions endpoint for openai-compatible zen models', async () => {
|
||||
const fetchMock = vi.fn(async () => ({
|
||||
ok: true,
|
||||
json: async () => ({
|
||||
choices: [{ message: { content: 'Chat summary' } }],
|
||||
}),
|
||||
}));
|
||||
vi.stubGlobal('fetch', fetchMock);
|
||||
|
||||
const result = await summarizeText({
|
||||
text: 'Long text '.repeat(30),
|
||||
threshold: 0,
|
||||
maxLength: 100,
|
||||
zenModel: 'big-pickle',
|
||||
mode: 'notification',
|
||||
});
|
||||
|
||||
expect(fetchMock).toHaveBeenCalledWith(
|
||||
'https://opencode.ai/zen/v1/chat/completions',
|
||||
expect.objectContaining({
|
||||
body: expect.stringContaining('"messages"'),
|
||||
}),
|
||||
);
|
||||
expect(result.summary).toBe('Chat summary');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user