github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/ginx/anyfn/direct_test.go (about) 1 package anyfn_test 2 3 import ( 4 "errors" 5 "testing" 6 7 "github.com/bingoohuang/gg/pkg/ginx/adapt" 8 "github.com/bingoohuang/gg/pkg/ginx/anyfn" 9 "github.com/bingoohuang/gg/pkg/ginx/gintest" 10 "github.com/gin-gonic/gin" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestDirect(t *testing.T) { 15 af := anyfn.NewAdapter() 16 r := adapt.Adapt(gin.New(), af) 17 18 r.GET("/direct1", af.F(func() interface{} { 19 return anyfn.DirectResponse{Code: 203} 20 })) 21 r.GET("/direct2", af.F(func() interface{} { 22 return &anyfn.DirectResponse{Error: errors.New("abc")} 23 })) 24 r.GET("/direct3", af.F(func() interface{} { 25 return &anyfn.DirectResponse{String: "ABC"} 26 })) 27 r.GET("/direct4", af.F(func() interface{} { 28 return &anyfn.DirectResponse{ 29 JSON: struct { 30 Name string `json:"name"` 31 }{ 32 Name: "ABC", 33 }, 34 Header: map[string]string{"Xx-Server": "DDD"}, 35 } 36 })) 37 38 rr := gintest.Get("/direct1", r) 39 assert.Equal(t, 203, rr.StatusCode()) 40 assert.Equal(t, "", rr.Body()) 41 42 rr = gintest.Get("/direct2", r) 43 assert.Equal(t, 500, rr.StatusCode()) 44 assert.Equal(t, "abc", rr.Body()) 45 46 rr = gintest.Get("/direct3", r) 47 assert.Equal(t, 200, rr.StatusCode()) 48 assert.Equal(t, `ABC`, rr.Body()) 49 50 rr = gintest.Get("/direct4", r) 51 assert.Equal(t, 200, rr.StatusCode()) 52 assert.Equal(t, `{"name":"ABC"}`, rr.Body()) 53 assert.Equal(t, `DDD`, rr.Header()["Xx-Server"][0]) 54 }