mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-11-12 17:56:50 +00:00
PromptService gains importSourceGroup, which finds or creates a source pointer group, grants the PUBLIC viewer role and rolls the group back if the grant fails. The Langfuse catalog sync calls it instead of four storage callbacks and two Mongo error predicates, and the prompt service is composed once in api/server/services/Prompts.js and passed to the prompt routes, linked instructions, instructions prompt access and the Langfuse sync runner. Co-authored-by: Rebase Probe <probe@example.com>
35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
const mockLock = { acquire: jest.fn(), extend: jest.fn(), release: jest.fn() };
|
|
const mockSyncPromptCatalog = jest.fn();
|
|
const mockCreateLangfusePromptSyncRunner = jest.fn(() => mockSyncPromptCatalog);
|
|
const mockLogger = { warn: jest.fn(), error: jest.fn() };
|
|
const mockPromptService = { importSourceGroup: jest.fn() };
|
|
|
|
jest.mock('@librechat/api', () => ({
|
|
createLangfusePromptSyncRunner: mockCreateLangfusePromptSyncRunner,
|
|
}));
|
|
|
|
jest.mock('@librechat/data-schemas', () => ({
|
|
logger: mockLogger,
|
|
}));
|
|
|
|
jest.mock('~/cache', () => ({
|
|
distributedLock: mockLock,
|
|
}));
|
|
|
|
jest.mock('~/server/services/Prompts', () => ({
|
|
promptService: mockPromptService,
|
|
}));
|
|
|
|
describe('LangfusePromptSync', () => {
|
|
it('composes the sync runner once with the shared lock and the shared prompt service', () => {
|
|
const { syncLangfusePromptCatalog } = require('./LangfusePromptSync');
|
|
|
|
expect(mockCreateLangfusePromptSyncRunner).toHaveBeenCalledTimes(1);
|
|
expect(mockCreateLangfusePromptSyncRunner).toHaveBeenCalledWith({
|
|
lock: mockLock,
|
|
promptService: mockPromptService,
|
|
logger: mockLogger,
|
|
});
|
|
expect(syncLangfusePromptCatalog).toBe(mockSyncPromptCatalog);
|
|
});
|
|
});
|