LibreChat/api/server/controllers/ModelController.spec.js
Danny Avila 73699b5c25
perf: Reduce Agent Chat Startup Latency (#14423)
* 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
2026-07-25 07:58:20 -04:00

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'],
});
});
});