github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/bank/internal/keeper/querier_test.go (about)

     1  package keeper_test
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  
     9  	abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types"
    10  
    11  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
    12  	authtypes "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/types"
    13  	keep "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/bank/internal/keeper"
    14  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/bank/internal/types"
    15  )
    16  
    17  func TestBalances(t *testing.T) {
    18  	testCases := []struct {
    19  		Path string
    20  	}{
    21  		{keep.QueryBalance},
    22  		{keep.GrpcQueryBalance},
    23  	}
    24  	for _, tc := range testCases {
    25  		app, ctx := createTestApp(false)
    26  		req := abci.RequestQuery{
    27  			Path: fmt.Sprintf("custom/bank/%s", tc.Path),
    28  			Data: []byte{},
    29  		}
    30  
    31  		querier := keep.NewQuerier(app.BankKeeper)
    32  
    33  		res, err := querier(ctx, []string{"balances"}, req)
    34  		require.NotNil(t, err)
    35  		require.Nil(t, res)
    36  
    37  		_, _, addr := authtypes.KeyTestPubAddr()
    38  		req.Data = app.Codec().MustMarshalJSON(types.NewQueryBalanceParams(addr))
    39  		res, err = querier(ctx, []string{"balances"}, req)
    40  		require.Nil(t, err) // the account does not exist, no error returned anyway
    41  		require.NotNil(t, res)
    42  
    43  		var coins sdk.Coins
    44  		require.NoError(t, app.Codec().UnmarshalJSON(res, &coins))
    45  		require.True(t, coins.IsZero())
    46  
    47  		acc := app.AccountKeeper.NewAccountWithAddress(ctx, addr)
    48  		acc.SetCoins(sdk.NewCoins(sdk.NewInt64Coin("foo", 10)))
    49  		app.AccountKeeper.SetAccount(ctx, acc)
    50  		res, err = querier(ctx, []string{"balances"}, req)
    51  		require.Nil(t, err)
    52  		require.NotNil(t, res)
    53  		require.NoError(t, app.Codec().UnmarshalJSON(res, &coins))
    54  		require.True(t, coins.AmountOf("foo").Equal(sdk.NewDec(10)))
    55  	}
    56  }
    57  
    58  func TestQuerierRouteNotFound(t *testing.T) {
    59  	app, ctx := createTestApp(false)
    60  	req := abci.RequestQuery{
    61  		Path: "custom/bank/notfound",
    62  		Data: []byte{},
    63  	}
    64  
    65  	querier := keep.NewQuerier(app.BankKeeper)
    66  	_, err := querier(ctx, []string{"notfound"}, req)
    67  	require.Error(t, err)
    68  }