diff --git a/javascript_client/src/subscriptions/__tests__/createAblyHandlerTest.ts b/javascript_client/src/subscriptions/__tests__/createAblyHandlerTest.ts index 659085968c..23945c52c3 100644 --- a/javascript_client/src/subscriptions/__tests__/createAblyHandlerTest.ts +++ b/javascript_client/src/subscriptions/__tests__/createAblyHandlerTest.ts @@ -185,6 +185,41 @@ describe("createAblyHandler", () => { expect(nextInvokedWith).toBeUndefined() }) + it("doesn't dispatch anything for an empty data object", async () => { + let errorInvokedWith = undefined + let nextInvokedWith = undefined + + const producer = createAblyHandler({ + fetchOperation: () => + new Promise(resolve => + resolve({ + headers: new Map([["X-Subscription-ID", "foo"]]), + body: { data: {} } + }) + ), + ably: createDummyConsumer() + }) + + producer( + dummyOperation, + {}, + {}, + { + onError: (errors: any) => { + errorInvokedWith = errors + }, + onNext: (response: any) => { + nextInvokedWith = response + }, + onCompleted: () => {} + } + ) + + await nextTick() + expect(errorInvokedWith).toBeUndefined() + expect(nextInvokedWith).toBeUndefined() + }) + it("dispatches caught errors", async () => { let errorInvokedWith = undefined let nextInvokedWith = undefined diff --git a/javascript_client/src/subscriptions/createAblyHandler.ts b/javascript_client/src/subscriptions/createAblyHandler.ts index 2d934ae8fb..8d23bb3038 100644 --- a/javascript_client/src/subscriptions/createAblyHandler.ts +++ b/javascript_client/src/subscriptions/createAblyHandler.ts @@ -55,7 +55,7 @@ function createAblyHandler(options: AblyHandlerOptions) { if (result.errors) { // What kind of error stuff belongs here? observer.onError(result.errors) - } else if (result.data) { + } else if (result.data && Object.keys(result.data).length > 0) { observer.onNext({ data: result.data }) } }