Skip to content

Commit

Permalink
Remove duplicated Module.Route calls (cosmos#7716)
Browse files Browse the repository at this point in the history
* Remove duplicated Module.Route calls

* make a proper test for registering empty route

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
  • Loading branch information
robert-zaremba and mergify[bot] authored Oct 29, 2020
1 parent 9087ffc commit e0e16f6
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 17 deletions.
8 changes: 4 additions & 4 deletions types/module/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -277,11 +277,11 @@ func (m *Manager) RegisterInvariants(ir sdk.InvariantRegistry) {
// RegisterRoutes registers all module routes and module querier routes
func (m *Manager) RegisterRoutes(router sdk.Router, queryRouter sdk.QueryRouter, legacyQuerierCdc *codec.LegacyAmino) {
for _, module := range m.Modules {
if !module.Route().Empty() {
router.AddRoute(module.Route())
if r := module.Route(); !r.Empty() {
router.AddRoute(r)
}
if module.QuerierRoute() != "" {
queryRouter.AddRoute(module.QuerierRoute(), module.LegacyQuerierHandler(legacyQuerierCdc))
if r := module.QuerierRoute(); r != "" {
queryRouter.AddRoute(r, module.LegacyQuerierHandler(legacyQuerierCdc))
}
}
}
Expand Down
18 changes: 7 additions & 11 deletions types/module/module_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,19 +147,15 @@ func TestManager_RegisterRoutes(t *testing.T) {
require.Equal(t, 2, len(mm.Modules))

router := mocks.NewMockRouter(mockCtrl)
handler1, handler2 := sdk.Handler(func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) {
return nil, nil
}), sdk.Handler(func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) {
return nil, nil
})
route1 := sdk.NewRoute("route1", handler1)
route2 := sdk.NewRoute("route2", handler2)
mockAppModule1.EXPECT().Route().Times(2).Return(route1)
mockAppModule2.EXPECT().Route().Times(2).Return(route2)
router.EXPECT().AddRoute(gomock.Any()).Times(2) // Use of Any due to limitations to compare Functions as the sdk.Handler
noopHandler := sdk.Handler(func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { return nil, nil })
route1 := sdk.NewRoute("route1", noopHandler)
route2 := sdk.NewRoute("", noopHandler)
mockAppModule1.EXPECT().Route().Times(1).Return(route1)
mockAppModule2.EXPECT().Route().Times(1).Return(route2)
router.EXPECT().AddRoute(gomock.Any()).Times(1) // Use of Any due to limitations to compare Functions as the sdk.Handler

queryRouter := mocks.NewMockQueryRouter(mockCtrl)
mockAppModule1.EXPECT().QuerierRoute().Times(2).Return("querierRoute1")
mockAppModule1.EXPECT().QuerierRoute().Times(1).Return("querierRoute1")
mockAppModule2.EXPECT().QuerierRoute().Times(1).Return("")
handler3 := sdk.Querier(nil)
amino := codec.NewLegacyAmino()
Expand Down
4 changes: 2 additions & 2 deletions types/router.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ type Route struct {

// NewRoute returns an instance of Route.
func NewRoute(p string, h Handler) Route {
return Route{path: p, handler: h}
return Route{path: strings.TrimSpace(p), handler: h}
}

// Path returns the path the route has assigned.
Expand All @@ -55,7 +55,7 @@ func (r Route) Handler() Handler {

// Empty returns true only if both handler and path are not empty.
func (r Route) Empty() bool {
return r.handler == nil || r.path == strings.TrimSpace("")
return r.handler == nil || r.path == ""
}

// QueryRouter provides queryables for each query path.
Expand Down

0 comments on commit e0e16f6

Please sign in to comment.