spark-server/internal/pkg/validate/validate_test.go
2026-09-22 17:07:26 +08:00

51 lines
1.6 KiB
Go

package validate
import (
"strings"
"testing"
"spark-server/internal/pkg/errs"
"spark-server/internal/pkg/i18n"
)
type sample struct {
Phone string `json:"phone" validate:"required" label:"field.phone" errmsg:"required:validate.login.phone_required"`
Password string `json:"password" validate:"required,min=6" label:"field.password"`
DeviceID uint64 `json:"device_id" validate:"required" label:"field.device_id"`
}
func TestStructCustomAndDefaultMessages(t *testing.T) {
err := Struct(sample{})
app, ok := errs.AsAppError(err)
if !ok {
t.Fatalf("type %T", err)
}
if app.Code != errs.ErrInvalidArgument.Code {
t.Fatalf("code %s", app.Code)
}
if !strings.Contains(app.Msg, "Please enter your phone number") || !strings.Contains(app.Msg, "Password is required") || !strings.Contains(app.Msg, "Device ID is required") {
t.Fatalf("msg %s", app.Msg)
}
err = Struct(sample{Phone: "1", Password: "123", DeviceID: 1})
app, ok = errs.AsAppError(err)
if !ok || !strings.Contains(app.Msg, "at least 6") {
t.Fatalf("min %v", err)
}
if err := Struct(sample{Phone: "1", Password: "123456", DeviceID: 1}); err != nil {
t.Fatal(err)
}
}
func TestStructLangEnglish(t *testing.T) {
err := StructLang(i18n.En, sample{})
app, ok := errs.AsAppError(err)
if !ok || !strings.Contains(app.Msg, "Please enter your phone number") || !strings.Contains(app.Msg, "Password is required") {
t.Fatalf("en %v", err)
}
err = StructLang(i18n.ZhTW, sample{Phone: "1", Password: "123", DeviceID: 1})
app, ok = errs.AsAppError(err)
if !ok || !strings.Contains(app.Msg, "密碼不能少於6") {
t.Fatalf("zh-TW %v", err)
}
}