From ad9e0c8acc28e572033ad7d621ac320c30d7f435 Mon Sep 17 00:00:00 2001 From: MantisClone Date: Fri, 17 Jan 2025 15:49:02 -0500 Subject: [PATCH 1/9] chore: add test for error when calling getData() on an in-memory request --- .../test/in-memory-request.test.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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..8983924817 100644 --- a/packages/request-client.js/test/in-memory-request.test.ts +++ b/packages/request-client.js/test/in-memory-request.test.ts @@ -128,6 +128,23 @@ describe('handle in-memory request', () => { ); }); + it('throws an error when calling getData on an in-memory request', async () => { + requestNetwork = new RequestNetwork({ + skipPersistence: true, + signatureProvider: TestData.fakeSignatureProvider, + }); + + const request = await requestNetwork.createRequest(requestCreationParams); + + expect(request.inMemoryInfo).toBeDefined(); + expect(request.inMemoryInfo?.requestData).toBeDefined(); + expect(request.inMemoryInfo?.topics).toBeDefined(); + expect(request.inMemoryInfo?.transactionData).toBeDefined(); + expect(request.requestId).toBeDefined(); + + await expect(request.getData()).rejects.toThrow('Cannot get data from an in-memory request'); + }); + it('persists a previously created in-memory request', async () => { requestNetwork = new RequestNetwork({ skipPersistence: true, From 3e1efec9787ca1588156da26ec7031f03338b991 Mon Sep 17 00:00:00 2001 From: MantisClone Date: Fri, 17 Jan 2025 15:51:49 -0500 Subject: [PATCH 2/9] fix: remove unnecessary assertions --- packages/request-client.js/test/in-memory-request.test.ts | 6 ------ 1 file changed, 6 deletions(-) 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 8983924817..4e1d689ad5 100644 --- a/packages/request-client.js/test/in-memory-request.test.ts +++ b/packages/request-client.js/test/in-memory-request.test.ts @@ -136,12 +136,6 @@ describe('handle in-memory request', () => { const request = await requestNetwork.createRequest(requestCreationParams); - expect(request.inMemoryInfo).toBeDefined(); - expect(request.inMemoryInfo?.requestData).toBeDefined(); - expect(request.inMemoryInfo?.topics).toBeDefined(); - expect(request.inMemoryInfo?.transactionData).toBeDefined(); - expect(request.requestId).toBeDefined(); - await expect(request.getData()).rejects.toThrow('Cannot get data from an in-memory request'); }); From 2def6efbdc30c6a2eb613e7fd0838e883117af65 Mon Sep 17 00:00:00 2001 From: MantisClone Date: Fri, 17 Jan 2025 16:06:16 -0500 Subject: [PATCH 3/9] fix: error message --- packages/request-client.js/test/in-memory-request.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 4e1d689ad5..f2961edff3 100644 --- a/packages/request-client.js/test/in-memory-request.test.ts +++ b/packages/request-client.js/test/in-memory-request.test.ts @@ -136,7 +136,9 @@ describe('handle in-memory request', () => { const request = await requestNetwork.createRequest(requestCreationParams); - await expect(request.getData()).rejects.toThrow('Cannot get data from an in-memory request'); + await expect(request.getData()).rejects.toThrow( + 'value must be a promise or a function returning a promise', + ); }); it('persists a previously created in-memory request', async () => { From cf2c2d612e1588c0d43b8c144d628496766c24fe Mon Sep 17 00:00:00 2001 From: MantisClone Date: Fri, 17 Jan 2025 16:10:39 -0500 Subject: [PATCH 4/9] fix: remove await because getData() is not async --- packages/request-client.js/test/in-memory-request.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 f2961edff3..9635f9d261 100644 --- a/packages/request-client.js/test/in-memory-request.test.ts +++ b/packages/request-client.js/test/in-memory-request.test.ts @@ -136,7 +136,7 @@ describe('handle in-memory request', () => { const request = await requestNetwork.createRequest(requestCreationParams); - await expect(request.getData()).rejects.toThrow( + expect(request.getData()).rejects.toThrow( 'value must be a promise or a function returning a promise', ); }); From d43e5d1ec2b16f7f0ad9f2ca09cd3782f415dbaf Mon Sep 17 00:00:00 2001 From: MantisClone Date: Fri, 17 Jan 2025 17:12:39 -0500 Subject: [PATCH 5/9] fix: remove `rejects` because getData() doesn't return a promise --- packages/request-client.js/test/in-memory-request.test.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 9635f9d261..cd479d12dd 100644 --- a/packages/request-client.js/test/in-memory-request.test.ts +++ b/packages/request-client.js/test/in-memory-request.test.ts @@ -136,9 +136,7 @@ describe('handle in-memory request', () => { const request = await requestNetwork.createRequest(requestCreationParams); - expect(request.getData()).rejects.toThrow( - 'value must be a promise or a function returning a promise', - ); + expect(request.getData()).toThrow('value must be a promise or a function returning a promise'); }); it('persists a previously created in-memory request', async () => { From d27d33c5c6ec49666b1578e376d738d9dfa5f910 Mon Sep 17 00:00:00 2001 From: MantisClone Date: Sat, 18 Jan 2025 13:24:20 -0500 Subject: [PATCH 6/9] fix: test --- packages/request-client.js/test/in-memory-request.test.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 cd479d12dd..23bbb71323 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() { @@ -136,7 +138,11 @@ describe('handle in-memory request', () => { const request = await requestNetwork.createRequest(requestCreationParams); - expect(request.getData()).toThrow('value must be a promise or a function returning a promise'); + console.log(JSON.stringify(request, null, 2)); + + expect(request.getData()).toBe( + Object.assign(new EventEmitter(), {} as ClientTypes.IRequestDataWithEvents), + ); }); it('persists a previously created in-memory request', async () => { From b075b544ff3295f5fa2e83021e6087484158257c Mon Sep 17 00:00:00 2001 From: MantisClone Date: Sat, 18 Jan 2025 15:45:50 -0500 Subject: [PATCH 7/9] fix: test per error output * expect(received).toBe(expected) // Object.is equality If it should pass with deep equality, replace "toBe" with "toStrictEqual" Expected: {"_events": {}, "_eventsCount": 0, "_maxListeners": undefined, Symbol(kCapture): false} Received: serializes to the same string --- packages/request-client.js/test/in-memory-request.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 23bbb71323..a29ebb22b6 100644 --- a/packages/request-client.js/test/in-memory-request.test.ts +++ b/packages/request-client.js/test/in-memory-request.test.ts @@ -140,7 +140,7 @@ describe('handle in-memory request', () => { console.log(JSON.stringify(request, null, 2)); - expect(request.getData()).toBe( + expect(request.getData()).toStrictEqual( Object.assign(new EventEmitter(), {} as ClientTypes.IRequestDataWithEvents), ); }); From 7156a989dcd5af04425264797b82504d6f51a9e0 Mon Sep 17 00:00:00 2001 From: MantisClone Date: Sat, 18 Jan 2025 16:10:07 -0500 Subject: [PATCH 8/9] refactor: cleanup --- packages/request-client.js/test/in-memory-request.test.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 a29ebb22b6..5671995544 100644 --- a/packages/request-client.js/test/in-memory-request.test.ts +++ b/packages/request-client.js/test/in-memory-request.test.ts @@ -130,7 +130,7 @@ describe('handle in-memory request', () => { ); }); - it('throws an error when calling getData on an in-memory request', async () => { + it('returns an empty EventEmitter object when calling getData', async () => { requestNetwork = new RequestNetwork({ skipPersistence: true, signatureProvider: TestData.fakeSignatureProvider, @@ -138,8 +138,6 @@ describe('handle in-memory request', () => { const request = await requestNetwork.createRequest(requestCreationParams); - console.log(JSON.stringify(request, null, 2)); - expect(request.getData()).toStrictEqual( Object.assign(new EventEmitter(), {} as ClientTypes.IRequestDataWithEvents), ); From a0d5494016571901d1763b52cdb9b7f310d8e5b1 Mon Sep 17 00:00:00 2001 From: MantisClone Date: Mon, 17 Feb 2025 16:29:15 -0500 Subject: [PATCH 9/9] [WIP] Make getData return inMemory.requestData --- packages/request-client.js/src/api/request.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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);