builder_test.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package builder
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. )
  6. type mockedUser struct {
  7. ID string `db:"id" json:"id,omitempty"`
  8. UserName string `db:"user_name" json:"userName,omitempty"`
  9. Sex int `db:"sex" json:"sex,omitempty"`
  10. UUID string `db:"uuid" uuid:"uuid,omitempty"`
  11. Age int `db:"age" json:"age"`
  12. }
  13. func TestFieldNames(t *testing.T) {
  14. t.Run("new", func(t *testing.T) {
  15. var u mockedUser
  16. out := RawFieldNames(&u)
  17. expected := []string{"`id`", "`user_name`", "`sex`", "`uuid`", "`age`"}
  18. assert.Equal(t, expected, out)
  19. })
  20. }
  21. type mockedUserWithOptions struct {
  22. ID string `db:"id" json:"id,omitempty"`
  23. UserName string `db:"user_name,type=varchar,length=255" json:"userName,omitempty"`
  24. Sex int `db:"sex" json:"sex,omitempty"`
  25. UUID string `db:",type=varchar,length=16" uuid:"uuid,omitempty"`
  26. Age int `db:"age" json:"age"`
  27. }
  28. func TestFieldNamesWithTagOptions(t *testing.T) {
  29. t.Run("new", func(t *testing.T) {
  30. var u mockedUserWithOptions
  31. out := RawFieldNames(&u)
  32. expected := []string{"`id`", "`user_name`", "`sex`", "`UUID`", "`age`"}
  33. assert.Equal(t, expected, out)
  34. })
  35. }
  36. type mockedUserWithDashTag struct {
  37. ID string `db:"id" json:"id,omitempty"`
  38. UserName string `db:"user_name" json:"userName,omitempty"`
  39. Mobile string `db:"-" json:"mobile,omitempty"`
  40. }
  41. func TestFieldNamesWithDashTag(t *testing.T) {
  42. t.Run("new", func(t *testing.T) {
  43. var u mockedUserWithDashTag
  44. out := RawFieldNames(&u)
  45. expected := []string{"`id`", "`user_name`"}
  46. assert.Equal(t, expected, out)
  47. })
  48. }
  49. type mockedUserWithDashTagAndOptions struct {
  50. ID string `db:"id" json:"id,omitempty"`
  51. UserName string `db:"user_name,type=varchar,length=255" json:"userName,omitempty"`
  52. Mobile string `db:"-,type=varchar,length=255" json:"mobile,omitempty"`
  53. }
  54. func TestFieldNamesWithDashTagAndOptions(t *testing.T) {
  55. t.Run("new", func(t *testing.T) {
  56. var u mockedUserWithDashTagAndOptions
  57. out := RawFieldNames(&u)
  58. expected := []string{"`id`", "`user_name`"}
  59. assert.Equal(t, expected, out)
  60. })
  61. }