diff --git a/packages/request-client.js/src/api/request.ts b/packages/request-client.js/src/api/request.ts index 4de7171fbc..7f4ada1183 100644 --- a/packages/request-client.js/src/api/request.ts +++ b/packages/request-client.js/src/api/request.ts @@ -696,6 +696,12 @@ export default class Request { * @returns The updated request data */ public getData(): Types.IRequestDataWithEvents { + if (this.inMemoryInfo) { + return Object.assign(new EventEmitter(), { + ...this.inMemoryInfo.requestData, + }); + } + if (this.confirmationErrorOccurredAtCreation) { throw Error('request confirmation failed'); } @@ -709,8 +715,6 @@ export default class Request { requestData = pending as RequestLogicTypes.IRequest; requestData.state = RequestLogicTypes.STATE.PENDING; pending = { state: this.pendingData?.state }; - } else if (!requestData && !pending) { - return Object.assign(new EventEmitter(), {} as Types.IRequestDataWithEvents); } const currency = this.currencyManager.fromStorageCurrency(requestData.currency); diff --git a/packages/request-client.js/test/in-memory-request.test.ts b/packages/request-client.js/test/in-memory-request.test.ts index 1e5a646b2f..5671995544 100644 --- a/packages/request-client.js/test/in-memory-request.test.ts +++ b/packages/request-client.js/test/in-memory-request.test.ts @@ -1,3 +1,4 @@ +import { EventEmitter } from 'events'; import { RequestNetwork, RequestNetworkBase } from '../src/index'; import * as TestData from './data-test'; @@ -10,6 +11,7 @@ import { NoPersistDataWrite, PendingStore, } from '@requestnetwork/data-access'; +import { ClientTypes } from '@requestnetwork/types'; class MyCustomDataAccess extends CombinedDataAccess { constructor() { @@ -128,6 +130,19 @@ describe('handle in-memory request', () => { ); }); + it('returns an empty EventEmitter object when calling getData', async () => { + requestNetwork = new RequestNetwork({ + skipPersistence: true, + signatureProvider: TestData.fakeSignatureProvider, + }); + + const request = await requestNetwork.createRequest(requestCreationParams); + + expect(request.getData()).toStrictEqual( + Object.assign(new EventEmitter(), {} as ClientTypes.IRequestDataWithEvents), + ); + }); + it('persists a previously created in-memory request', async () => { requestNetwork = new RequestNetwork({ skipPersistence: true,