mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-08-04 14:57:42 +00:00
* perf: reduce agent chat startup latency * test: align Redis stream readiness assertions * perf: overlap remaining agent startup work * perf: persist initial agent job metadata atomically * test: add agent startup latency benchmark * fix: harden resumable agent stream lifecycle * fix: isolate replacement stream lifecycles * fix: preserve terminal stream epochs
57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
const mockLoadDefaultModels = jest.fn();
|
|
const mockLoadConfigModels = jest.fn();
|
|
|
|
jest.mock('@librechat/data-schemas', () => ({
|
|
logger: {
|
|
error: jest.fn(),
|
|
},
|
|
}));
|
|
|
|
jest.mock('~/server/services/Config', () => ({
|
|
loadDefaultModels: (...args) => mockLoadDefaultModels(...args),
|
|
loadConfigModels: (...args) => mockLoadConfigModels(...args),
|
|
}));
|
|
|
|
const { loadModels } = require('./ModelController');
|
|
|
|
function deferred() {
|
|
let resolve;
|
|
const promise = new Promise((resolvePromise) => {
|
|
resolve = resolvePromise;
|
|
});
|
|
return { promise, resolve };
|
|
}
|
|
|
|
describe('loadModels', () => {
|
|
beforeEach(() => {
|
|
jest.clearAllMocks();
|
|
});
|
|
|
|
it('loads default and configured models concurrently while preserving custom precedence', async () => {
|
|
const defaultModels = deferred();
|
|
const configuredModels = deferred();
|
|
const req = { user: { id: 'user-1' } };
|
|
mockLoadDefaultModels.mockReturnValue(defaultModels.promise);
|
|
mockLoadConfigModels.mockReturnValue(configuredModels.promise);
|
|
|
|
const resultPromise = loadModels(req);
|
|
|
|
expect(mockLoadDefaultModels).toHaveBeenCalledWith(req);
|
|
expect(mockLoadConfigModels).toHaveBeenCalledWith(req);
|
|
|
|
configuredModels.resolve({
|
|
openAI: ['configured-model'],
|
|
custom: ['custom-model'],
|
|
});
|
|
defaultModels.resolve({
|
|
openAI: ['default-model'],
|
|
anthropic: ['default-anthropic'],
|
|
});
|
|
|
|
await expect(resultPromise).resolves.toEqual({
|
|
openAI: ['configured-model'],
|
|
anthropic: ['default-anthropic'],
|
|
custom: ['custom-model'],
|
|
});
|
|
});
|
|
});
|