From 5bb6140858512a5dd3546c73aae4478fed74229d Mon Sep 17 00:00:00 2001 From: James Hardwick Date: Thu, 16 May 2024 14:55:04 +1000 Subject: [PATCH] Show fee as 0% if no fees returned in quote. --- .../swap/functions/swapConversionRate.test.ts | 47 +++++++++++++++++++ .../swap/functions/swapConversionRate.ts | 2 +- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/packages/checkout/widgets-lib/src/widgets/swap/functions/swapConversionRate.test.ts b/packages/checkout/widgets-lib/src/widgets/swap/functions/swapConversionRate.test.ts index f21297f926..21afe1277f 100644 --- a/packages/checkout/widgets-lib/src/widgets/swap/functions/swapConversionRate.test.ts +++ b/packages/checkout/widgets-lib/src/widgets/swap/functions/swapConversionRate.test.ts @@ -133,4 +133,51 @@ describe('formatQuoteConversionRate', () => { fee: 1, }); }); + + it('should handle an empty fee array', () => { + const fromAmount = '1.50'; + const fromToken = { + name: 'ETH', + symbol: 'ETH', + address: '0x123', + chainId: 1, + decimals: 18, + } as TokenInfo; + const mockQuote = { + quote: { + amount: { + value: BigNumber.from('2000000000000000000'), + token: { + symbol: 'DAI', + address: '0x456', + chainId: 1, + decimals: 18, + }, + } as Amount, + amountWithMaxSlippage: {} as Amount, + slippage: 0, + fees: [], + } as Quote, + swap: { + gasFeeEstimate: { + value: BigNumber.from(100), + }, + }, + approval: { + gasFeeEstimate: { + value: BigNumber.from(50), + }, + }, + } as TransactionResponse; + const labelKey = 'conversion.label'; + + formatQuoteConversionRate(fromAmount, fromToken, mockQuote, labelKey, mockTranslate as unknown as TFunction); + + expect(mockTranslate).toHaveBeenCalledWith(labelKey, { + fromSymbol: 'ETH', + toSymbol: 'DAI', + rate: '1.33', + fee: 0, + }); + }); }); diff --git a/packages/checkout/widgets-lib/src/widgets/swap/functions/swapConversionRate.ts b/packages/checkout/widgets-lib/src/widgets/swap/functions/swapConversionRate.ts index 2e1df2a2af..e02f5760d6 100644 --- a/packages/checkout/widgets-lib/src/widgets/swap/functions/swapConversionRate.ts +++ b/packages/checkout/widgets-lib/src/widgets/swap/functions/swapConversionRate.ts @@ -54,6 +54,6 @@ export const formatQuoteConversionRate = ( fromSymbol: fromToken.symbol, toSymbol: toToken.symbol, rate: formattedConversion, - fee: secondaryFee.basisPoints / 100, + fee: (secondaryFee?.basisPoints ?? 0) / 100, }); };