github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/tm2/pkg/sdk/bank/handler_test.go (about)

     1  package bank
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/require"
     9  
    10  	"github.com/gnolang/gno/tm2/pkg/amino"
    11  	abci "github.com/gnolang/gno/tm2/pkg/bft/abci/types"
    12  	bft "github.com/gnolang/gno/tm2/pkg/bft/types"
    13  	"github.com/gnolang/gno/tm2/pkg/sdk"
    14  	tu "github.com/gnolang/gno/tm2/pkg/sdk/testutils"
    15  	"github.com/gnolang/gno/tm2/pkg/std"
    16  )
    17  
    18  func TestInvalidMsg(t *testing.T) {
    19  	t.Parallel()
    20  
    21  	h := NewHandler(BankKeeper{})
    22  	res := h.Process(sdk.NewContext(sdk.RunTxModeDeliver, nil, &bft.Header{ChainID: "test-chain"}, nil), tu.NewTestMsg())
    23  	require.False(t, res.IsOK())
    24  	require.True(t, strings.Contains(res.Log, "unrecognized bank message type"))
    25  }
    26  
    27  func TestBalances(t *testing.T) {
    28  	t.Parallel()
    29  
    30  	env := setupTestEnv()
    31  	h := NewHandler(env.bank)
    32  	_, _, addr := tu.KeyTestPubAddr()
    33  
    34  	req := abci.RequestQuery{
    35  		Path: fmt.Sprintf("bank/%s/%s", QueryBalance, addr.String()),
    36  		Data: []byte{},
    37  	}
    38  
    39  	res := h.Query(env.ctx, req)
    40  	require.Nil(t, res.Error) // the account does not exist, no error returned anyway
    41  	require.NotNil(t, res)
    42  
    43  	var coins std.Coins
    44  	require.NoError(t, amino.UnmarshalJSON(res.Data, &coins))
    45  	require.True(t, coins.IsZero())
    46  
    47  	acc := env.acck.NewAccountWithAddress(env.ctx, addr)
    48  	acc.SetCoins(std.NewCoins(std.NewCoin("foo", 10)))
    49  	env.acck.SetAccount(env.ctx, acc)
    50  	res = h.Query(env.ctx, req)
    51  	require.Nil(t, res.Error)
    52  	require.NotNil(t, res)
    53  	require.NoError(t, amino.UnmarshalJSON(res.Data, &coins))
    54  	require.True(t, coins.AmountOf("foo") == 10)
    55  }
    56  
    57  func TestQuerierRouteNotFound(t *testing.T) {
    58  	t.Parallel()
    59  
    60  	env := setupTestEnv()
    61  	h := NewHandler(env.bank)
    62  	req := abci.RequestQuery{
    63  		Path: "bank/notfound",
    64  		Data: []byte{},
    65  	}
    66  	res := h.Query(env.ctx, req)
    67  	require.Error(t, res.Error)
    68  }