refactor(baseapp,types)!: msg responses (#17348)
Co-authored-by: Julien Robert <julien@rbrt.fr> Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com>
This commit is contained in:
co-authored by
Julien Robert
Aleksandr Bezobchuk
parent
0dc32a0762
commit
30997f4227
@@ -5,10 +5,8 @@ import (
|
||||
"encoding/json"
|
||||
"strings"
|
||||
|
||||
abci "github.com/cometbft/cometbft/abci/types"
|
||||
cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
|
||||
coretypes "github.com/cometbft/cometbft/rpc/core/types"
|
||||
"github.com/cosmos/gogoproto/proto"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
|
||||
@@ -195,39 +193,6 @@ func (r TxResponse) GetTx() HasMsgs {
|
||||
return nil
|
||||
}
|
||||
|
||||
// WrapServiceResult wraps a result from a protobuf RPC service method call (res proto.Message, err error)
|
||||
// in a Result object or error. This method takes care of marshaling the res param to
|
||||
// protobuf and attaching any events on the ctx.EventManager() to the Result.
|
||||
func WrapServiceResult(ctx Context, res proto.Message, err error) (*Result, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
any, err := codectypes.NewAnyWithValue(res)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var data []byte
|
||||
if res != nil {
|
||||
data, err = proto.Marshal(res)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
var events []abci.Event
|
||||
if evtMgr := ctx.EventManager(); evtMgr != nil {
|
||||
events = evtMgr.ABCIEvents()
|
||||
}
|
||||
|
||||
return &Result{
|
||||
Data: data,
|
||||
Events: events,
|
||||
MsgResponses: []*codectypes.Any{any},
|
||||
}, nil
|
||||
}
|
||||
|
||||
// calculate total pages in an overflow safe manner
|
||||
func calcTotalPages(totalCount, limit int64) int64 {
|
||||
totalPages := int64(0)
|
||||
|
||||
@@ -2,7 +2,6 @@ package types_test
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
@@ -11,12 +10,9 @@ import (
|
||||
cmtt "github.com/cometbft/cometbft/proto/tendermint/types"
|
||||
coretypes "github.com/cometbft/cometbft/rpc/core/types"
|
||||
cmt "github.com/cometbft/cometbft/types"
|
||||
"github.com/golang/protobuf/proto" //nolint:staticcheck // grpc-gateway uses deprecated golang/protobuf
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/stretchr/testify/suite"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
"github.com/cosmos/cosmos-sdk/testutil/testdata"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
)
|
||||
|
||||
@@ -178,33 +174,3 @@ func (s *resultTestSuite) TestResponseResultBlock() {
|
||||
|
||||
s.Require().Equal(want, sdk.NewResponseResultBlock(resultBlock, timestampStr))
|
||||
}
|
||||
|
||||
func TestWrapServiceResult(t *testing.T) {
|
||||
ctx := sdk.Context{}
|
||||
|
||||
res, err := sdk.WrapServiceResult(ctx, nil, fmt.Errorf("test"))
|
||||
require.Nil(t, res)
|
||||
require.NotNil(t, err)
|
||||
|
||||
res, err = sdk.WrapServiceResult(ctx, &testdata.Dog{}, nil)
|
||||
require.NotNil(t, res)
|
||||
require.Nil(t, err)
|
||||
require.Empty(t, res.Events)
|
||||
|
||||
ctx = ctx.WithEventManager(sdk.NewEventManager())
|
||||
ctx.EventManager().EmitEvent(sdk.NewEvent("test"))
|
||||
res, err = sdk.WrapServiceResult(ctx, &testdata.Dog{}, nil)
|
||||
require.NotNil(t, res)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, res.Events, 1)
|
||||
|
||||
spot := testdata.Dog{Name: "spot"}
|
||||
res, err = sdk.WrapServiceResult(ctx, &spot, nil)
|
||||
require.NotNil(t, res)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, res.Events, 1)
|
||||
var spot2 testdata.Dog
|
||||
err = proto.Unmarshal(res.Data, &spot2)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, spot, spot2)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user