github.com/movsb/taorm@v0.0.0-20201209183410-91bafb0b22a6/taorm/registry_test.go (about) 1 package taorm 2 3 import ( 4 "reflect" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 type TableNameType1 struct { 11 } 12 13 func (TableNameType1) TableName() string { 14 return `table_name` 15 } 16 17 type TableNameType2 struct { 18 } 19 20 func (*TableNameType2) TableName() string { 21 return `table_name` 22 } 23 24 func TestGetTableName(t *testing.T) { 25 { 26 name, err := getTableNameFromType(reflect.TypeOf(TableNameType1{})) 27 assert.NoError(t, err) 28 assert.Equal(t, `table_name`, name) 29 } 30 { 31 name, err := getTableNameFromType(reflect.TypeOf(&TableNameType1{})) 32 assert.NoError(t, err) 33 assert.Equal(t, `table_name`, name) 34 } 35 { 36 name, err := getTableNameFromType(reflect.TypeOf(TableNameType2{})) 37 assert.NoError(t, err) 38 assert.Equal(t, `table_name`, name) 39 } 40 { 41 name, err := getTableNameFromType(reflect.TypeOf(&TableNameType2{})) 42 assert.NoError(t, err) 43 assert.Equal(t, `table_name`, name) 44 } 45 } 46 47 type Base struct { 48 ID int64 `taorm:"id"` 49 } 50 51 type Embedded struct { 52 Base 53 Name string `taorm:"name:name"` 54 } 55 56 func TestEmbedded(t *testing.T) { 57 info, err := getRegistered(Embedded{}) 58 if err != nil { 59 t.Fatal(err) 60 } 61 62 names := []string{`id`, `name`} 63 for _, name := range names { 64 if _, ok := info.fields[name]; !ok { 65 t.Fatalf(`name not in fields: %s`, name) 66 } 67 } 68 if len(info.fields) != len(names) { 69 t.Fatalf(`len(names) not equal: %d vs %d`, len(info.fields), len(names)) 70 } 71 }