cosmos-sdk/runtime/v2/services_test.go
2024-12-05 08:29:55 +00:00

54 lines
1.2 KiB
Go

package runtime
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
appmodulev2 "cosmossdk.io/core/appmodule/v2"
"cosmossdk.io/core/transaction"
"cosmossdk.io/server/v2/stf"
)
// MockModule implements both HasMsgHandlers and HasQueryHandlers
type MockModule struct {
mock.Mock
appmodulev2.AppModule
}
func (m *MockModule) RegisterMsgHandlers(router appmodulev2.MsgRouter) {
m.Called(router)
}
func (m *MockModule) RegisterQueryHandlers(router appmodulev2.QueryRouter) {
m.Called(router)
}
func TestRegisterServices(t *testing.T) {
mockModule := new(MockModule)
app := &App[transaction.Tx]{
msgRouterBuilder: stf.NewMsgRouterBuilder(),
queryRouterBuilder: stf.NewMsgRouterBuilder(),
}
mm := &MM[transaction.Tx]{
modules: map[string]appmodulev2.AppModule{
"mock": mockModule,
},
}
msgWrapper := newStfRouterWrapper(app.msgRouterBuilder)
queryWrapper := newStfRouterWrapper(app.queryRouterBuilder)
mockModule.On("RegisterMsgHandlers", &msgWrapper).Once()
mockModule.On("RegisterQueryHandlers", &queryWrapper).Once()
err := mm.RegisterServices(app)
assert.NoError(t, err)
mockModule.AssertExpectations(t)
}