0a4dd19472
Open the BullMQ driver's return-value channel with a backward-compatible TResult generic so jobs can return typed results, and add an MSW-based integration harness that drives messaging sync jobs end-to-end against mocked Gmail/Microsoft Graph APIs with real DB assertions. Covers full pipeline (folder sync, list fetch, import), folder discovery and import policy, token refresh and insufficient-permissions, rate-limit throttling, sync cursor, failed-channel recovery, and stale-sync recovery across the Gmail and Microsoft drivers.
24 lines
831 B
TypeScript
24 lines
831 B
TypeScript
import { type MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
|
|
import { type MessageQueueJobData } from 'src/engine/core-modules/message-queue/interfaces/message-queue-job.interface';
|
|
import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
|
|
import { getQueueToken } from 'src/engine/core-modules/message-queue/utils/get-queue-token.util';
|
|
|
|
export const enqueueJobAndAwait = async <
|
|
TData extends MessageQueueJobData,
|
|
TResult,
|
|
>(
|
|
queue: MessageQueue,
|
|
job: { name: string },
|
|
data: TData,
|
|
): Promise<TResult> => {
|
|
const messageQueueService = global.app.get<MessageQueueService>(
|
|
getQueueToken(queue),
|
|
{ strict: false },
|
|
);
|
|
|
|
return (await messageQueueService.add<TData, TResult>(
|
|
job.name,
|
|
data,
|
|
)) as TResult;
|
|
};
|