// Package router ... // // Description : router ... // // Author : go_developer@163.com<白茶清欢> // // Date : 2025-05-28 20:58 package router import ( "testing" "time" "git.zhangdeman.cn/zhangdeman/rate_limit" "github.com/gin-gonic/gin" ) func TestNewServer(t *testing.T) { s := NewServer(9087, WithRateLimitInstance(rate_limit.MemoryClient), WithDocConfig(&DocConfig{ Enable: true, UiTheme: "elements", BaseUri: "", Flag: "test-server", ServerList: nil, Info: nil, SecuritySchemes: nil, CommonParameter: nil, })) s.AddCommonParamRule("UserID", func(ctx *gin.Context) (any, error) { return uint(123456), nil }) s.Group("", nil, testController{}) s.Start() } type testCategory struct { Meta `json:"-" method:"get" path:"test" rate-limit:"1/5/60" tag:"测试,验证" summary:"本地调试"` ID int64 `json:"id" description:"分类ID" eg:"123" binding:"required,min=10,max=100"` Sex string `json:"sex" dc:"性别" binding:"required,oneof=man woman" enum-desc:"man:男||woman:女"` Name string `json:"name" description:"分类名称" eg:"baichaqinghuan" binding:"required,min=8"` } type testProduct struct { ID int64 `json:"id,omitempty" description:"产品ID" example:"1001" required:"true" binding:"required"` Name string `json:"name" description:"产品名称" example:"iPhone 13" minLength:"2" maxLength:"100" required:"true"` Price float64 `json:"price" description:"价格" example:"6999.99" min:"0"` Stock int `json:"stock" description:"库存" example:"100" min:"0"` Tags []string `json:"tags" description:"标签"` Attributes map[string]string `json:"attributes" description:"属性"` CreatedAt time.Time `json:"created_at" description:"创建时间"` UpdatedAt *time.Time `json:"updated_at,omitempty" description:"更新时间"` Category *testCategory `json:"category,omitempty" description:"分类"` } type testController struct { } func (tc testController) Test(ctx *gin.Context, requestData *testCategory) (*testProduct, error) { return &testProduct{}, nil }