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) }) }