Gerasimos (Makis) Maropoulos 2020-03-24 02:12:10 +02:00
parent 0d3770380f
commit a694266c63
3 changed files with 41 additions and 1 deletions

1
.gitignore vendored
View File

@ -1,5 +1,6 @@
.vscode .vscode
_authortools _authortools
/_examples/issue-*/
.directory .directory
node_modules node_modules
package-lock.json package-lock.json

View File

@ -1382,8 +1382,8 @@ func (ctx *context) Next() { // or context.Next(ctx)
// it sends a Status Not Found (404) to the client and it stops the execution. // it sends a Status Not Found (404) to the client and it stops the execution.
func (ctx *context) NextOr(handlers ...Handler) bool { func (ctx *context) NextOr(handlers ...Handler) bool {
if next := ctx.NextHandler(); next != nil { if next := ctx.NextHandler(); next != nil {
next(ctx)
ctx.Skip() // skip this handler from the chain. ctx.Skip() // skip this handler from the chain.
next(ctx)
return true return true
} }

View File

@ -585,3 +585,42 @@ func TestControllerRequestScopedDependencies(t *testing.T) {
}) })
e.GET("/custom/context").Expect().Status(httptest.StatusOK).Body().Equal("test") e.GET("/custom/context").Expect().Status(httptest.StatusOK).Body().Equal("test")
} }
type (
testServiceDoSomething struct{}
TestControllerAsDeepDep struct {
Ctx iris.Context
Service *testServiceDoSomething
}
FooController struct {
TestControllerAsDeepDep
}
BarController struct {
FooController
}
FinalController struct {
BarController
}
)
func (s *testServiceDoSomething) DoSomething(ctx iris.Context) {
ctx.WriteString("foo bar")
}
func (c *FinalController) GetSomething() {
c.Service.DoSomething(c.Ctx)
}
func TestControllersInsideControllerDeep(t *testing.T) {
app := iris.New()
m := New(app)
m.Register(new(testServiceDoSomething))
m.Handle(new(FinalController))
e := httptest.New(t, app)
e.GET("/something").Expect().Status(httptest.StatusOK).Body().Equal("foo bar")
}