|
|
|
package builder
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
type mockedUser struct {
|
|
|
|
ID string `db:"id" json:"id,omitempty"`
|
|
|
|
UserName string `db:"user_name" json:"userName,omitempty"`
|
|
|
|
Sex int `db:"sex" json:"sex,omitempty"`
|
|
|
|
UUID string `db:"uuid" uuid:"uuid,omitempty"`
|
|
|
|
Age int `db:"age" json:"age"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestFieldNames(t *testing.T) {
|
|
|
|
t.Run("new", func(t *testing.T) {
|
|
|
|
var u mockedUser
|
|
|
|
out := RawFieldNames(&u)
|
|
|
|
expected := []string{"`id`", "`user_name`", "`sex`", "`uuid`", "`age`"}
|
|
|
|
assert.Equal(t, expected, out)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
type mockedUserWithOptions struct {
|
|
|
|
ID string `db:"id" json:"id,omitempty"`
|
|
|
|
UserName string `db:"user_name,type=varchar,length=255" json:"userName,omitempty"`
|
|
|
|
Sex int `db:"sex" json:"sex,omitempty"`
|
|
|
|
UUID string `db:",type=varchar,length=16" uuid:"uuid,omitempty"`
|
|
|
|
Age int `db:"age" json:"age"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestFieldNamesWithTagOptions(t *testing.T) {
|
|
|
|
t.Run("new", func(t *testing.T) {
|
|
|
|
var u mockedUserWithOptions
|
|
|
|
out := RawFieldNames(&u)
|
|
|
|
expected := []string{"`id`", "`user_name`", "`sex`", "`UUID`", "`age`"}
|
|
|
|
assert.Equal(t, expected, out)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
type mockedUserWithDashTag struct {
|
|
|
|
ID string `db:"id" json:"id,omitempty"`
|
|
|
|
UserName string `db:"user_name" json:"userName,omitempty"`
|
|
|
|
Mobile string `db:"-" json:"mobile,omitempty"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestFieldNamesWithDashTag(t *testing.T) {
|
|
|
|
t.Run("new", func(t *testing.T) {
|
|
|
|
var u mockedUserWithDashTag
|
|
|
|
out := RawFieldNames(&u)
|
|
|
|
expected := []string{"`id`", "`user_name`"}
|
|
|
|
assert.Equal(t, expected, out)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
type mockedUserWithDashTagAndOptions struct {
|
|
|
|
ID string `db:"id" json:"id,omitempty"`
|
|
|
|
UserName string `db:"user_name,type=varchar,length=255" json:"userName,omitempty"`
|
|
|
|
Mobile string `db:"-,type=varchar,length=255" json:"mobile,omitempty"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestFieldNamesWithDashTagAndOptions(t *testing.T) {
|
|
|
|
t.Run("new", func(t *testing.T) {
|
|
|
|
var u mockedUserWithDashTagAndOptions
|
|
|
|
out := RawFieldNames(&u)
|
|
|
|
expected := []string{"`id`", "`user_name`"}
|
|
|
|
assert.Equal(t, expected, out)
|
|
|
|
})
|
|
|
|
}
|