feat: migrate to DSH 0.1.5-rc.2 with TypeScript refactor, official slot footer and codex selector
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
import { describe, it, expect, vi } from 'vitest';
|
||||
import { apply } from '../src/index';
|
||||
|
||||
describe('Host plugin', () => {
|
||||
it('registers models dev exact proxy route', () => {
|
||||
const registerMock = vi.fn();
|
||||
const mockCtx = {
|
||||
effect: (fn: any) => fn(),
|
||||
webServer: {
|
||||
register: registerMock,
|
||||
},
|
||||
};
|
||||
|
||||
apply(mockCtx as any);
|
||||
expect(registerMock).toHaveBeenCalled();
|
||||
const callArg = registerMock.mock.calls[0][0];
|
||||
expect(callArg.path).toBe('/api/models-dev/models');
|
||||
expect(callArg.kind).toBe('exact');
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,32 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { normModelKey, findDevModel } from '../src/client/modelsDev';
|
||||
import { I18N_DICT } from '../src/client/i18n';
|
||||
|
||||
describe('modelsDev utils', () => {
|
||||
it('normalizes model keys consistently', () => {
|
||||
expect(normModelKey('openai/gpt-4o-mini-20240718')).toBe('gpt4omini');
|
||||
expect(normModelKey('claude-3-5-sonnet-20241022')).toBe('claude35sonnet');
|
||||
expect(normModelKey('deepseek/deepseek-chat')).toBe('deepseekchat');
|
||||
});
|
||||
|
||||
it('matches fuzzy dev models', () => {
|
||||
const list = [
|
||||
{ id: 'openai/gpt-4o', rawKey: 'gpt-4o', name: 'GPT-4o', modalities: { input: ['text', 'image'] }, reasoning: false },
|
||||
{ id: 'anthropic/claude-3-5-sonnet', rawKey: 'claude-3-5-sonnet', name: 'Claude 3.5 Sonnet', modalities: { input: ['text', 'image'] }, reasoning: false },
|
||||
{ id: 'deepseek/deepseek-r1', rawKey: 'deepseek-r1', name: 'DeepSeek R1', modalities: { input: ['text'] }, reasoning: true }
|
||||
];
|
||||
|
||||
expect(findDevModel('gpt-4o', list)?.id).toBe('openai/gpt-4o');
|
||||
expect(findDevModel('claude-3-5-sonnet-20241022', list)?.id).toBe('anthropic/claude-3-5-sonnet');
|
||||
expect(findDevModel('deepseek-r1', list)?.id).toBe('deepseek/deepseek-r1');
|
||||
});
|
||||
|
||||
it('provides bilingual dictionary keys', () => {
|
||||
expect(I18N_DICT.zh.modalTitle).toBeDefined();
|
||||
expect(I18N_DICT.en.modalTitle).toBeDefined();
|
||||
expect(I18N_DICT.zh.batchBtn).toBeDefined();
|
||||
expect(I18N_DICT.en.batchBtn).toBeDefined();
|
||||
expect(I18N_DICT.zh.effortReasoningTitle).toBeDefined();
|
||||
expect(I18N_DICT.en.effortReasoningTitle).toBeDefined();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user