From b78a884ee75fcbacaf6ace172b0eecc7c0c124a8 Mon Sep 17 00:00:00 2001 From: Madalina Raicu Date: Tue, 20 Sep 2022 12:52:10 +0100 Subject: [PATCH] fix: total fees bug --- .../src/lib/utils/market-utils.spec.tsx | 45 ++++++++++++++++++- .../market-list/src/lib/utils/market-utils.ts | 2 +- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/libs/market-list/src/lib/utils/market-utils.spec.tsx b/libs/market-list/src/lib/utils/market-utils.spec.tsx index ade2bc74d..f3ecca469 100644 --- a/libs/market-list/src/lib/utils/market-utils.spec.tsx +++ b/libs/market-list/src/lib/utils/market-utils.spec.tsx @@ -1,6 +1,6 @@ import { MarketState, MarketTradingMode } from '@vegaprotocol/types'; import type { Market } from '../markets-provider'; -import { mapDataToMarketList } from './market-utils'; +import { mapDataToMarketList, totalFees } from './market-utils'; const MARKET_A: Partial = { id: '1', @@ -11,6 +11,15 @@ const MARKET_A: Partial = { }, state: MarketState.STATE_ACTIVE, tradingMode: MarketTradingMode.TRADING_MODE_CONTINUOUS, + fees: { + __typename: 'Fees', + factors: { + __typename: 'FeeFactors', + makerFee: '0.0001', + infrastructureFee: '0.0002', + liquidityFee: '0.0000', + } + }, }; const MARKET_B: Partial = { @@ -22,6 +31,15 @@ const MARKET_B: Partial = { }, state: MarketState.STATE_ACTIVE, tradingMode: MarketTradingMode.TRADING_MODE_CONTINUOUS, + fees: { + __typename: 'Fees', + factors: { + __typename: 'FeeFactors', + makerFee: '0.0000', + infrastructureFee: '0.0002', + liquidityFee: '0.002', + } + }, }; const MARKET_C: Partial = { @@ -31,6 +49,15 @@ const MARKET_C: Partial = { open: '2022-05-17T13:00:39.328347732Z', close: null, }, + fees: { + __typename: 'Fees', + factors: { + __typename: 'FeeFactors', + makerFee: '0.0001', + infrastructureFee: '0.0002', + liquidityFee: '0.0003', + } + }, state: MarketState.STATE_REJECTED, tradingMode: MarketTradingMode.TRADING_MODE_CONTINUOUS, }; @@ -43,6 +70,15 @@ const MARKET_D: Partial = { close: null, }, state: MarketState.STATE_ACTIVE, + fees: { + __typename: 'Fees', + factors: { + __typename: 'FeeFactors', + makerFee: '0.0001', + infrastructureFee: '0.0002', + liquidityFee: '0.00000056', + } + }, tradingMode: MarketTradingMode.TRADING_MODE_NO_TRADING, }; @@ -56,4 +92,11 @@ describe('mapDataToMarketList', () => { ] as unknown as Market[]); expect(result).toEqual([MARKET_B, MARKET_A]); }); + + it('should format total fees', () => { + expect(MARKET_A.fees?.factors && totalFees(MARKET_A.fees?.factors)).toEqual('0.03%'); + expect(MARKET_B.fees?.factors && totalFees(MARKET_B.fees?.factors)).toEqual('0.22%'); + expect(MARKET_C.fees?.factors && totalFees(MARKET_C.fees?.factors)).toEqual('0.06%'); + expect(MARKET_D.fees?.factors && totalFees(MARKET_D.fees?.factors)).toEqual('0.030056%'); + }); }); diff --git a/libs/market-list/src/lib/utils/market-utils.ts b/libs/market-list/src/lib/utils/market-utils.ts index 0fdd62839..ed2e184aa 100644 --- a/libs/market-list/src/lib/utils/market-utils.ts +++ b/libs/market-list/src/lib/utils/market-utils.ts @@ -11,7 +11,7 @@ export const totalFees = (fees: Market['fees']['factors']) => { return formatNumberPercentage( new BigNumber(fees.makerFee) .plus(fees.liquidityFee) - .plus(fees.makerFee) + .plus(fees.infrastructureFee) .times(100) ); };