github.com/solongordon/pop@v4.10.0+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  }