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  }