github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgSql/orm_test.go (about)

     1  package kmgSql
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	. "github.com/bronze1man/kmg/kmgTest"
     8  	"github.com/bronze1man/kmg/kmgTime"
     9  )
    10  
    11  func TestOrmFromRow(t *testing.T) {
    12  	obj, err := OrmFromRow(&KmgSqlTestType{}, map[string]string{
    13  		"Id":       "1",
    14  		"Name":     "abc",
    15  		"TimeDate": "2001-01-01",
    16  		"Time":     "2001-01-01 01:01:01",
    17  	})
    18  	Equal(err, nil)
    19  	objTest := obj.(*KmgSqlTestType)
    20  	Equal(err, nil)
    21  	Equal(objTest.Id, 1)
    22  	Equal(objTest.Name, "abc")
    23  	Equal(objTest.TimeDate, kmgTime.MustFromMysqlFormatDefaultTZ("2001-01-01 00:00:00"))
    24  	Equal(objTest.Time, kmgTime.MustFromMysqlFormatDefaultTZ("2001-01-01 01:01:01"))
    25  }
    26  func TestOrmToRow(t *testing.T) {
    27  	m, err := OrmToRow(&KmgSqlTestType{
    28  		Id:       2,
    29  		Name:     "edf",
    30  		TimeDate: kmgTime.MustFromMysqlFormatDefaultTZ("2001-01-01 00:00:00"),
    31  		Time:     kmgTime.MustFromMysqlFormatDefaultTZ("2001-01-01 01:01:01"),
    32  	})
    33  	Equal(err, nil)
    34  	Equal(m["Id"], "2")
    35  	Equal(m["Name"], "edf")
    36  	Equal(m["TimeDate"], "2001-01-01 00:00:00")
    37  	Equal(m["Time"], "2001-01-01 01:01:01")
    38  }
    39  
    40  func TestOrmPersistUpdate(t *testing.T) {
    41  	setTestOrmTable()
    42  	obj, err := OrmFromRow(&KmgSqlTestType{}, map[string]string{
    43  		"Id":   "1",
    44  		"Name": "Jack",
    45  	})
    46  	Equal(err, nil)
    47  	id, err := OrmPersist(obj)
    48  	Equal(err, nil)
    49  	Equal(id, 1)
    50  	one, err := GetOneWhere(obj.GetTableName(), obj.GetIdFieldName(), "1")
    51  	Equal(err, nil)
    52  	obj, err = OrmFromRow(&KmgSqlTestType{}, one)
    53  	Equal(err, nil)
    54  	objTest := obj.(*KmgSqlTestType)
    55  	Equal(objTest.Name, "Jack")
    56  	Equal(objTest.Id, 1)
    57  }
    58  
    59  func TestOrmPersistInsert(t *testing.T) {
    60  	setTestOrmTable()
    61  	obj, err := OrmFromRow(&KmgSqlTestType{}, map[string]string{
    62  		"Name": "Lucy",
    63  	})
    64  	Equal(err, nil)
    65  	id, err := OrmPersist(obj)
    66  	Equal(err, nil)
    67  	Equal(id, 2)
    68  	one, err := GetOneWhere(obj.GetTableName(), "Name", "Lucy")
    69  	Equal(err, nil)
    70  	obj, err = OrmFromRow(&KmgSqlTestType{}, one)
    71  	Equal(err, nil)
    72  	objTest := obj.(*KmgSqlTestType)
    73  	Equal(objTest.Name, "Lucy")
    74  	Equal(objTest.Id, 2)
    75  }
    76  
    77  type KmgSqlTestType struct {
    78  	Id       int
    79  	Name     string
    80  	TimeDate time.Time
    81  	Time     time.Time
    82  }
    83  
    84  func (t *KmgSqlTestType) GetIdFieldName() string {
    85  	return "Id"
    86  }
    87  func (t *KmgSqlTestType) GetTableName() string {
    88  	return "kmgSql_test_table"
    89  }
    90  
    91  func setTestOrmTable() {
    92  	_, err := Exec("DROP TABLE IF EXISTS `kmgSql_test_table`")
    93  	Equal(err, nil)
    94  	_, err = Exec("CREATE TABLE `kmgSql_test_table` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Name` varchar(255) COLLATE utf8_bin DEFAULT NULL, `Time` datetime NOT NULL,`TimeDate` datetime NOT NULL,PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin")
    95  	Equal(err, nil)
    96  	err = GetDb().SetTablesDataYaml(`
    97  kmgSql_test_table:
    98    - Id: 1
    99      Name: Tom
   100      Time: "2015-01-12 09:23:59"
   101  `)
   102  	Equal(err, nil)
   103  }