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 }