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  }