github.com/ChainSafe/chainbridge-core@v1.4.2/chains/evm/calls/evmgaspricer/static_test.go (about)

     1  package evmgaspricer
     2  
     3  import (
     4  	"errors"
     5  	"math/big"
     6  	"testing"
     7  
     8  	mock_evmgaspricer "github.com/ChainSafe/chainbridge-core/chains/evm/calls/evmgaspricer/mock"
     9  
    10  	"github.com/golang/mock/gomock"
    11  
    12  	"github.com/stretchr/testify/suite"
    13  )
    14  
    15  type StaticGasPriceTestSuite struct {
    16  	suite.Suite
    17  	gasPricerMock *mock_evmgaspricer.MockGasPriceClient
    18  }
    19  
    20  func TestRunTestSuite(t *testing.T) {
    21  	suite.Run(t, new(StaticGasPriceTestSuite))
    22  }
    23  
    24  func (s *StaticGasPriceTestSuite) SetupSuite()    {}
    25  func (s *StaticGasPriceTestSuite) TearDownSuite() {}
    26  func (s *StaticGasPriceTestSuite) SetupTest() {
    27  	gomockController := gomock.NewController(s.T())
    28  	s.gasPricerMock = mock_evmgaspricer.NewMockGasPriceClient(gomockController)
    29  }
    30  func (s *StaticGasPriceTestSuite) TearDownTest() {}
    31  
    32  func (s *StaticGasPriceTestSuite) TestStaticGasPricerNoOpts() {
    33  	twentyGwei := big.NewInt(20000000000)
    34  	gpd := NewStaticGasPriceDeterminant(s.gasPricerMock, nil)
    35  	s.gasPricerMock.EXPECT().SuggestGasPrice(gomock.Any()).Return(twentyGwei, nil)
    36  	res, err := gpd.GasPrice(nil)
    37  	s.Nil(err)
    38  	s.Equal(len(res), 1)
    39  	s.Equal(res[0].Cmp(twentyGwei), 0)
    40  }
    41  
    42  func (s *StaticGasPriceTestSuite) TestStaticGasPricerFactorSet() {
    43  	twentyGwei := big.NewInt(20000000000)
    44  	gpd := NewStaticGasPriceDeterminant(s.gasPricerMock, &GasPricerOpts{
    45  		GasPriceFactor: big.NewFloat(2.5),
    46  	})
    47  	s.gasPricerMock.EXPECT().SuggestGasPrice(gomock.Any()).Return(twentyGwei, nil)
    48  	res, err := gpd.GasPrice(nil)
    49  	s.Nil(err)
    50  	s.Equal(len(res), 1)
    51  	s.Equal(res[0].Cmp(big.NewInt(50000000000)), 0)
    52  }
    53  
    54  func (s *StaticGasPriceTestSuite) TestStaticGasPricerUpperLimitSet() {
    55  	twentyGwei := big.NewInt(20000000000)
    56  	gpd := NewStaticGasPriceDeterminant(s.gasPricerMock, &GasPricerOpts{
    57  		UpperLimitFeePerGas: big.NewInt(1),
    58  	})
    59  	s.gasPricerMock.EXPECT().SuggestGasPrice(gomock.Any()).Return(twentyGwei, nil)
    60  	res, err := gpd.GasPrice(nil)
    61  	s.Nil(err)
    62  	s.Equal(len(res), 1)
    63  	s.Equal(res[0].Cmp(big.NewInt(1)), 0)
    64  }
    65  
    66  func (s *StaticGasPriceTestSuite) TestStaticGasPricerUpperLimitAndFactorSet() {
    67  	twentyGwei := big.NewInt(20000000000)
    68  	gpd := NewStaticGasPriceDeterminant(s.gasPricerMock, &GasPricerOpts{
    69  		UpperLimitFeePerGas: big.NewInt(1),
    70  		GasPriceFactor:      big.NewFloat(2.5),
    71  	})
    72  	s.gasPricerMock.EXPECT().SuggestGasPrice(gomock.Any()).Return(twentyGwei, nil)
    73  	res, err := gpd.GasPrice(nil)
    74  	s.Nil(err)
    75  	s.Equal(len(res), 1)
    76  	s.Equal(res[0].Cmp(big.NewInt(1)), 0)
    77  }
    78  
    79  func (s *StaticGasPriceTestSuite) TestStaticGasPricerErrOnSuggest() {
    80  	twentyGwei := big.NewInt(20000000000)
    81  	gpd := NewStaticGasPriceDeterminant(s.gasPricerMock, nil)
    82  	e := errors.New("err on suggest")
    83  	s.gasPricerMock.EXPECT().SuggestGasPrice(gomock.Any()).Return(twentyGwei, e)
    84  	res, err := gpd.GasPrice(nil)
    85  	s.NotNil(err)
    86  	s.Nil(res)
    87  }