import { describe, expect, it } from 'vitest'; import { buildWorkflowPayload } from '../../workflowEventPublishHelpers'; import { recurringBillingRunCompletedEventPayloadSchema, recurringBillingRunFailedEventPayloadSchema, recurringBillingRunStartedEventPayloadSchema, } from '../../../runtime/schemas/billingEventSchemas'; import { buildRecurringBillingRunCompletedPayload, buildRecurringBillingRunFailedPayload, buildRecurringBillingRunStartedPayload, } from '../recurringBillingRunEventBuilders'; describe('recurringBillingRunEventBuilders', () => { const tenantId = '7e8a6f60-7a47-4f20-b2ac-5b77a3b5c9fd'; const actorUserId = 'a836a8b5-3df5-47b1-b49b-9a78f2b1a8a0'; const runId = '14f1fbf4-17d6-4bdc-8d4b-0b2a2ff8f26a'; const occurredAt = '2026-01-23T12:00:00.000Z'; const ctx = { tenantId, occurredAt, actor: { actorType: 'USER' as const, actorUserId }, }; it('builds RECURRING_BILLING_RUN_STARTED payloads compatible with schema', () => { const payload = buildWorkflowPayload( buildRecurringBillingRunStartedPayload({ runId, scheduleId: '3a109f2c-16f1-4caa-bd2f-1295aeae2f78', startedAt: occurredAt, initiatedByUserId: actorUserId, windowIdentity: 'mixed_execution_windows', executionWindowKinds: ['contract_cadence_window', 'client_cadence_window'], }), ctx ); expect(recurringBillingRunStartedEventPayloadSchema.safeParse(payload).success).toBe(true); }); it('builds RECURRING_BILLING_RUN_COMPLETED payloads compatible with schema', () => { const payload = buildWorkflowPayload( buildRecurringBillingRunCompletedPayload({ runId, completedAt: occurredAt, invoicesCreated: 12, failedCount: 3, warnings: ['Some invoices were skipped due to validation errors.'], windowIdentity: 'client_cadence_window', executionWindowKinds: ['client_cadence_window'], }), ctx ); expect(recurringBillingRunCompletedEventPayloadSchema.safeParse(payload).success).toBe(true); }); it('builds RECURRING_BILLING_RUN_FAILED payloads compatible with schema', () => { const payload = buildWorkflowPayload( buildRecurringBillingRunFailedPayload({ runId, failedAt: occurredAt, errorCode: 'BILLING_RUN_FAILED', errorMessage: 'Unexpected failure while generating invoices', retryable: true, executionWindowKinds: ['contract_cadence_window'], }), ctx ); expect(recurringBillingRunFailedEventPayloadSchema.safeParse(payload).success).toBe(true); }); });