mirror of
https://github.com/fancive/obsidian-parallel-reader.git
synced 2026-07-22 17:20:24 +00:00
Replaces the monolithic direct-modules.test.js (780 lines) with focused per-module test files sharing a common direct-test-setup.js. Each file is under 165 lines. All existing test assertions preserved. New files: direct-test-setup.js, direct-cache.test.js, direct-providers.test.js, direct-settings.test.js, direct-i18n.test.js, direct-streaming.test.js Change-Id: Ie9cceaf3b9b71e618c0d7e524a5186b5c44079c8
52 lines
3.8 KiB
JavaScript
52 lines
3.8 KiB
JavaScript
const { assert, requireBundledModule, cleanup } = require('./direct-test-setup');
|
|
|
|
(async () => {
|
|
try {
|
|
const generation = await requireBundledModule('src/generation.ts');
|
|
const providerParsers = await requireBundledModule('src/provider-parsers.ts');
|
|
|
|
// ── generation.ts ──
|
|
assert.strictEqual(generation.cancellationNoticeKey({ backend: 'api' }, { phase: 'generating' }), 'cancelRequestedApiInFlight');
|
|
assert.strictEqual(generation.cancellationNoticeKey({ backend: 'codex' }, { phase: 'generating' }), 'cancelRequested');
|
|
|
|
// ── provider-parsers.ts ──
|
|
const cardsJson = JSON.stringify({ cards: [{ title: 'T', anchor: 'A', gist: 'G', bullets: ['B'] }] });
|
|
assert.strictEqual(providerParsers.textFromOpenAiChatResponse({ choices: [{ message: { content: [{ text: cardsJson }] } }] }), cardsJson);
|
|
assert.strictEqual(providerParsers.textFromAnthropicMessagesResponse({ content: [{ type: 'text', text: cardsJson }] }), cardsJson);
|
|
assert.strictEqual(providerParsers.textFromOpenAiResponsesResponse({ output: [{ content: [{ type: 'output_text', text: cardsJson }] }] }), cardsJson);
|
|
assert.strictEqual(providerParsers.textFromGoogleGenerativeAiResponse({ candidates: [{ content: { parts: [{ text: cardsJson }] } }] }), cardsJson);
|
|
assert.deepStrictEqual(providerParsers.cardsFromAnthropicToolUse({ content: [{ type: 'tool_use', name: 'record_parallel_reader_cards', input: JSON.parse(cardsJson) }] }), [{ title: 'T', anchor: 'A', gist: 'G', bullets: ['B'] }]);
|
|
|
|
// ── Provider parser edge cases ──
|
|
assert.strictEqual(providerParsers.textFromProviderContent('hello'), 'hello');
|
|
assert.strictEqual(providerParsers.textFromProviderContent({ output_text: 'ot' }), 'ot');
|
|
assert.strictEqual(providerParsers.textFromProviderContent(['a', { text: 'b' }, { output_text: 'c' }, 42]), 'abc');
|
|
assert.strictEqual(providerParsers.textFromProviderContent(null), '');
|
|
assert.strictEqual(providerParsers.textFromProviderContent(undefined), '');
|
|
assert.strictEqual(providerParsers.textFromProviderContent({ foo: 'bar' }), '');
|
|
|
|
assert.strictEqual(providerParsers.textFromOpenAiChatResponse({}), '');
|
|
assert.strictEqual(providerParsers.textFromOpenAiChatResponse({ choices: [] }), '');
|
|
assert.strictEqual(providerParsers.textFromOpenAiChatResponse({ choices: [{ text: 'legacy' }] }), 'legacy');
|
|
|
|
assert.strictEqual(providerParsers.textFromAnthropicMessagesResponse({}), '');
|
|
assert.strictEqual(providerParsers.textFromAnthropicMessagesResponse({ content: [] }), '');
|
|
assert.strictEqual(providerParsers.textFromAnthropicMessagesResponse({ content: [{ type: 'text', text: 'a' }, { type: 'text', text: 'b' }] }), 'ab');
|
|
|
|
assert.strictEqual(providerParsers.textFromGoogleGenerativeAiResponse({}), '');
|
|
assert.strictEqual(providerParsers.textFromGoogleGenerativeAiResponse({ candidates: [] }), '');
|
|
assert.strictEqual(providerParsers.textFromGoogleGenerativeAiResponse({ candidates: [{ content: {} }] }), '');
|
|
|
|
assert.strictEqual(providerParsers.textFromOpenAiResponsesResponse({ output_text: 'direct' }), 'direct');
|
|
assert.strictEqual(providerParsers.textFromOpenAiResponsesResponse({ output: [{ content: [{ type: 'output_text', content: 'nested' }] }] }), 'nested');
|
|
assert.strictEqual(providerParsers.textFromOpenAiResponsesResponse({}), '');
|
|
|
|
assert.strictEqual(providerParsers.cardsFromAnthropicToolUse({ content: [{ type: 'text', text: 'hello' }] }), null);
|
|
assert.strictEqual(providerParsers.cardsFromAnthropicToolUse({ content: [{ type: 'tool_use', name: 'other_tool', input: {} }] }), null);
|
|
assert.strictEqual(providerParsers.cardsFromAnthropicToolUse({}), null);
|
|
|
|
console.log('direct providers tests passed');
|
|
} finally {
|
|
cleanup();
|
|
}
|
|
})().catch((e) => { console.error(e); process.exit(1); });
|