github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/courier/swagger/gen/router_scanner_test.go (about) 1 package gen 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 "github.com/johnnyeven/libtools/codegen/loaderx" 9 ) 10 11 func TestRouterScanner(t *testing.T) { 12 tt := assert.New(t) 13 14 pkgImportPath, program := loaderx.NewTestProgram(` 15 package main 16 17 import ( 18 "context" 19 "github.com/johnnyeven/libtools/courier/httpx" 20 "github.com/johnnyeven/libtools/courier" 21 ) 22 23 type Root struct { 24 courier.EmptyOperator 25 } 26 27 type Group struct { 28 courier.EmptyOperator 29 } 30 31 func (g Group) Path() string { 32 return "/group" 33 } 34 35 type Auth struct{} 36 37 func (auth Auth) Output(ctx context.Context) (result interface{}, err error) { 38 return 39 } 40 41 type Get struct { 42 httpx.MethodGet 43 } 44 45 func (get Get) Path() string { 46 return "/id" 47 } 48 49 func (get Get) Output(ctx context.Context) (result interface{}, err error) { 50 return 51 } 52 53 var Router = courier.NewRouter(Root{}) 54 55 func main() { 56 group := courier.NewRouter(Group{}) 57 group.Register(courier.NewRouter(Get{})) 58 59 Router.Register(group) 60 Router.Register(courier.NewRouter(Auth{}, Get{})) 61 } 62 `) 63 64 query := loaderx.NewQuery(program, pkgImportPath) 65 scanner := NewRouterScanner(program) 66 67 router := scanner.Router(query.Var("Router")) 68 routes := router.Routes(program) 69 70 tt.Len(routes, 2) 71 }