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:
@@ -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" },
|
||||
},
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user