github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/wasm/keeper/wasmtesting/messenger.go (about) 1 package wasmtesting 2 3 import ( 4 "errors" 5 6 wasmvmtypes "github.com/CosmWasm/wasmvm/types" 7 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 8 ) 9 10 type MockMessageHandler struct { 11 DispatchMsgFn func(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) 12 } 13 14 func (m *MockMessageHandler) DispatchMsg(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) { 15 if m.DispatchMsgFn == nil { 16 panic("not expected to be called") 17 } 18 return m.DispatchMsgFn(ctx, contractAddr, contractIBCPortID, msg) 19 } 20 21 func NewCapturingMessageHandler() (*MockMessageHandler, *[]wasmvmtypes.CosmosMsg) { 22 var messages []wasmvmtypes.CosmosMsg 23 return &MockMessageHandler{ 24 DispatchMsgFn: func(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) { 25 messages = append(messages, msg) 26 // return one data item so that this doesn't cause an error in submessage processing (it takes the first element from data) 27 return nil, [][]byte{{1}}, nil 28 }, 29 }, &messages 30 } 31 32 func NewErroringMessageHandler() *MockMessageHandler { 33 return &MockMessageHandler{ 34 DispatchMsgFn: func(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) { 35 return nil, nil, errors.New("test, ignore") 36 }, 37 } 38 }