feat: restructure events payload (#8143)

* refactor: restructure events payload

Breaking change: This PR changes the event payload accepted by the event
listeners

* refactor: fix failing tests and implement feedback

* add integration tests

* fix timeout

---------

Co-authored-by: Adrien de Peretti <adrien.deperetti@gmail.com>
This commit is contained in:
Harminder Virk
2024-07-16 21:39:16 +05:30
committed by GitHub
parent 5813216c88
commit f579f0b3be
26 changed files with 194 additions and 111 deletions

View File

@@ -101,7 +101,7 @@ describe("RedisEventBusService", () => {
it("should add job to queue with default options", async () => {
await eventBus.emit([
{
eventName: "eventName",
name: "eventName",
data: {
hi: "1234",
},
@@ -112,7 +112,7 @@ describe("RedisEventBusService", () => {
expect(queue.addBulk).toHaveBeenCalledWith([
{
name: "eventName",
data: { eventName: "eventName", data: { hi: "1234" } },
data: { hi: "1234" },
opts: {
attempts: 1,
removeOnComplete: true,
@@ -122,16 +122,17 @@ describe("RedisEventBusService", () => {
})
it("should add job to queue with custom options passed directly upon emitting", async () => {
await eventBus.emit(
[{ eventName: "eventName", data: { hi: "1234" } }],
{ attempts: 3, backoff: 5000, delay: 1000 }
)
await eventBus.emit([{ name: "eventName", data: { hi: "1234" } }], {
attempts: 3,
backoff: 5000,
delay: 1000,
})
expect(queue.addBulk).toHaveBeenCalledTimes(1)
expect(queue.addBulk).toHaveBeenCalledWith([
{
name: "eventName",
data: { eventName: "eventName", data: { hi: "1234" } },
data: { hi: "1234" },
opts: {
attempts: 3,
backoff: 5000,
@@ -164,7 +165,7 @@ describe("RedisEventBusService", () => {
await eventBus.emit(
[
{
eventName: "eventName",
name: "eventName",
data: { hi: "1234" },
},
],
@@ -175,7 +176,7 @@ describe("RedisEventBusService", () => {
expect(queue.addBulk).toHaveBeenCalledWith([
{
name: "eventName",
data: { eventName: "eventName", data: { hi: "1234" } },
data: { hi: "1234" },
opts: {
attempts: 3,
backoff: 5000,
@@ -208,7 +209,7 @@ describe("RedisEventBusService", () => {
await eventBus.emit(
{
eventName: "eventName",
name: "eventName",
data: { hi: "1234" },
},
{ delay: 1000 }
@@ -218,7 +219,7 @@ describe("RedisEventBusService", () => {
expect(queue.addBulk).toHaveBeenCalledWith([
{
name: "eventName",
data: { eventName: "eventName", data: { hi: "1234" } },
data: { hi: "1234" },
opts: {
attempts: 1,
removeOnComplete: 5,
@@ -231,7 +232,7 @@ describe("RedisEventBusService", () => {
it("should successfully group events", async () => {
const options = { delay: 1000 }
const event = {
eventName: "eventName",
name: "eventName",
data: { hi: "1234" },
metadata: { eventGroupId: "test-group-1" },
}
@@ -252,21 +253,21 @@ describe("RedisEventBusService", () => {
const options = { delay: 1000 }
const events = [
{
eventName: "grouped-event-1",
name: "grouped-event-1",
data: { hi: "1234" },
metadata: { eventGroupId: "test-group-1" },
},
{
eventName: "ungrouped-event-2",
name: "ungrouped-event-2",
data: { hi: "1234" },
},
{
eventName: "grouped-event-2",
name: "grouped-event-2",
data: { hi: "1234" },
metadata: { eventGroupId: "test-group-2" },
},
{
eventName: "grouped-event-3",
name: "grouped-event-3",
data: { hi: "1235" },
metadata: { eventGroupId: "test-group-2" },
},

View File

@@ -1,5 +1,5 @@
import { InternalModuleDeclaration } from "@medusajs/modules-sdk"
import { Logger, Message, MessageBody } from "@medusajs/types"
import { Logger, Message, Event } from "@medusajs/types"
import {
AbstractEventBusModuleService,
isPresent,
@@ -14,9 +14,7 @@ type InjectedDependencies = {
eventBusRedisConnection: Redis
}
type IORedisEventType<T = unknown> = {
name: string
data: MessageBody<T>
type IORedisEventType<T = unknown> = Event<T> & {
opts: BulkJobOptions
}
@@ -98,8 +96,7 @@ export default class RedisEventBusService extends AbstractEventBusModuleService
const { options, ...eventBody } = eventData
return {
name: eventData.eventName,
data: eventBody,
...eventBody,
opts: {
// options for event group
...opts,