cosmos-sdk/store/types/listening_test.go

67 lines
1.8 KiB
Go

package types
import (
"bytes"
"testing"
"github.com/stretchr/testify/require"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/types"
)
func TestNewStoreKVPairWriteListener(t *testing.T) {
testWriter := new(bytes.Buffer)
interfaceRegistry := types.NewInterfaceRegistry()
testMarshaller := codec.NewProtoCodec(interfaceRegistry)
wl := NewStoreKVPairWriteListener(testWriter, testMarshaller)
require.IsType(t, &StoreKVPairWriteListener{}, wl)
require.Equal(t, testWriter, wl.writer)
require.Equal(t, testMarshaller, wl.marshaller)
}
func TestOnWrite(t *testing.T) {
testWriter := new(bytes.Buffer)
interfaceRegistry := types.NewInterfaceRegistry()
testMarshaller := codec.NewProtoCodec(interfaceRegistry)
wl := NewStoreKVPairWriteListener(testWriter, testMarshaller)
testStoreKey := NewKVStoreKey("test_key")
testKey := []byte("testing123")
testValue := []byte("testing321")
// test set
err := wl.OnWrite(testStoreKey, testKey, testValue, false)
require.Nil(t, err)
outputBytes := testWriter.Bytes()
outputKVPair := new(StoreKVPair)
expectedOutputKVPair := &StoreKVPair{
Key: testKey,
Value: testValue,
StoreKey: testStoreKey.Name(),
Delete: false,
}
testMarshaller.UnmarshalLengthPrefixed(outputBytes, outputKVPair)
require.EqualValues(t, expectedOutputKVPair, outputKVPair)
testWriter.Reset()
// test delete
err = wl.OnWrite(testStoreKey, testKey, testValue, true)
require.Nil(t, err)
outputBytes = testWriter.Bytes()
outputKVPair = new(StoreKVPair)
expectedOutputKVPair = &StoreKVPair{
Key: testKey,
Value: testValue,
StoreKey: testStoreKey.Name(),
Delete: true,
}
testMarshaller.UnmarshalLengthPrefixed(outputBytes, outputKVPair)
require.EqualValues(t, expectedOutputKVPair, outputKVPair)
}