diff --git a/packages/wallet/backend/src/incomingPayment/service.ts b/packages/wallet/backend/src/incomingPayment/service.ts index e7c2c2e19..a477e9b5f 100644 --- a/packages/wallet/backend/src/incomingPayment/service.ts +++ b/packages/wallet/backend/src/incomingPayment/service.ts @@ -87,7 +87,7 @@ export class IncomingPaymentService implements IIncomingPaymentService { walletAddressUrl: existingWalletAddress.url, description, asset, - amount: BigInt(amount * 10 ** asset.scale), + amount: BigInt((amount * 10 ** asset.scale).toFixed()), expiresAt: expiryDate, vopNonce: '' }) diff --git a/packages/wallet/backend/tests/incomingPayment/service.test.ts b/packages/wallet/backend/tests/incomingPayment/service.test.ts index 9b150e53f..01a9e0cf7 100644 --- a/packages/wallet/backend/tests/incomingPayment/service.test.ts +++ b/packages/wallet/backend/tests/incomingPayment/service.test.ts @@ -134,6 +134,27 @@ describe('Incoming Payment Service', () => { expect(result).toEqual(createdId) }) + it('should create an IncomePayment for a decimal amount', async () => { + const createdId = faker.string.uuid() + await mockIncomePaymentDeps(createdId) + const createReceiver = jest.fn(() => ({ id: createdId })) + Reflect.set(incopmPaymentService, 'rafikiClient', { + ...Reflect.get(incopmPaymentService, 'rafikiClient'), + getAssetById: () => mockedListAssets[2], + createReceiver + }) + const { walletAddress } = await prepareIncomePaymentDependencies() + const result = await incopmPaymentService.create( + userId, + walletAddress.id, + 1.13 + ) + expect(result).toEqual(createdId) + expect(createReceiver).toHaveBeenCalledWith( + expect.objectContaining({ amount: 113n }) + ) + }) + it('should return NotFound Err', async () => { await expect( incopmPaymentService.create(userId, faker.string.uuid(), 100)