github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/erc20/keeper/querier_test.go (about)

     1  package keeper_test
     2  
     3  import (
     4  	"math/big"
     5  
     6  	"github.com/ethereum/go-ethereum/common"
     7  	abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types"
     8  	"github.com/fibonacci-chain/fbc/x/erc20/types"
     9  )
    10  
    11  func (suite *KeeperTestSuite) TestQuerier() {
    12  
    13  	testCases := []struct {
    14  		msg      string
    15  		path     []string
    16  		malleate func()
    17  		req      abci.RequestQuery
    18  		expPass  bool
    19  	}{
    20  		{"unknown request", []string{"other"}, func() {}, abci.RequestQuery{}, false},
    21  		{"parameters", []string{types.QueryParameters}, func() {}, abci.RequestQuery{}, true},
    22  		{"all mapping", []string{types.QueryTokenMapping}, func() {
    23  			denom1 := "testdenom1"
    24  			denom2 := "testdenom2"
    25  
    26  			autoContract := common.BigToAddress(big.NewInt(1))
    27  			externalContract := common.BigToAddress(big.NewInt(2))
    28  			suite.app.Erc20Keeper.SetContractForDenom(suite.ctx, denom1, autoContract)
    29  			suite.app.Erc20Keeper.SetContractForDenom(suite.ctx, denom2, externalContract)
    30  		}, abci.RequestQuery{}, true},
    31  		{"contract by denom", []string{types.QueryContractByDenom}, func() {
    32  			denom1 := "testdenom1"
    33  			autoContract := common.BigToAddress(big.NewInt(1))
    34  			suite.app.Erc20Keeper.SetContractForDenom(suite.ctx, denom1, autoContract)
    35  		}, abci.RequestQuery{Data: []byte(`{"denom":"testdenom1"}`)}, true},
    36  		{"denom by contract", []string{types.QueryDenomByContract}, func() {
    37  			denom1 := "testdenom1"
    38  			autoContract := common.BigToAddress(big.NewInt(1))
    39  			suite.app.Erc20Keeper.SetContractForDenom(suite.ctx, denom1, autoContract)
    40  		}, abci.RequestQuery{Data: []byte(`{"contract":"0x01"}`)}, true},
    41  		{"contract tem", []string{types.QueryContractTem}, func() {}, abci.RequestQuery{}, true},
    42  	}
    43  
    44  	for i, tc := range testCases {
    45  		suite.Run("", func() {
    46  			suite.SetupTest() // reset
    47  			tc.malleate()
    48  
    49  			bz, err := suite.querier(suite.ctx, tc.path, tc.req)
    50  			if tc.expPass {
    51  				suite.Require().NoError(err, "valid test %d failed: %s", i, tc.msg)
    52  				suite.Require().NotZero(len(bz))
    53  			} else {
    54  				suite.Require().Error(err, "invalid test %d passed: %s", i, tc.msg)
    55  			}
    56  		})
    57  	}
    58  }