import { queueFinalReceiptDeliveries } from './downstream-receipt-targets'; describe('queueFinalReceiptDeliveries', () => { it('queues one HTTP event and one CMPP receipt for each registered client fragment', async () => { const prisma = { cmppInboundLongMessage: { findFirst: jest.fn().mockResolvedValue({ messageId: 'MSG-GROUP', segmentTotal: 3, segments: [ { segmentIndex: 1, sequenceId: '101', registeredDelivery: true }, { segmentIndex: 2, sequenceId: '102', registeredDelivery: false }, { segmentIndex: 3, sequenceId: '103', registeredDelivery: true }, ], }), }, }; const queue = jest.fn().mockResolvedValue({ id: 'queued' }); await queueFinalReceiptDeliveries(prisma as never, queue, { message: { id: 'record-1', tenantId: 'tenant-1', applicationId: 'app-1', messageId: 'MSG-1', phoneNumber: '13800000001', cmppSubmitGroupMessageId: 'MSG-GROUP', }, payload: { receiptStatus: 'delivered', rawStatus: 'DELIVRD' }, segmentPayloads: { 1: { receiptStatus: 'delivered', rawStatus: 'DELIVRD' }, 3: { receiptStatus: 'undelivered', rawStatus: 'REJECTD' }, }, }); expect(queue).toHaveBeenCalledTimes(3); expect(queue).toHaveBeenNthCalledWith(1, expect.objectContaining({ queueHttpWebhook: true, queueCmppDelivery: false, })); expect(queue).toHaveBeenNthCalledWith(2, expect.objectContaining({ receiptDedupeKey: 'receipt:record-1:segment:1', queueHttpWebhook: false, payload: expect.objectContaining({ submitSequenceId: 101, clientSegmentIndex: 1 }), })); expect(queue).toHaveBeenNthCalledWith(3, expect.objectContaining({ receiptDedupeKey: 'receipt:record-1:segment:3', payload: expect.objectContaining({ submitSequenceId: 103, clientSegmentIndex: 3, receiptStatus: 'undelivered', rawStatus: 'REJECTD' }), })); }); it('queues only the message-level HTTP event when the submission did not originate from CMPP', async () => { const prisma = { cmppInboundLongMessage: { findFirst: jest.fn() } }; const queue = jest.fn().mockResolvedValue({ id: 'queued' }); await queueFinalReceiptDeliveries(prisma as never, queue, { message: { id: 'record-http', tenantId: 'tenant-1', applicationId: 'app-1', messageId: 'MSG-HTTP', phoneNumber: '13800000001', }, payload: { receiptStatus: 'undelivered', rawStatus: 'EXPIRED' }, }); expect(queue).toHaveBeenCalledTimes(1); expect(queue).toHaveBeenCalledWith(expect.objectContaining({ queueHttpWebhook: true, queueCmppDelivery: false, })); }); });