@@ -2,6 +2,8 @@ package pegout_test
22
33import (
44 "context"
5+ "testing"
6+
57 "github.com/rsksmart/liquidity-provider-server/internal/entities"
68 "github.com/rsksmart/liquidity-provider-server/internal/entities/blockchain"
79 "github.com/rsksmart/liquidity-provider-server/internal/entities/liquidity_provider"
@@ -13,7 +15,6 @@ import (
1315 "github.com/stretchr/testify/assert"
1416 "github.com/stretchr/testify/mock"
1517 "github.com/stretchr/testify/require"
16- "testing"
1718)
1819
1920// nolint:funlen
@@ -105,15 +106,29 @@ func TestRecommendedPegoutUseCase_Run(t *testing.T) {
105106 require .ErrorIs (t , err , usecases .NoLiquidityError )
106107 assert .Empty (t , result )
107108 })
108- t .Run ("should validate recommended amount is over bridge minimum" , func (t * testing.T ) {
109+ t .Run ("should succeed when recommended amount is below bridge minimum" , func (t * testing.T ) {
109110 btc .On ("GetZeroAddress" , mock .Anything ).Return (blockchain .BitcoinTestnetP2PKHZeroAddress , nil ).Once ()
110111 highMinimumBridge := new (mocks.BridgeMock )
111112 highMinimumBridge .On ("GetMinimumLockTxValue" ).Return (new (entities.Wei ).Add (entities .NewWei (1 ), createdQuote .PegoutQuote .Total ()), nil )
112- contracts . Bridge = highMinimumBridge
113- useCase := pegout .NewRecommendedPegoutUseCase (lp , contracts , rpc , btcWallet , utils .Scale , test .AnyRskAddress )
113+ modifiedContracts := blockchain. RskContracts { PegOut : pegoutContract , Bridge : highMinimumBridge }
114+ useCase := pegout .NewRecommendedPegoutUseCase (lp , modifiedContracts , rpc , btcWallet , utils .Scale , test .AnyRskAddress )
114115 result , err = useCase .Run (context .Background (), createdQuote .PegoutQuote .Total (), blockchain .BtcAddressTypeP2PKH )
115- require .ErrorIs (t , err , usecases .TxBelowMinimumError )
116- assert .Empty (t , result )
116+ // Should succeed despite being below bridge minimum
117+ require .NoError (t , err )
118+ assert .NotEmpty (t , result )
119+ assert .Equal (t , createdQuote .PegoutQuote .Value , result .RecommendedQuoteValue )
120+ })
121+ t .Run ("should succeed when recommended amount equals bridge minimum" , func (t * testing.T ) {
122+ btc .On ("GetZeroAddress" , mock .Anything ).Return (blockchain .BitcoinTestnetP2PKHZeroAddress , nil ).Once ()
123+ // Set bridge minimum equal to the recommended amount
124+ equalMinimumBridge := new (mocks.BridgeMock )
125+ equalMinimumBridge .On ("GetMinimumLockTxValue" ).Return (createdQuote .PegoutQuote .Total (), nil )
126+ modifiedContracts := blockchain.RskContracts {PegOut : pegoutContract , Bridge : equalMinimumBridge }
127+ useCase := pegout .NewRecommendedPegoutUseCase (lp , modifiedContracts , rpc , btcWallet , utils .Scale , test .AnyRskAddress )
128+ result , err = useCase .Run (context .Background (), createdQuote .PegoutQuote .Total (), blockchain .BtcAddressTypeP2PKH )
129+ require .NoError (t , err )
130+ assert .NotEmpty (t , result )
131+ assert .Equal (t , createdQuote .PegoutQuote .Value , result .RecommendedQuoteValue )
117132 })
118133}
119134
0 commit comments