mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-21 12:11:28 -07:00
feat(ai): split shared provider config from Anki runtime
This commit is contained in:
64
src/anki-integration/ai.test.ts
Normal file
64
src/anki-integration/ai.test.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
|
||||
import { resolveSentenceBackText } from './ai';
|
||||
|
||||
test('resolveSentenceBackText returns secondary subtitle when ai is disabled', async () => {
|
||||
const result = await resolveSentenceBackText(
|
||||
{
|
||||
sentence: '日本語',
|
||||
secondarySubText: 'existing translation',
|
||||
aiEnabled: false,
|
||||
aiConfig: {},
|
||||
},
|
||||
{
|
||||
logWarning: () => undefined,
|
||||
},
|
||||
);
|
||||
|
||||
assert.equal(result, 'existing translation');
|
||||
});
|
||||
|
||||
test('resolveSentenceBackText uses shared ai config when enabled', async () => {
|
||||
const result = await resolveSentenceBackText(
|
||||
{
|
||||
sentence: '日本語',
|
||||
secondarySubText: '',
|
||||
aiEnabled: true,
|
||||
aiConfig: {
|
||||
enabled: true,
|
||||
apiKey: 'abc',
|
||||
model: 'openai/gpt-4o-mini',
|
||||
},
|
||||
},
|
||||
{
|
||||
logWarning: () => undefined,
|
||||
translateSentence: async (request) => {
|
||||
assert.equal(request.apiKey, 'abc');
|
||||
assert.equal(request.model, 'openai/gpt-4o-mini');
|
||||
return 'translated';
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
assert.equal(result, 'translated');
|
||||
});
|
||||
|
||||
test('resolveSentenceBackText falls back to sentence when ai translation fails with no secondary subtitle', async () => {
|
||||
const result = await resolveSentenceBackText(
|
||||
{
|
||||
sentence: '日本語',
|
||||
aiEnabled: true,
|
||||
aiConfig: {
|
||||
enabled: true,
|
||||
apiKey: 'abc',
|
||||
},
|
||||
},
|
||||
{
|
||||
logWarning: () => undefined,
|
||||
translateSentence: async () => null,
|
||||
},
|
||||
);
|
||||
|
||||
assert.equal(result, '日本語');
|
||||
});
|
||||
Reference in New Issue
Block a user