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