cosmos-sdk/modules/eyes/handler_test.go

62 lines
1.5 KiB
Go

package eyes
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/tendermint/basecoin/stack"
"github.com/tendermint/basecoin/state"
wire "github.com/tendermint/go-wire"
)
func TestHandler(t *testing.T) {
assert, require := assert.New(t), require.New(t)
key := []byte("one")
val := []byte("foo")
var height uint64 = 123
h := NewHandler()
ctx := stack.MockContext("role-chain", height)
store := state.NewMemKVStore()
set := SetTx{Key: key, Value: val}.Wrap()
remove := RemoveTx{Key: key}.Wrap()
invalid := SetTx{}.Wrap()
// make sure pricing makes sense
cres, err := h.CheckTx(ctx, store, set)
require.Nil(err, "%+v", err)
require.True(cres.GasAllocated > 5, "%#v", cres)
// set the value, no error
dres, err := h.DeliverTx(ctx, store, set)
require.Nil(err, "%+v", err)
// get the data
var data Data
bs := store.Get(key)
require.NotEmpty(bs)
err = wire.ReadBinaryBytes(bs, &data)
require.Nil(err, "%+v", err)
assert.Equal(height, data.SetAt)
assert.EqualValues(val, data.Value)
// make sure pricing makes sense
cres, err = h.CheckTx(ctx, store, remove)
require.Nil(err, "%+v", err)
require.True(cres.GasAllocated > 5, "%#v", cres)
// remove the data returns the same as the above query
dres, err = h.DeliverTx(ctx, store, remove)
require.Nil(err, "%+v", err)
require.EqualValues(bs, dres.Data)
// make sure invalid fails both ways
_, err = h.CheckTx(ctx, store, invalid)
require.NotNil(err)
_, err = h.DeliverTx(ctx, store, invalid)
require.NotNil(err)
}