@@ -2,17 +2,22 @@ import { ETH_FLOW_DEFAULT_SLIPPAGE_BPS } from './consts'
22import { getQuoteWithSigner , getQuoteRaw } from './getQuote'
33import { SwapParameters } from './types'
44import { ETH_ADDRESS , WRAPPED_NATIVE_CURRENCIES , SupportedChainId } from '@cowprotocol/sdk-config'
5- import { OrderBookApi , OrderKind , OrderQuoteResponse } from '@cowprotocol/sdk-order-book'
5+ import { OrderBookApi , OrderKind , OrderQuoteResponse , PriceQuality } from '@cowprotocol/sdk-order-book'
66import { AdaptersTestSetup , createAdapters } from '../tests/setup'
77import { setGlobalAdapter } from '@cowprotocol/sdk-common'
88
9- // Mock suggestSlippageBpsWithApi
9+ // Mock suggestSlippageBpsWithApi and suggestSlippageBps
1010jest . mock ( './suggestSlippageBpsWithApi' , ( ) => ( {
1111 suggestSlippageBpsWithApi : jest . fn ( ) ,
1212} ) )
13+ jest . mock ( './suggestSlippageBps' , ( ) => ( {
14+ suggestSlippageBps : jest . fn ( ) ,
15+ } ) )
1316
1417import { suggestSlippageBpsWithApi } from './suggestSlippageBpsWithApi'
18+ import { suggestSlippageBps } from './suggestSlippageBps'
1519const mockSuggestSlippageBpsWithApi = suggestSlippageBpsWithApi as jest . MockedFunction < typeof suggestSlippageBpsWithApi >
20+ const mockSuggestSlippageBps = suggestSlippageBps as jest . MockedFunction < typeof suggestSlippageBps >
1621
1722const quoteResponseMock = {
1823 quote : {
@@ -358,6 +363,8 @@ describe('getQuote', () => {
358363 getQuoteMock . mockResolvedValue ( quoteResponseMock )
359364 mockSuggestSlippageBpsWithApi . mockReset ( )
360365 mockSuggestSlippageBpsWithApi . mockResolvedValue ( 150 )
366+ mockSuggestSlippageBps . mockReset ( )
367+ mockSuggestSlippageBps . mockReturnValue ( 100 )
361368 } )
362369
363370 it ( 'should use suggestSlippageBpsWithApi to get suggested slippage' , async ( ) => {
@@ -461,5 +468,45 @@ describe('getQuote', () => {
461468 )
462469 }
463470 } )
471+
472+ it ( 'should use suggestSlippageBps instead of API when priceQuality is FAST' , async ( ) => {
473+ const adapterName = Object . keys ( adapters ) [ 0 ] as keyof typeof adapters
474+ setGlobalAdapter ( adapters [ adapterName ] )
475+
476+ const tradeParameters = {
477+ sellToken : '0xfff9976782d46cc05630d1f6ebab18b2324d6b14' ,
478+ sellTokenDecimals : 18 ,
479+ buyToken : '0x0625afb445c3b6b7b929342a04a22599fd5dbb59' ,
480+ buyTokenDecimals : 18 ,
481+ amount : '100000000000000000' ,
482+ kind : OrderKind . SELL ,
483+ }
484+
485+ const trader = {
486+ chainId : SupportedChainId . GNOSIS_CHAIN ,
487+ appCode : '0x007' ,
488+ account : '0xfb3c7eb936caa12b5a884d612393969a557d4307' as const ,
489+ }
490+
491+ const advancedSettings = {
492+ quoteRequest : {
493+ priceQuality : PriceQuality . FAST ,
494+ } ,
495+ }
496+
497+ const result = await getQuoteRaw ( tradeParameters , trader , advancedSettings , orderBookApiMock )
498+
499+ // Verify that suggestSlippageBps was called instead of suggestSlippageBpsWithApi
500+ expect ( mockSuggestSlippageBps ) . toHaveBeenCalledWith ( {
501+ isEthFlow : false ,
502+ quote : quoteResponseMock ,
503+ tradeParameters,
504+ trader,
505+ advancedSettings,
506+ bffEnv : 'prod' ,
507+ } )
508+ expect ( mockSuggestSlippageBpsWithApi ) . not . toHaveBeenCalled ( )
509+ expect ( result . suggestedSlippageBps ) . toBe ( 100 )
510+ } )
464511 } )
465512} )
0 commit comments