github.com/duskeagle/pop@v4.10.1-0.20190417200916-92f2b794aab5+incompatible/model_test.go (about) 1 package pop 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 func Test_Model_TableName(t *testing.T) { 11 r := require.New(t) 12 13 m := Model{Value: User{}} 14 r.Equal(m.TableName(), "users") 15 16 m = Model{Value: &User{}} 17 r.Equal(m.TableName(), "users") 18 19 m = Model{Value: &Users{}} 20 r.Equal(m.TableName(), "users") 21 22 m = Model{Value: []User{}} 23 r.Equal(m.TableName(), "users") 24 25 m = Model{Value: &[]User{}} 26 r.Equal(m.TableName(), "users") 27 28 m = Model{Value: []*User{}} 29 r.Equal(m.TableName(), "users") 30 31 } 32 33 type tn struct{} 34 35 func (tn) TableName() string { 36 return "this is my table name" 37 } 38 39 func Test_TableName(t *testing.T) { 40 r := require.New(t) 41 42 m := Model{Value: tn{}} 43 r.Equal("this is my table name", m.TableName()) 44 } 45 46 func Test_TableName_With_Array(t *testing.T) { 47 r := require.New(t) 48 49 m := Model{Value: []tn{}} 50 r.Equal("this is my table name", m.TableName()) 51 } 52 53 type TimeTimestamp struct { 54 ID int `db:"id"` 55 CreatedAt time.Time `db:"created_at"` 56 UpdatedAt time.Time `db:"updated_at"` 57 } 58 59 type UnixTimestamp struct { 60 ID int `db:"id"` 61 CreatedAt int `db:"created_at"` 62 UpdatedAt int `db:"updated_at"` 63 } 64 65 func Test_Touch_Time_Timestamp(t *testing.T) { 66 r := require.New(t) 67 68 m := Model{Value: &TimeTimestamp{}} 69 m.touchCreatedAt() 70 m.touchUpdatedAt() 71 v := m.Value.(*TimeTimestamp) 72 r.NotZero(v.CreatedAt) 73 r.NotZero(v.UpdatedAt) 74 } 75 76 func Test_Touch_Unix_Timestamp(t *testing.T) { 77 r := require.New(t) 78 79 m := Model{Value: &UnixTimestamp{}} 80 m.touchCreatedAt() 81 m.touchUpdatedAt() 82 v := m.Value.(*UnixTimestamp) 83 r.NotZero(v.CreatedAt) 84 r.NotZero(v.UpdatedAt) 85 }