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 }