2017-08-07 10:21:07 -07:00
|
|
|
package eyes
|
2017-08-06 13:34:27 -07:00
|
|
|
|
|
|
|
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)
|
|
|
|
}
|