diff --git a/.changeset/dirty-meals-agree.md b/.changeset/dirty-meals-agree.md new file mode 100644 index 0000000..cae9fa6 --- /dev/null +++ b/.changeset/dirty-meals-agree.md @@ -0,0 +1,5 @@ +--- +"@fizzbuds/ddd-toolkit": patch +--- + +fix(core): wrong outbox scheduleEvents behaviour with 0 events diff --git a/packages/ddd-toolkit/src/outbox/mongo-outbox.spec.ts b/packages/ddd-toolkit/src/outbox/mongo-outbox.spec.ts index 14c464e..4dba5fa 100644 --- a/packages/ddd-toolkit/src/outbox/mongo-outbox.spec.ts +++ b/packages/ddd-toolkit/src/outbox/mongo-outbox.spec.ts @@ -144,4 +144,11 @@ describe('Mongo outbox', () => { }); }); }); + + describe('When scheduleEvents with 0 events', () => { + it('should not throw', async () => { + const session = mongoClient.startSession(); + await outbox.scheduleEvents([], session); + }); + }); }); diff --git a/packages/ddd-toolkit/src/outbox/mongo-outbox.ts b/packages/ddd-toolkit/src/outbox/mongo-outbox.ts index 2f3a99f..40ba491 100644 --- a/packages/ddd-toolkit/src/outbox/mongo-outbox.ts +++ b/packages/ddd-toolkit/src/outbox/mongo-outbox.ts @@ -42,6 +42,7 @@ export class MongoOutbox implements IOutbox, IInit, ITerminate { } public async scheduleEvents(events: IEvent[], clientSession: ClientSession): Promise { + if (!events.length) return []; const { insertedIds } = await this.outboxCollection.insertMany( events.map((event) => ({ event,