cosmos-sdk/x/bank/internal/keeper/querier_test.go

60 lines
1.6 KiB
Go
Raw Normal View History

package keeper
import (
"fmt"
"testing"
"github.com/stretchr/testify/require"
abci "github.com/tendermint/tendermint/abci/types"
sdk "github.com/cosmos/cosmos-sdk/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
"github.com/cosmos/cosmos-sdk/x/bank/internal/types"
)
func TestBalances(t *testing.T) {
input := setupTestInput()
req := abci.RequestQuery{
Path: fmt.Sprintf("custom/bank/%s", QueryBalance),
Data: []byte{},
}
querier := NewQuerier(input.k)
res, err := querier(input.ctx, []string{"balances"}, req)
require.NotNil(t, err)
require.Nil(t, res)
_, _, addr := authtypes.KeyTestPubAddr()
req.Data = input.cdc.MustMarshalJSON(types.NewQueryBalanceParams(addr))
res, err = querier(input.ctx, []string{"balances"}, req)
require.Nil(t, err) // the account does not exist, no error returned anyway
require.NotNil(t, res)
var coins sdk.Coins
require.NoError(t, input.cdc.UnmarshalJSON(res, &coins))
require.True(t, coins.IsZero())
acc := input.ak.NewAccountWithAddress(input.ctx, addr)
acc.SetCoins(sdk.NewCoins(sdk.NewInt64Coin("foo", 10)))
input.ak.SetAccount(input.ctx, acc)
res, err = querier(input.ctx, []string{"balances"}, req)
require.Nil(t, err)
require.NotNil(t, res)
require.NoError(t, input.cdc.UnmarshalJSON(res, &coins))
require.True(t, coins.AmountOf("foo").Equal(sdk.NewInt(10)))
}
func TestQuerierRouteNotFound(t *testing.T) {
input := setupTestInput()
req := abci.RequestQuery{
Path: "custom/bank/notfound",
Data: []byte{},
}
querier := NewQuerier(input.k)
_, err := querier(input.ctx, []string{"notfound"}, req)
require.Error(t, err)
}