From 651d09748985bcb26a27a589b7f77ba968e06779 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 13 Mar 2019 19:12:00 +0800 Subject: [PATCH 01/12] improve tests --- .circleci/config.yml | 6 ++ session_update_test.go | 203 ++++++++--------------------------------- 2 files changed, 42 insertions(+), 167 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c8f64282..7f681029 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -44,8 +44,14 @@ jobs: - run: go test -v -race -db="sqlite3" -conn_str="./test.db" -coverprofile=coverage1-1.txt -covermode=atomic - run: go test -v -race -db="sqlite3" -conn_str="./test.db" -cache=true -coverprofile=coverage1-2.txt -covermode=atomic + - run: go test -v -race -db="sqlite3" -conn_str="./test.db" -map_type=same -coverprofile=coverage1-3.txt -covermode=atomic + - run: go test -v -race -db="sqlite3" -conn_str="./test.db" -map_type=same -cache=true -coverprofile=coverage1-4.txt -covermode=atomic + - run: go test -v -race -db="mysql" -conn_str="root:@/xorm_test" -coverprofile=coverage2-1.txt -covermode=atomic - run: go test -v -race -db="mysql" -conn_str="root:@/xorm_test" -cache=true -coverprofile=coverage2-2.txt -covermode=atomic + - run: go test -v -race -db="mysql" -conn_str="root:@/xorm_test" -map_type=same -coverprofile=coverage2-1.txt -covermode=atomic + - run: go test -v -race -db="mysql" -conn_str="root:@/xorm_test" -map_type=same -cache=true -coverprofile=coverage2-2.txt -covermode=atomic + - run: go test -v -race -db="mymysql" -conn_str="xorm_test/root/" -coverprofile=coverage3-1.txt -covermode=atomic - run: go test -v -race -db="mymysql" -conn_str="xorm_test/root/" -cache=true -coverprofile=coverage3-2.txt -covermode=atomic - run: go test -v -race -db="postgres" -conn_str="dbname=xorm_test sslmode=disable" -coverprofile=coverage4-1.txt -covermode=atomic diff --git a/session_update_test.go b/session_update_test.go index c90ec5bd..a0a98469 100644 --- a/session_update_test.go +++ b/session_update_test.go @@ -271,10 +271,7 @@ func TestUpdateMap2(t *testing.T) { _, err := testEngine.Table("update_must_cols").Where("id =?", 1).Update(map[string]interface{}{ "bool": true, }) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) } func TestUpdate1(t *testing.T) { @@ -287,70 +284,34 @@ func TestUpdate1(t *testing.T) { var ori Userinfo has, err := testEngine.Get(&ori) - if err != nil { - t.Error(err) - panic(err) - } - if !has { - t.Error(errors.New("not exist")) - panic(errors.New("not exist")) - } + assert.NoError(t, err) + assert.True(t, has) // update by id user := Userinfo{Username: "xxx", Height: 1.2} cnt, err := testEngine.ID(ori.Uid).Update(&user) - if err != nil { - t.Error(err) - panic(err) - } - if cnt != 1 { - err = errors.New("update not returned 1") - t.Error(err) - panic(err) - return - } + assert.NoError(t, err) + assert.EqualValues(t, 1, cnt) condi := Condi{"username": "zzz", "departname": ""} cnt, err = testEngine.Table(&user).ID(ori.Uid).Update(&condi) - if err != nil { - t.Error(err) - panic(err) - } - if cnt != 1 { - err = errors.New("update not returned 1") - t.Error(err) - panic(err) - return - } + assert.NoError(t, err) + assert.EqualValues(t, 1, cnt) cnt, err = testEngine.Update(&Userinfo{Username: "yyy"}, &user) - if err != nil { - t.Error(err) - panic(err) - } - total, err := testEngine.Count(&user) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) - if cnt != total { - err = errors.New("insert not returned 1") - t.Error(err) - panic(err) - return - } + total, err := testEngine.Count(&user) + assert.NoError(t, err) + assert.EqualValues(t, total, cnt) // nullable update { user := &Userinfo{Username: "not null data", Height: 180.5} _, err := testEngine.Insert(user) - if err != nil { - t.Error(err) - panic(err) - } - userID := user.Uid + assert.NoError(t, err) + userID := user.Uid has, err := testEngine.ID(userID). And("username = ?", user.Username). And("height = ?", user.Height). @@ -358,29 +319,15 @@ func TestUpdate1(t *testing.T) { And("detail_id = ?", 0). And("is_man = ?", 0). Get(&Userinfo{}) - if err != nil { - t.Error(err) - panic(err) - } - if !has { - err = errors.New("cannot insert properly") - t.Error(err) - panic(err) - } + assert.NoError(t, err) + assert.True(t, has) updatedUser := &Userinfo{Username: "null data"} cnt, err = testEngine.ID(userID). Nullable("height", "departname", "is_man", "created"). Update(updatedUser) - if err != nil { - t.Error(err) - panic(err) - } - if cnt != 1 { - err = errors.New("update not returned 1") - t.Error(err) - panic(err) - } + assert.NoError(t, err) + assert.EqualValues(t, 1, cnt) has, err = testEngine.ID(userID). And("username = ?", updatedUser.Username). @@ -390,73 +337,31 @@ func TestUpdate1(t *testing.T) { And("created IS NULL"). And("detail_id = ?", 0). Get(&Userinfo{}) - if err != nil { - t.Error(err) - panic(err) - } - if !has { - err = errors.New("cannot update with null properly") - t.Error(err) - panic(err) - } + assert.NoError(t, err) + assert.True(t, has) cnt, err = testEngine.ID(userID).Delete(&Userinfo{}) - if err != nil { - t.Error(err) - panic(err) - } - if cnt != 1 { - err = errors.New("delete not returned 1") - t.Error(err) - panic(err) - } + assert.NoError(t, err) + assert.EqualValues(t, 1, cnt) } err = testEngine.StoreEngine("Innodb").Sync2(&Article{}) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) defer func() { err = testEngine.DropTables(&Article{}) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) }() a := &Article{0, "1", "2", "3", "4", "5", 2} cnt, err = testEngine.Insert(a) - if err != nil { - t.Error(err) - panic(err) - } - - if cnt != 1 { - err = errors.New(fmt.Sprintf("insert not returned 1 but %d", cnt)) - t.Error(err) - panic(err) - } - - if a.Id == 0 { - err = errors.New("insert returned id is 0") - t.Error(err) - panic(err) - } + assert.NoError(t, err) + assert.EqualValues(t, 1, cnt) + assert.True(t, a.Id > 0) cnt, err = testEngine.ID(a.Id).Update(&Article{Name: "6"}) - if err != nil { - t.Error(err) - panic(err) - } - - if cnt != 1 { - err = errors.New(fmt.Sprintf("insert not returned 1 but %d", cnt)) - t.Error(err) - panic(err) - return - } + assert.NoError(t, err) + assert.EqualValues(t, 1, cnt) var s = "test" @@ -474,65 +379,29 @@ func TestUpdate1(t *testing.T) { col3 := &UpdateAllCols{} has, err = testEngine.ID(col2.Id).Get(col3) assert.NoError(t, err) - - if !has { - err = errors.New(fmt.Sprintf("cannot get id %d", col2.Id)) - t.Error(err) - panic(err) - return - } - - if *col2 != *col3 { - err = errors.New(fmt.Sprintf("col2 should eq col3")) - t.Error(err) - panic(err) - return - } + assert.True(t, has) + assert.EqualValues(t, *col3, *col2) { col1 := &UpdateMustCols{} err = testEngine.Sync(col1) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) _, err = testEngine.Insert(col1) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) col2 := &UpdateMustCols{col1.Id, true, ""} boolStr := testEngine.GetColumnMapper().Obj2Table("Bool") stringStr := testEngine.GetColumnMapper().Obj2Table("String") _, err = testEngine.ID(col2.Id).MustCols(boolStr, stringStr).Update(col2) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) col3 := &UpdateMustCols{} has, err := testEngine.ID(col2.Id).Get(col3) - if err != nil { - t.Error(err) - panic(err) - } - - if !has { - err = errors.New(fmt.Sprintf("cannot get id %d", col2.Id)) - t.Error(err) - panic(err) - return - } - - if *col2 != *col3 { - err = errors.New(fmt.Sprintf("col2 should eq col3")) - t.Error(err) - panic(err) - return - } + assert.NoError(t, err) + assert.True(t, has) + assert.EqualValues(t, *col3, *col2) } } From a80ed3073683b03f5ebc9bc2e97e50b307607840 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 13 Mar 2019 20:37:15 +0800 Subject: [PATCH 02/12] fix tests --- .circleci/config.yml | 6 +- cache_test.go | 8 ++- session_cond_test.go | 24 ++++---- session_exist_test.go | 12 ++-- session_find_test.go | 90 +++++++++++++++------------ session_get_test.go | 65 +++++++++++-------- session_insert_test.go | 6 +- session_query_test.go | 137 ++++++++++++++++++++++++++++------------- session_raw_test.go | 12 ++-- session_schema_test.go | 22 ++++--- session_stats_test.go | 18 ++++-- session_update_test.go | 77 ++++++++++++++--------- statement_test.go | 4 +- tag_test.go | 8 ++- xorm_test.go | 11 +++- 15 files changed, 315 insertions(+), 185 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 7f681029..c7a8d6a9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -49,8 +49,8 @@ jobs: - run: go test -v -race -db="mysql" -conn_str="root:@/xorm_test" -coverprofile=coverage2-1.txt -covermode=atomic - run: go test -v -race -db="mysql" -conn_str="root:@/xorm_test" -cache=true -coverprofile=coverage2-2.txt -covermode=atomic - - run: go test -v -race -db="mysql" -conn_str="root:@/xorm_test" -map_type=same -coverprofile=coverage2-1.txt -covermode=atomic - - run: go test -v -race -db="mysql" -conn_str="root:@/xorm_test" -map_type=same -cache=true -coverprofile=coverage2-2.txt -covermode=atomic + - run: go test -v -race -db="mysql" -conn_str="root:@/xorm_test" -map_type=same -coverprofile=coverage2-3.txt -covermode=atomic + - run: go test -v -race -db="mysql" -conn_str="root:@/xorm_test" -map_type=same -cache=true -coverprofile=coverage2-4.txt -covermode=atomic - run: go test -v -race -db="mymysql" -conn_str="xorm_test/root/" -coverprofile=coverage3-1.txt -covermode=atomic - run: go test -v -race -db="mymysql" -conn_str="xorm_test/root/" -cache=true -coverprofile=coverage3-2.txt -covermode=atomic @@ -62,6 +62,6 @@ jobs: - run: go test -v -race -db="mssql" -conn_str="server=localhost;user id=sa;password=yourStrong(!)Password;database=xorm_test" -cache=true -coverprofile=coverage6-2.txt -covermode=atomic - run: go test -v -race -db="mysql" -conn_str="root:@tcp(localhost:4000)/xorm_test" -ignore_select_update=true -coverprofile=coverage7-1.txt -covermode=atomic - run: go test -v -race -db="mysql" -conn_str="root:@tcp(localhost:4000)/xorm_test" -ignore_select_update=true -cache=true -coverprofile=coverage7-2.txt -covermode=atomic - - run: gocovmerge coverage1-1.txt coverage1-2.txt coverage2-1.txt coverage2-2.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt coverage6-1.txt coverage6-2.txt coverage7-1.txt coverage7-2.txt > coverage.txt + - run: gocovmerge coverage1-1.txt coverage1-2.txt coverage1-3.txt coverage1-4.txt coverage2-1.txt coverage2-2.txt coverage2-3.txt coverage2-4.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt coverage6-1.txt coverage6-2.txt coverage7-1.txt coverage7-2.txt > coverage.txt - run: bash <(curl -s https://codecov.io/bash) \ No newline at end of file diff --git a/cache_test.go b/cache_test.go index 26d7ac68..dbfa28e2 100644 --- a/cache_test.go +++ b/cache_test.go @@ -59,8 +59,10 @@ func TestCacheFind(t *testing.T) { assert.Equal(t, inserts[i].Password, box.Password) } + idName := mapper.Obj2Table("Id") + boxes = make([]MailBox, 0, 2) - assert.NoError(t, testEngine.Alias("a").Where("a.id > -1").Asc("a.id").Find(&boxes)) + assert.NoError(t, testEngine.Alias("a").Where("a."+idName+" > -1").Asc("a."+idName).Find(&boxes)) assert.EqualValues(t, 2, len(boxes)) for i, box := range boxes { assert.Equal(t, inserts[i].Id, box.Id) @@ -74,8 +76,10 @@ func TestCacheFind(t *testing.T) { Password string } + tableName := mapper.Obj2Table("MailBox") + boxes2 := make([]MailBox4, 0, 2) - assert.NoError(t, testEngine.Table("mail_box").Where("mail_box.id > -1").Asc("mail_box.id").Find(&boxes2)) + assert.NoError(t, testEngine.Table(tableName).Where(tableName+"."+idName+" > -1").Asc(tableName+"."+idName).Find(&boxes2)) assert.EqualValues(t, 2, len(boxes2)) for i, box := range boxes2 { assert.Equal(t, inserts[i].Id, box.Id) diff --git a/session_cond_test.go b/session_cond_test.go index 10650484..6fd83293 100644 --- a/session_cond_test.go +++ b/session_cond_test.go @@ -36,25 +36,27 @@ func TestBuilder(t *testing.T) { _, err = testEngine.Insert(&Condition{TableName: "table1", ColName: "col1", Op: OpEqual, Value: "1"}) assert.NoError(t, err) + colNameName := mapper.Obj2Table("ColName") + var cond Condition - has, err := testEngine.Where(builder.Eq{"col_name": "col1"}).Get(&cond) + has, err := testEngine.Where(builder.Eq{colNameName: "col1"}).Get(&cond) assert.NoError(t, err) assert.Equal(t, true, has, "records should exist") - has, err = testEngine.Where(builder.Eq{"col_name": "col1"}. + has, err = testEngine.Where(builder.Eq{colNameName: "col1"}. And(builder.Eq{"op": OpEqual})). NoAutoCondition(). Get(&cond) assert.NoError(t, err) assert.Equal(t, true, has, "records should exist") - has, err = testEngine.Where(builder.Eq{"col_name": "col1", "op": OpEqual, "value": "1"}). + has, err = testEngine.Where(builder.Eq{colNameName: "col1", "op": OpEqual, "value": "1"}). NoAutoCondition(). Get(&cond) assert.NoError(t, err) assert.Equal(t, true, has, "records should exist") - has, err = testEngine.Where(builder.Eq{"col_name": "col1"}. + has, err = testEngine.Where(builder.Eq{colNameName: "col1"}. And(builder.Neq{"op": OpEqual})). NoAutoCondition(). Get(&cond) @@ -62,37 +64,37 @@ func TestBuilder(t *testing.T) { assert.Equal(t, false, has, "records should not exist") var conds []Condition - err = testEngine.Where(builder.Eq{"col_name": "col1"}. + err = testEngine.Where(builder.Eq{colNameName: "col1"}. And(builder.Eq{"op": OpEqual})). Find(&conds) assert.NoError(t, err) assert.EqualValues(t, 1, len(conds), "records should exist") conds = make([]Condition, 0) - err = testEngine.Where(builder.Like{"col_name", "col"}).Find(&conds) + err = testEngine.Where(builder.Like{colNameName, "col"}).Find(&conds) assert.NoError(t, err) assert.EqualValues(t, 1, len(conds), "records should exist") conds = make([]Condition, 0) - err = testEngine.Where(builder.Expr("col_name = ?", "col1")).Find(&conds) + err = testEngine.Where(builder.Expr(colNameName+" = ?", "col1")).Find(&conds) assert.NoError(t, err) assert.EqualValues(t, 1, len(conds), "records should exist") conds = make([]Condition, 0) - err = testEngine.Where(builder.In("col_name", "col1", "col2")).Find(&conds) + err = testEngine.Where(builder.In(colNameName, "col1", "col2")).Find(&conds) assert.NoError(t, err) assert.EqualValues(t, 1, len(conds), "records should exist") conds = make([]Condition, 0) - err = testEngine.NotIn("col_name", "col1", "col2").Find(&conds) + err = testEngine.NotIn(colNameName, "col1", "col2").Find(&conds) assert.NoError(t, err) assert.EqualValues(t, 0, len(conds), "records should not exist") // complex condtions var where = builder.NewCond() if true { - where = where.And(builder.Eq{"col_name": "col1"}) - where = where.Or(builder.And(builder.In("col_name", "col1", "col2"), builder.Expr("col_name = ?", "col1"))) + where = where.And(builder.Eq{colNameName: "col1"}) + where = where.Or(builder.And(builder.In(colNameName, "col1", "col2"), builder.Expr(colNameName+" = ?", "col1"))) } conds = make([]Condition, 0) diff --git a/session_exist_test.go b/session_exist_test.go index 9d985771..3bc15b3a 100644 --- a/session_exist_test.go +++ b/session_exist_test.go @@ -54,23 +54,25 @@ func TestExistStruct(t *testing.T) { assert.NoError(t, err) assert.False(t, has) - has, err = testEngine.SQL("select * from "+testEngine.TableName("record_exist", true)+" where name = ?", "test1").Exist() + tableName := mapper.Obj2Table("RecordExist") + + has, err = testEngine.SQL("select * from "+testEngine.TableName(tableName, true)+" where name = ?", "test1").Exist() assert.NoError(t, err) assert.True(t, has) - has, err = testEngine.SQL("select * from "+testEngine.TableName("record_exist", true)+" where name = ?", "test2").Exist() + has, err = testEngine.SQL("select * from "+testEngine.TableName(tableName, true)+" where name = ?", "test2").Exist() assert.NoError(t, err) assert.False(t, has) - has, err = testEngine.Table("record_exist").Exist() + has, err = testEngine.Table(tableName).Exist() assert.NoError(t, err) assert.True(t, has) - has, err = testEngine.Table("record_exist").Where("name = ?", "test1").Exist() + has, err = testEngine.Table(tableName).Where("name = ?", "test1").Exist() assert.NoError(t, err) assert.True(t, has) - has, err = testEngine.Table("record_exist").Where("name = ?", "test2").Exist() + has, err = testEngine.Table(tableName).Where("name = ?", "test2").Exist() assert.NoError(t, err) assert.False(t, has) } diff --git a/session_find_test.go b/session_find_test.go index f805f06e..2f89ad9b 100644 --- a/session_find_test.go +++ b/session_find_test.go @@ -53,10 +53,12 @@ func TestJoinLimit(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 1, cnt) + tableName := mapper.Obj2Table("CheckList") + var salaries []Salary err = testEngine.Table("salary"). - Join("INNER", "check_list", "check_list.id = salary.lid"). - Join("LEFT", "empsetting", "empsetting.id = check_list.eid"). + Join("INNER", tableName, tableName+".id = salary.lid"). + Join("LEFT", "empsetting", "empsetting.id = "+tableName+".eid"). Limit(10, 0). Find(&salaries) assert.NoError(t, err) @@ -133,7 +135,7 @@ type TeamUser struct { } func (TeamUser) TableName() string { - return "team_user" + return mapper.Obj2Table("TeamUser") } func TestFind3(t *testing.T) { @@ -142,51 +144,58 @@ func TestFind3(t *testing.T) { err := testEngine.Sync2(new(Team), teamUser) assert.NoError(t, err) + tableName := mapper.Obj2Table("TeamUser") + teamTableName := mapper.Obj2Table("Team") + idName := mapper.Obj2Table("Id") + orgIDName := mapper.Obj2Table("OrgId") + uidName := mapper.Obj2Table("Uid") + teamIDName := mapper.Obj2Table("TeamId") + var teams []Team - err = testEngine.Cols("`team`.id"). - Where("`team_user`.org_id=?", 1). - And("`team_user`.uid=?", 2). - Join("INNER", "`team_user`", "`team_user`.team_id=`team`.id"). + err = testEngine.Cols("`"+teamTableName+"`."+idName). + Where("`"+tableName+"`."+orgIDName+"=?", 1). + And("`"+tableName+"`."+uidName+"=?", 2). + Join("INNER", "`"+tableName+"`", "`"+tableName+"`."+teamIDName+"=`"+teamTableName+"`."+idName). Find(&teams) assert.NoError(t, err) teams = make([]Team, 0) - err = testEngine.Cols("`team`.id"). - Where("`team_user`.org_id=?", 1). - And("`team_user`.uid=?", 2). - Join("INNER", teamUser, "`team_user`.team_id=`team`.id"). + err = testEngine.Cols("`"+teamTableName+"`."+idName). + Where("`"+tableName+"`."+orgIDName+"=?", 1). + And("`"+tableName+"`."+uidName+"=?", 2). + Join("INNER", teamUser, "`"+tableName+"`."+teamIDName+"=`"+teamTableName+"`."+idName). Find(&teams) assert.NoError(t, err) teams = make([]Team, 0) - err = testEngine.Cols("`team`.id"). - Where("`team_user`.org_id=?", 1). - And("`team_user`.uid=?", 2). - Join("INNER", []interface{}{teamUser}, "`team_user`.team_id=`team`.id"). + err = testEngine.Cols("`"+teamTableName+"`."+idName). + Where("`"+tableName+"`."+orgIDName+"=?", 1). + And("`"+tableName+"`."+uidName+"=?", 2). + Join("INNER", []interface{}{teamUser}, "`"+tableName+"`."+teamIDName+"=`"+teamTableName+"`."+idName). Find(&teams) assert.NoError(t, err) teams = make([]Team, 0) - err = testEngine.Cols("`team`.id"). - Where("`tu`.org_id=?", 1). - And("`tu`.uid=?", 2). - Join("INNER", []string{"team_user", "tu"}, "`tu`.team_id=`team`.id"). + err = testEngine.Cols("`"+teamTableName+"`.id"). + Where("`tu`."+orgIDName+"=?", 1). + And("`tu`."+uidName+"=?", 2). + Join("INNER", []string{tableName, "tu"}, "`tu`."+teamIDName+"=`"+teamTableName+"`."+idName). Find(&teams) assert.NoError(t, err) teams = make([]Team, 0) - err = testEngine.Cols("`team`.id"). - Where("`tu`.org_id=?", 1). - And("`tu`.uid=?", 2). - Join("INNER", []interface{}{"team_user", "tu"}, "`tu`.team_id=`team`.id"). + err = testEngine.Cols("`"+teamTableName+"`."+idName). + Where("`tu`."+orgIDName+"=?", 1). + And("`tu`."+uidName+"=?", 2). + Join("INNER", []interface{}{tableName, "tu"}, "`tu`."+teamIDName+"=`"+teamTableName+"`."+idName). Find(&teams) assert.NoError(t, err) teams = make([]Team, 0) - err = testEngine.Cols("`team`.id"). - Where("`tu`.org_id=?", 1). - And("`tu`.uid=?", 2). - Join("INNER", []interface{}{teamUser, "tu"}, "`tu`.team_id=`team`.id"). + err = testEngine.Cols("`"+teamTableName+"`."+idName). + Where("`tu`."+orgIDName+"=?", 1). + And("`tu`."+uidName+"=?", 2). + Join("INNER", []interface{}{teamUser, "tu"}, "`tu`."+teamIDName+"=`"+teamTableName+"`."+idName). Find(&teams) assert.NoError(t, err) } @@ -197,10 +206,8 @@ func TestFindMap(t *testing.T) { users := make(map[int64]Userinfo) err := testEngine.Find(&users) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) + for _, user := range users { fmt.Println(user) } @@ -212,10 +219,8 @@ func TestFindMap2(t *testing.T) { users := make(map[int64]*Userinfo) err := testEngine.Find(&users) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) + for id, user := range users { fmt.Println(id, user) } @@ -791,13 +796,20 @@ func TestFindJoin(t *testing.T) { assert.NoError(t, prepareEngine()) assertSync(t, new(SceneItem), new(DeviceUserPrivrels)) + tableName1 := mapper.Obj2Table("SceneItem") + tableName2 := mapper.Obj2Table("DeviceUserPrivrels") + + deviceIDName := mapper.Obj2Table("DeviceId") + userIDName := mapper.Obj2Table("UserId") + typeName := mapper.Obj2Table("Type") + var scenes []SceneItem - err := testEngine.Join("LEFT OUTER", "device_user_privrels", "device_user_privrels.device_id=scene_item.device_id"). - Where("scene_item.type=?", 3).Or("device_user_privrels.user_id=?", 339).Find(&scenes) + err := testEngine.Join("LEFT OUTER", tableName2, tableName1+"."+deviceIDName+"="+tableName2+"."+deviceIDName). + Where(tableName1+"."+typeName+"=?", 3).Or(tableName2+"."+userIDName+"=?", 339).Find(&scenes) assert.NoError(t, err) scenes = make([]SceneItem, 0) - err = testEngine.Join("LEFT OUTER", new(DeviceUserPrivrels), "device_user_privrels.device_id=scene_item.device_id"). - Where("scene_item.type=?", 3).Or("device_user_privrels.user_id=?", 339).Find(&scenes) + err = testEngine.Join("LEFT OUTER", new(DeviceUserPrivrels), tableName1+"."+deviceIDName+"="+tableName2+"."+deviceIDName). + Where(tableName1+"."+typeName+"=?", 3).Or(tableName2+"."+userIDName+"=?", 339).Find(&scenes) assert.NoError(t, err) } diff --git a/session_get_test.go b/session_get_test.go index f93068c8..e7e40b8a 100644 --- a/session_get_test.go +++ b/session_get_test.go @@ -35,14 +35,16 @@ func TestGetVar(t *testing.T) { _, err := testEngine.InsertOne(&data) assert.NoError(t, err) + tableName := mapper.Obj2Table("GetVar") + var msg string - has, err := testEngine.Table("get_var").Cols("msg").Get(&msg) + has, err := testEngine.Table(tableName).Cols("msg").Get(&msg) assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, "hi", msg) var age int - has, err = testEngine.Table("get_var").Cols("age").Get(&age) + has, err = testEngine.Table(tableName).Cols("age").Get(&age) assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, 28, age) @@ -54,7 +56,7 @@ func TestGetVar(t *testing.T) { assert.Equal(t, 28, ageMax) var age2 int64 - has, err = testEngine.Table("get_var").Cols("age"). + has, err = testEngine.Table(tableName).Cols("age"). Where("age > ?", 20). And("age < ?", 30). Get(&age2) @@ -126,72 +128,77 @@ func TestGetVar(t *testing.T) { assert.EqualValues(t, 28, age10) var id sql.NullInt64 - has, err = testEngine.Table("get_var").Cols("id").Get(&id) + has, err = testEngine.Table(tableName).Cols("id").Get(&id) assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, true, id.Valid) assert.EqualValues(t, data.Id, id.Int64) var msgNull sql.NullString - has, err = testEngine.Table("get_var").Cols("msg").Get(&msgNull) + has, err = testEngine.Table(tableName).Cols("msg").Get(&msgNull) assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, true, msgNull.Valid) assert.EqualValues(t, data.Msg, msgNull.String) var nullMoney sql.NullFloat64 - has, err = testEngine.Table("get_var").Cols("money").Get(&nullMoney) + has, err = testEngine.Table(tableName).Cols("money").Get(&nullMoney) assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, true, nullMoney.Valid) assert.EqualValues(t, data.Money, nullMoney.Float64) var money float64 - has, err = testEngine.Table("get_var").Cols("money").Get(&money) + has, err = testEngine.Table(tableName).Cols("money").Get(&money) assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, "1.5", fmt.Sprintf("%.1f", money)) var money2 float64 if testEngine.Dialect().DBType() == core.MSSQL { - has, err = testEngine.SQL("SELECT TOP 1 money FROM " + testEngine.TableName("get_var", true)).Get(&money2) + has, err = testEngine.SQL("SELECT TOP 1 money FROM " + testEngine.TableName(tableName, true)).Get(&money2) } else { - has, err = testEngine.SQL("SELECT money FROM " + testEngine.TableName("get_var", true) + " LIMIT 1").Get(&money2) + has, err = testEngine.SQL("SELECT money FROM " + testEngine.TableName(tableName, true) + " LIMIT 1").Get(&money2) } assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, "1.5", fmt.Sprintf("%.1f", money2)) var money3 float64 - has, err = testEngine.SQL("SELECT money FROM " + testEngine.TableName("get_var", true) + " WHERE money > 20").Get(&money3) + has, err = testEngine.SQL("SELECT money FROM " + testEngine.TableName(tableName, true) + " WHERE money > 20").Get(&money3) assert.NoError(t, err) assert.Equal(t, false, has) + idName := mapper.Obj2Table("Id") + ageName := mapper.Obj2Table("Age") + msgName := mapper.Obj2Table("Msg") + moneyName := mapper.Obj2Table("Money") + var valuesString = make(map[string]string) - has, err = testEngine.Table("get_var").Get(&valuesString) + has, err = testEngine.Table(tableName).Get(&valuesString) assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, 5, len(valuesString)) - assert.Equal(t, "1", valuesString["id"]) - assert.Equal(t, "hi", valuesString["msg"]) - assert.Equal(t, "28", valuesString["age"]) - assert.Equal(t, "1.5", valuesString["money"]) + assert.Equal(t, "1", valuesString[idName]) + assert.Equal(t, "hi", valuesString[msgName]) + assert.Equal(t, "28", valuesString[ageName]) + assert.Equal(t, "1.5", valuesString[moneyName]) // for mymysql driver, interface{} will be []byte, so ignore it currently if testEngine.Dialect().DriverName() != "mymysql" { var valuesInter = make(map[string]interface{}) - has, err = testEngine.Table("get_var").Where("id = ?", 1).Select("*").Get(&valuesInter) + has, err = testEngine.Table(tableName).Where(idName+" = ?", 1).Select("*").Get(&valuesInter) assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, 5, len(valuesInter)) - assert.EqualValues(t, 1, valuesInter["id"]) - assert.Equal(t, "hi", fmt.Sprintf("%s", valuesInter["msg"])) - assert.EqualValues(t, 28, valuesInter["age"]) - assert.Equal(t, "1.5", fmt.Sprintf("%v", valuesInter["money"])) + assert.EqualValues(t, 1, valuesInter[idName]) + assert.Equal(t, "hi", fmt.Sprintf("%s", valuesInter[msgName])) + assert.EqualValues(t, 28, valuesInter[ageName]) + assert.Equal(t, "1.5", fmt.Sprintf("%v", valuesInter[moneyName])) } var valuesSliceString = make([]string, 5) - has, err = testEngine.Table("get_var").Get(&valuesSliceString) + has, err = testEngine.Table(tableName).Get(&valuesSliceString) assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, "1", valuesSliceString[0]) @@ -200,7 +207,7 @@ func TestGetVar(t *testing.T) { assert.Equal(t, "1.5", valuesSliceString[3]) var valuesSliceInter = make([]interface{}, 5) - has, err = testEngine.Table("get_var").Get(&valuesSliceInter) + has, err = testEngine.Table(tableName).Get(&valuesSliceInter) assert.NoError(t, err) assert.Equal(t, true, has) @@ -329,15 +336,17 @@ func TestJSONString(t *testing.T) { }) assert.NoError(t, err) + tableName := mapper.Obj2Table("JsonJson") + var js JsonString - has, err := testEngine.Table("json_json").Get(&js) + has, err := testEngine.Table(tableName).Get(&js) assert.NoError(t, err) assert.True(t, has) assert.EqualValues(t, 1, js.Id) assert.EqualValues(t, `["1","2"]`, js.Content) var jss []JsonString - err = testEngine.Table("json_json").Find(&jss) + err = testEngine.Table(tableName).Find(&jss) assert.NoError(t, err) assert.EqualValues(t, 1, len(jss)) assert.EqualValues(t, `["1","2"]`, jss[0].Content) @@ -366,9 +375,12 @@ func TestGetActionMapping(t *testing.T) { }) assert.NoError(t, err) + scriptIdName := mapper.Obj2Table("ScriptId") + rollbackIdName := mapper.Obj2Table("RollbackId") + var valuesSlice = make([]string, 2) has, err := testEngine.Table(new(ActionMapping)). - Cols("script_id", "rollback_id"). + Cols(scriptIdName, rollbackIdName). ID("1").Get(&valuesSlice) assert.NoError(t, err) assert.True(t, has) @@ -393,9 +405,10 @@ func TestGetStructId(t *testing.T) { Id int64 } + idName := mapper.Obj2Table("Id") //var id int64 var maxid maxidst - sql := "select max(id) as id from " + testEngine.TableName(&TestGetStruct{}, true) + sql := "select max(" + idName + ") as id from " + testEngine.TableName(&TestGetStruct{}, true) has, err := testEngine.SQL(sql).Get(&maxid) assert.NoError(t, err) assert.True(t, has) diff --git a/session_insert_test.go b/session_insert_test.go index 2785401d..262badf3 100644 --- a/session_insert_test.go +++ b/session_insert_test.go @@ -783,7 +783,9 @@ func TestInsertMap(t *testing.T) { assert.EqualValues(t, 10, im.Height) assert.EqualValues(t, "lunny", im.Name) - cnt, err = testEngine.Table("insert_map").Insert(map[string]interface{}{ + tableName := mapper.Obj2Table("InsertMap") + + cnt, err = testEngine.Table(tableName).Insert(map[string]interface{}{ "width": 30, "height": 10, "name": "lunny", @@ -802,7 +804,7 @@ func TestInsertMap(t *testing.T) { assert.EqualValues(t, 10, ims[1].Height) assert.EqualValues(t, "lunny", ims[1].Name) - cnt, err = testEngine.Table("insert_map").Insert([]map[string]interface{}{ + cnt, err = testEngine.Table(tableName).Insert([]map[string]interface{}{ { "width": 40, "height": 10, diff --git a/session_query_test.go b/session_query_test.go index 772206a8..da4b6465 100644 --- a/session_query_test.go +++ b/session_query_test.go @@ -37,14 +37,22 @@ func TestQueryString(t *testing.T) { _, err := testEngine.InsertOne(data) assert.NoError(t, err) - records, err := testEngine.QueryString("select * from " + testEngine.TableName("get_var2", true)) + tableName := mapper.Obj2Table("GetVar2") + + records, err := testEngine.QueryString("select * from " + testEngine.TableName(tableName, true)) assert.NoError(t, err) assert.Equal(t, 1, len(records)) assert.Equal(t, 5, len(records[0])) - assert.Equal(t, "1", records[0]["id"]) - assert.Equal(t, "hi", records[0]["msg"]) - assert.Equal(t, "28", records[0]["age"]) - assert.Equal(t, "1.5", records[0]["money"]) + + idName := mapper.Obj2Table("Id") + ageName := mapper.Obj2Table("Age") + msgName := mapper.Obj2Table("Msg") + moneyName := mapper.Obj2Table("Money") + + assert.Equal(t, "1", records[0][idName]) + assert.Equal(t, "hi", records[0][msgName]) + assert.Equal(t, "28", records[0][ageName]) + assert.Equal(t, "1.5", records[0][moneyName]) } func TestQueryString2(t *testing.T) { @@ -63,12 +71,17 @@ func TestQueryString2(t *testing.T) { _, err := testEngine.Insert(data) assert.NoError(t, err) - records, err := testEngine.QueryString("select * from " + testEngine.TableName("get_var3", true)) + tableName := mapper.Obj2Table("GetVar3") + + idName := mapper.Obj2Table("Id") + msgName := mapper.Obj2Table("Msg") + + records, err := testEngine.QueryString("select * from " + testEngine.TableName(tableName, true)) assert.NoError(t, err) assert.Equal(t, 1, len(records)) assert.Equal(t, 2, len(records[0])) - assert.Equal(t, "1", records[0]["id"]) - assert.True(t, "0" == records[0]["msg"] || "false" == records[0]["msg"]) + assert.Equal(t, "1", records[0][idName]) + assert.True(t, "0" == records[0][msgName] || "false" == records[0][msgName]) } func toString(i interface{}) string { @@ -128,14 +141,20 @@ func TestQueryInterface(t *testing.T) { _, err := testEngine.InsertOne(data) assert.NoError(t, err) - records, err := testEngine.QueryInterface("select * from " + testEngine.TableName("get_var_interface", true)) + tableName := mapper.Obj2Table("GetVarInterface") + idName := mapper.Obj2Table("Id") + msgName := mapper.Obj2Table("Msg") + ageName := mapper.Obj2Table("Age") + moneyName := mapper.Obj2Table("Money") + + records, err := testEngine.QueryInterface("select * from " + testEngine.TableName(tableName, true)) assert.NoError(t, err) assert.Equal(t, 1, len(records)) assert.Equal(t, 5, len(records[0])) - assert.EqualValues(t, 1, toInt64(records[0]["id"])) - assert.Equal(t, "hi", toString(records[0]["msg"])) - assert.EqualValues(t, 28, toInt64(records[0]["age"])) - assert.EqualValues(t, 1.5, toFloat64(records[0]["money"])) + assert.EqualValues(t, 1, toInt64(records[0][idName])) + assert.Equal(t, "hi", toString(records[0][msgName])) + assert.EqualValues(t, 28, toInt64(records[0][ageName])) + assert.EqualValues(t, 1.5, toFloat64(records[0][moneyName])) } func TestQueryNoParams(t *testing.T) { @@ -162,27 +181,33 @@ func TestQueryNoParams(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 1, cnt) + idName := mapper.Obj2Table("Id") + msgName := mapper.Obj2Table("Msg") + ageName := mapper.Obj2Table("Age") + moneyName := mapper.Obj2Table("Money") + assertResult := func(t *testing.T, results []map[string][]byte) { assert.EqualValues(t, 1, len(results)) - id, err := strconv.ParseInt(string(results[0]["id"]), 10, 64) + id, err := strconv.ParseInt(string(results[0][idName]), 10, 64) assert.NoError(t, err) assert.EqualValues(t, 1, id) - assert.Equal(t, "message", string(results[0]["msg"])) + assert.Equal(t, "message", string(results[0][msgName])) - age, err := strconv.Atoi(string(results[0]["age"])) + age, err := strconv.Atoi(string(results[0][ageName])) assert.NoError(t, err) assert.EqualValues(t, 20, age) - money, err := strconv.ParseFloat(string(results[0]["money"]), 32) + money, err := strconv.ParseFloat(string(results[0][moneyName]), 32) assert.NoError(t, err) assert.EqualValues(t, 3000, money) } - results, err := testEngine.Table("query_no_params").Limit(10).Query() + tableName := mapper.Obj2Table("QueryNoParams") + results, err := testEngine.Table(tableName).Limit(10).Query() assert.NoError(t, err) assertResult(t, results) - results, err = testEngine.SQL("select * from " + testEngine.TableName("query_no_params", true)).Query() + results, err = testEngine.SQL("select * from " + testEngine.TableName(tableName, true)).Query() assert.NoError(t, err) assertResult(t, results) } @@ -203,24 +228,29 @@ func TestQueryStringNoParam(t *testing.T) { _, err := testEngine.Insert(data) assert.NoError(t, err) - records, err := testEngine.Table("get_var4").Limit(1).QueryString() + tableName := mapper.Obj2Table("GetVar4") + + idName := mapper.Obj2Table("Id") + msgName := mapper.Obj2Table("Msg") + + records, err := testEngine.Table(tableName).Limit(1).QueryString() assert.NoError(t, err) assert.EqualValues(t, 1, len(records)) - assert.EqualValues(t, "1", records[0]["id"]) + assert.EqualValues(t, "1", records[0][idName]) if testEngine.Dialect().DBType() == core.POSTGRES || testEngine.Dialect().DBType() == core.MSSQL { - assert.EqualValues(t, "false", records[0]["msg"]) + assert.EqualValues(t, "false", records[0][msgName]) } else { - assert.EqualValues(t, "0", records[0]["msg"]) + assert.EqualValues(t, "0", records[0][msgName]) } - records, err = testEngine.Table("get_var4").Where(builder.Eq{"id": 1}).QueryString() + records, err = testEngine.Table(tableName).Where(builder.Eq{idName: 1}).QueryString() assert.NoError(t, err) assert.EqualValues(t, 1, len(records)) - assert.EqualValues(t, "1", records[0]["id"]) + assert.EqualValues(t, "1", records[0][idName]) if testEngine.Dialect().DBType() == core.POSTGRES || testEngine.Dialect().DBType() == core.MSSQL { - assert.EqualValues(t, "false", records[0]["msg"]) + assert.EqualValues(t, "false", records[0][msgName]) } else { - assert.EqualValues(t, "0", records[0]["msg"]) + assert.EqualValues(t, "0", records[0][msgName]) } } @@ -240,7 +270,9 @@ func TestQuerySliceStringNoParam(t *testing.T) { _, err := testEngine.Insert(data) assert.NoError(t, err) - records, err := testEngine.Table("get_var6").Limit(1).QuerySliceString() + tableName := mapper.Obj2Table("GetVar6") + + records, err := testEngine.Table(tableName).Limit(1).QuerySliceString() assert.NoError(t, err) assert.EqualValues(t, 1, len(records)) assert.EqualValues(t, "1", records[0][0]) @@ -250,7 +282,8 @@ func TestQuerySliceStringNoParam(t *testing.T) { assert.EqualValues(t, "0", records[0][1]) } - records, err = testEngine.Table("get_var6").Where(builder.Eq{"id": 1}).QuerySliceString() + idName := mapper.Obj2Table("Id") + records, err = testEngine.Table(tableName).Where(builder.Eq{idName: 1}).QuerySliceString() assert.NoError(t, err) assert.EqualValues(t, 1, len(records)) assert.EqualValues(t, "1", records[0][0]) @@ -277,17 +310,21 @@ func TestQueryInterfaceNoParam(t *testing.T) { _, err := testEngine.Insert(data) assert.NoError(t, err) - records, err := testEngine.Table("get_var5").Limit(1).QueryInterface() - assert.NoError(t, err) - assert.EqualValues(t, 1, len(records)) - assert.EqualValues(t, 1, toInt64(records[0]["id"])) - assert.EqualValues(t, 0, toInt64(records[0]["msg"])) + tableName := mapper.Obj2Table("GetVar5") + idName := mapper.Obj2Table("Id") + msgName := mapper.Obj2Table("Msg") - records, err = testEngine.Table("get_var5").Where(builder.Eq{"id": 1}).QueryInterface() + records, err := testEngine.Table(tableName).Limit(1).QueryInterface() assert.NoError(t, err) assert.EqualValues(t, 1, len(records)) - assert.EqualValues(t, 1, toInt64(records[0]["id"])) - assert.EqualValues(t, 0, toInt64(records[0]["msg"])) + assert.EqualValues(t, 1, toInt64(records[0][idName])) + assert.EqualValues(t, 0, toInt64(records[0][msgName])) + + records, err = testEngine.Table(tableName).Where(builder.Eq{idName: 1}).QueryInterface() + assert.NoError(t, err) + assert.EqualValues(t, 1, len(records)) + assert.EqualValues(t, 1, toInt64(records[0][idName])) + assert.EqualValues(t, 0, toInt64(records[0][msgName])) } func TestQueryWithBuilder(t *testing.T) { @@ -314,23 +351,29 @@ func TestQueryWithBuilder(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 1, cnt) + idName := mapper.Obj2Table("Id") + msgName := mapper.Obj2Table("Msg") + ageName := mapper.Obj2Table("Age") + moneyName := mapper.Obj2Table("Money") + assertResult := func(t *testing.T, results []map[string][]byte) { assert.EqualValues(t, 1, len(results)) - id, err := strconv.ParseInt(string(results[0]["id"]), 10, 64) + id, err := strconv.ParseInt(string(results[0][idName]), 10, 64) assert.NoError(t, err) assert.EqualValues(t, 1, id) - assert.Equal(t, "message", string(results[0]["msg"])) + assert.Equal(t, "message", string(results[0][msgName])) - age, err := strconv.Atoi(string(results[0]["age"])) + age, err := strconv.Atoi(string(results[0][ageName])) assert.NoError(t, err) assert.EqualValues(t, 20, age) - money, err := strconv.ParseFloat(string(results[0]["money"]), 32) + money, err := strconv.ParseFloat(string(results[0][moneyName]), 32) assert.NoError(t, err) assert.EqualValues(t, 3000, money) } - results, err := testEngine.Query(builder.Select("*").From(testEngine.TableName("query_with_builder", true))) + tableName := mapper.Obj2Table("QueryWithBuilder") + results, err := testEngine.Query(builder.Select("*").From(testEngine.TableName(tableName, true))) assert.NoError(t, err) assertResult(t, results) } @@ -371,9 +414,15 @@ func TestJoinWithSubQuery(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 1, cnt) + tableName := mapper.Obj2Table("JoinWithSubQueryDepart") + tableName1 := mapper.Obj2Table("JoinWithSubQuery1") + + departID := mapper.Obj2Table("DepartId") + idName := mapper.Obj2Table("Id") + var querys []JoinWithSubQuery1 - err = testEngine.Join("INNER", builder.Select("id").From(testEngine.Quote(testEngine.TableName("join_with_sub_query_depart", true))), - "join_with_sub_query_depart.id = join_with_sub_query1.depart_id").Find(&querys) + err = testEngine.Join("INNER", builder.Select(idName).From(testEngine.Quote(testEngine.TableName(tableName, true))), + tableName+"."+idName+" = "+tableName1+"."+departID).Find(&querys) assert.NoError(t, err) assert.EqualValues(t, 1, len(querys)) assert.EqualValues(t, q, querys[0]) diff --git a/session_raw_test.go b/session_raw_test.go index 766206a4..8bfabb4d 100644 --- a/session_raw_test.go +++ b/session_raw_test.go @@ -21,17 +21,21 @@ func TestExecAndQuery(t *testing.T) { assert.NoError(t, testEngine.Sync2(new(UserinfoQuery))) - res, err := testEngine.Exec("INSERT INTO "+testEngine.TableName("`userinfo_query`", true)+" (uid, name) VALUES (?, ?)", 1, "user") + tableName := mapper.Obj2Table("UserinfoQuery") + uidName := mapper.Obj2Table("Uid") + nameName := mapper.Obj2Table("Name") + + res, err := testEngine.Exec("INSERT INTO "+testEngine.TableName(tableName, true)+" ("+uidName+", "+nameName+") VALUES (?, ?)", 1, "user") assert.NoError(t, err) cnt, err := res.RowsAffected() assert.NoError(t, err) assert.EqualValues(t, 1, cnt) - results, err := testEngine.Query("select * from " + testEngine.TableName("userinfo_query", true)) + results, err := testEngine.Query("select * from " + testEngine.TableName(tableName, true)) assert.NoError(t, err) assert.EqualValues(t, 1, len(results)) - id, err := strconv.Atoi(string(results[0]["uid"])) + id, err := strconv.Atoi(string(results[0][uidName])) assert.NoError(t, err) assert.EqualValues(t, 1, id) - assert.Equal(t, "user", string(results[0]["name"])) + assert.Equal(t, "user", string(results[0][nameName])) } diff --git a/session_schema_test.go b/session_schema_test.go index 5a0fca2e..f655a225 100644 --- a/session_schema_test.go +++ b/session_schema_test.go @@ -79,7 +79,7 @@ type SyncTable2 struct { } func (SyncTable2) TableName() string { - return "sync_table1" + return mapper.Obj2Table("SyncTable1") } type SyncTable3 struct { @@ -91,7 +91,7 @@ type SyncTable3 struct { } func (s *SyncTable3) TableName() string { - return "sync_table1" + return mapper.Obj2Table("SyncTable1") } func TestSyncTable(t *testing.T) { @@ -99,24 +99,26 @@ func TestSyncTable(t *testing.T) { assert.NoError(t, testEngine.Sync2(new(SyncTable1))) + tableName := mapper.Obj2Table("SyncTable1") + tables, err := testEngine.DBMetas() assert.NoError(t, err) assert.EqualValues(t, 1, len(tables)) - assert.EqualValues(t, "sync_table1", tables[0].Name) + assert.EqualValues(t, tableName, tables[0].Name) assert.NoError(t, testEngine.Sync2(new(SyncTable2))) tables, err = testEngine.DBMetas() assert.NoError(t, err) assert.EqualValues(t, 1, len(tables)) - assert.EqualValues(t, "sync_table1", tables[0].Name) + assert.EqualValues(t, tableName, tables[0].Name) assert.NoError(t, testEngine.Sync2(new(SyncTable3))) tables, err = testEngine.DBMetas() assert.NoError(t, err) assert.EqualValues(t, 1, len(tables)) - assert.EqualValues(t, "sync_table1", tables[0].Name) + assert.EqualValues(t, tableName, tables[0].Name) } func TestIsTableExist(t *testing.T) { @@ -227,8 +229,10 @@ func TestMetaInfo(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 2, len(tables)) tableNames := []string{tables[0].Name, tables[1].Name} + + tableName2 := mapper.Obj2Table("IndexOrUnique") assert.Contains(t, tableNames, "customtablename") - assert.Contains(t, tableNames, "index_or_unique") + assert.Contains(t, tableNames, tableName2) } func TestCharst(t *testing.T) { @@ -273,10 +277,12 @@ func TestUnique_1(t *testing.T) { assert.NoError(t, prepareEngine()) - assert.NoError(t, testEngine.DropTables("user_unique")) + tableName := mapper.Obj2Table("UserUnique") + + assert.NoError(t, testEngine.DropTables(tableName)) assert.NoError(t, testEngine.Sync2(new(UserUnique))) - assert.NoError(t, testEngine.DropTables("user_unique")) + assert.NoError(t, testEngine.DropTables(tableName)) assert.NoError(t, testEngine.CreateTables(new(UserUnique))) assert.NoError(t, testEngine.CreateUniques(new(UserUnique))) } diff --git a/session_stats_test.go b/session_stats_test.go index 01c76ba5..08a554ca 100644 --- a/session_stats_test.go +++ b/session_stats_test.go @@ -186,11 +186,12 @@ func TestCount(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 1, total) - total, err = testEngine.Where(cond).Table("userinfo_count").Count() + tableName := mapper.Obj2Table("UserinfoCount") + total, err = testEngine.Where(cond).Table(tableName).Count() assert.NoError(t, err) assert.EqualValues(t, 1, total) - total, err = testEngine.Table("userinfo_count").Count() + total, err = testEngine.Table(tableName).Count() assert.NoError(t, err) assert.EqualValues(t, 1, total) } @@ -211,7 +212,9 @@ func TestSQLCount(t *testing.T) { assertSync(t, new(UserinfoCount2), new(UserinfoBooks)) - total, err := testEngine.SQL("SELECT count(id) FROM " + testEngine.TableName("userinfo_count2", true)). + tableName := mapper.Obj2Table("UserinfoCount2") + idName := mapper.Obj2Table("Id") + total, err := testEngine.SQL("SELECT count(" + idName + ") FROM " + testEngine.TableName(tableName, true)). Count() assert.NoError(t, err) assert.EqualValues(t, 0, total) @@ -237,7 +240,8 @@ func TestCountWithOthers(t *testing.T) { }) assert.NoError(t, err) - total, err := testEngine.OrderBy("id desc").Limit(1).Count(new(CountWithOthers)) + idName := mapper.Obj2Table("Id") + total, err := testEngine.OrderBy(idName + " desc").Limit(1).Count(new(CountWithOthers)) assert.NoError(t, err) assert.EqualValues(t, 2, total) } @@ -266,11 +270,13 @@ func TestWithTableName(t *testing.T) { }) assert.NoError(t, err) - total, err := testEngine.OrderBy("id desc").Count(new(CountWithTableName)) + idName := mapper.Obj2Table("Id") + + total, err := testEngine.OrderBy(idName + " desc").Count(new(CountWithTableName)) assert.NoError(t, err) assert.EqualValues(t, 2, total) - total, err = testEngine.OrderBy("id desc").Count(CountWithTableName{}) + total, err = testEngine.OrderBy(idName + " desc").Count(CountWithTableName{}) assert.NoError(t, err) assert.EqualValues(t, 2, total) } diff --git a/session_update_test.go b/session_update_test.go index a0a98469..79b938d7 100644 --- a/session_update_test.go +++ b/session_update_test.go @@ -32,9 +32,13 @@ func TestUpdateMap(t *testing.T) { _, err := testEngine.Insert(&tb) assert.NoError(t, err) - cnt, err := testEngine.Table("update_table").Where("id = ?", tb.Id).Update(map[string]interface{}{ - "name": "test2", - "age": 36, + tableName := mapper.Obj2Table("UpdateTable") + nameName := mapper.Obj2Table("Name") + ageName := mapper.Obj2Table("age") + + cnt, err := testEngine.Table(tableName).Where("id = ?", tb.Id).Update(map[string]interface{}{ + nameName: "test2", + ageName: 36, }) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) @@ -64,7 +68,9 @@ func TestUpdateLimit(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 1, cnt) - cnt, err = testEngine.OrderBy("name desc").Limit(1).Update(&UpdateTable2{ + nameName := mapper.Obj2Table("Name") + + cnt, err = testEngine.OrderBy(nameName + " desc").Limit(1).Update(&UpdateTable2{ Age: 30, }) assert.NoError(t, err) @@ -268,7 +274,8 @@ func TestUpdateMap2(t *testing.T) { assert.NoError(t, prepareEngine()) assertSync(t, new(UpdateMustCols)) - _, err := testEngine.Table("update_must_cols").Where("id =?", 1).Update(map[string]interface{}{ + tableName := mapper.Obj2Table("UpdateMustCols") + _, err := testEngine.Table(tableName).Where("id =?", 1).Update(map[string]interface{}{ "bool": true, }) assert.NoError(t, err) @@ -305,6 +312,13 @@ func TestUpdate1(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, total, cnt) + userName := mapper.Obj2Table("Username") + heightName := mapper.Obj2Table("Height") + departName := mapper.Obj2Table("Departname") + detailIDName := "detail_id" + isMan := mapper.Obj2Table("IsMan") + createdName := mapper.Obj2Table("Created") + // nullable update { user := &Userinfo{Username: "not null data", Height: 180.5} @@ -313,29 +327,29 @@ func TestUpdate1(t *testing.T) { userID := user.Uid has, err := testEngine.ID(userID). - And("username = ?", user.Username). - And("height = ?", user.Height). - And("departname = ?", ""). - And("detail_id = ?", 0). - And("is_man = ?", 0). + And(userName+" = ?", user.Username). + And(heightName+" = ?", user.Height). + And(departName+" = ?", ""). + And(detailIDName+" = ?", 0). + And(isMan+" = ?", 0). Get(&Userinfo{}) assert.NoError(t, err) assert.True(t, has) updatedUser := &Userinfo{Username: "null data"} cnt, err = testEngine.ID(userID). - Nullable("height", "departname", "is_man", "created"). + Nullable(heightName, departName, isMan, createdName). Update(updatedUser) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) has, err = testEngine.ID(userID). - And("username = ?", updatedUser.Username). - And("height IS NULL"). - And("departname IS NULL"). - And("is_man IS NULL"). - And("created IS NULL"). - And("detail_id = ?", 0). + And(userName+" = ?", updatedUser.Username). + And(heightName+" IS NULL"). + And(departName+" IS NULL"). + And(isMan+" IS NULL"). + And(createdName+" IS NULL"). + And(detailIDName+" = ?", 0). Get(&Userinfo{}) assert.NoError(t, err) assert.True(t, has) @@ -1024,8 +1038,9 @@ func TestDeletedUpdate(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 1, cnt) + deletedAtName := mapper.Obj2Table("DeletedAt") s.DeletedAt = time.Time{} - cnt, err = testEngine.Unscoped().Nullable("deleted_at").Update(&s) + cnt, err = testEngine.Unscoped().Nullable(deletedAtName).Update(&s) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) @@ -1037,11 +1052,11 @@ func TestDeletedUpdate(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 1, cnt) - cnt, err = testEngine.ID(s.Id).Cols("deleted_at").Update(&DeletedUpdatedStruct{}) + cnt, err = testEngine.ID(s.Id).Cols(deletedAtName).Update(&DeletedUpdatedStruct{}) assert.EqualValues(t, "No content found to be updated", err.Error()) assert.EqualValues(t, 0, cnt) - cnt, err = testEngine.ID(s.Id).Unscoped().Cols("deleted_at").Update(&DeletedUpdatedStruct{}) + cnt, err = testEngine.ID(s.Id).Unscoped().Cols(deletedAtName).Update(&DeletedUpdatedStruct{}) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) @@ -1066,10 +1081,12 @@ func TestUpdateMapCondition(t *testing.T) { _, err := testEngine.Insert(&c) assert.NoError(t, err) + idName := mapper.Obj2Table("Id") + cnt, err := testEngine.Update(&UpdateMapCondition{ String: "string1", }, map[string]interface{}{ - "id": c.Id, + idName: c.Id, }) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) @@ -1104,7 +1121,11 @@ func TestUpdateMapContent(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 18, c.Age) - cnt, err := testEngine.Table(new(UpdateMapContent)).ID(c.Id).Update(map[string]interface{}{"age": 0}) + ageName := mapper.Obj2Table("Age") + isManName := mapper.Obj2Table("IsMan") + genderName := mapper.Obj2Table("Gender") + + cnt, err := testEngine.Table(new(UpdateMapContent)).ID(c.Id).Update(map[string]interface{}{ageName: 0}) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) @@ -1115,9 +1136,9 @@ func TestUpdateMapContent(t *testing.T) { assert.EqualValues(t, 0, c1.Age) cnt, err = testEngine.Table(new(UpdateMapContent)).ID(c.Id).Update(map[string]interface{}{ - "age": 16, - "is_man": false, - "gender": 2, + ageName: 16, + isManName: false, + genderName: 2, }) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) @@ -1131,9 +1152,9 @@ func TestUpdateMapContent(t *testing.T) { assert.EqualValues(t, 2, c2.Gender) cnt, err = testEngine.Table(testEngine.TableName(new(UpdateMapContent))).ID(c.Id).Update(map[string]interface{}{ - "age": 15, - "is_man": true, - "gender": 1, + ageName: 15, + isManName: true, + genderName: 1, }) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) diff --git a/statement_test.go b/statement_test.go index acc542ab..ff84eba4 100644 --- a/statement_test.go +++ b/statement_test.go @@ -197,8 +197,10 @@ func TestDistinctAndCols(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 1, cnt) + tableName := mapper.Obj2Table("DistinctAndCols") + var names []string - err = testEngine.Table("distinct_and_cols").Cols("name").Distinct("name").Find(&names) + err = testEngine.Table(tableName).Cols("name").Distinct("name").Find(&names) assert.NoError(t, err) assert.EqualValues(t, 1, len(names)) assert.EqualValues(t, "test", names[0]) diff --git a/tag_test.go b/tag_test.go index 891c6ffc..6e55f1f0 100644 --- a/tag_test.go +++ b/tag_test.go @@ -159,12 +159,14 @@ func TestAutoIncrTag(t *testing.T) { Id int64 } + idName := mapper.Obj2Table("Id") + tb := testEngine.TableInfo(new(TestAutoIncr1)) cols := tb.Columns() assert.EqualValues(t, 1, len(cols)) assert.True(t, cols[0].IsAutoIncrement) assert.True(t, cols[0].IsPrimaryKey) - assert.Equal(t, "id", cols[0].Name) + assert.Equal(t, idName, cols[0].Name) type TestAutoIncr2 struct { Id int64 `xorm:"id"` @@ -197,7 +199,7 @@ func TestAutoIncrTag(t *testing.T) { assert.EqualValues(t, 1, len(cols)) assert.False(t, cols[0].IsAutoIncrement) assert.True(t, cols[0].IsPrimaryKey) - assert.Equal(t, "id", cols[0].Name) + assert.Equal(t, idName, cols[0].Name) } func TestTagComment(t *testing.T) { @@ -524,7 +526,7 @@ func TestTagTime(t *testing.T) { assert.EqualValues(t, s.Created.Format("2006-01-02 15:04:05"), u.Created.Format("2006-01-02 15:04:05")) var tm string - has, err = testEngine.Table("tag_u_t_c_struct").Cols("created").Get(&tm) + has, err = testEngine.Table(&s).Cols("created").Get(&tm) assert.NoError(t, err) assert.True(t, has) assert.EqualValues(t, s.Created.UTC().Format("2006-01-02 15:04:05"), diff --git a/xorm_test.go b/xorm_test.go index c0302df3..654533b1 100644 --- a/xorm_test.go +++ b/xorm_test.go @@ -35,6 +35,8 @@ var ( splitter = flag.String("splitter", ";", "the splitter on connstr for cluster") schema = flag.String("schema", "", "specify the schema") ignoreSelectUpdate = flag.Bool("ignore_select_update", false, "ignore select update if implementation difference, only for tidb") + + mapper core.IMapper ) func createEngine(dbType, connStr string) error { @@ -113,11 +115,14 @@ func createEngine(dbType, connStr string) error { if len(*mapType) > 0 { switch *mapType { case "snake": - testEngine.SetMapper(core.SnakeMapper{}) + mapper = core.SnakeMapper{} case "same": - testEngine.SetMapper(core.SameMapper{}) + mapper = core.SameMapper{} case "gonic": - testEngine.SetMapper(core.LintGonicMapper) + mapper = core.LintGonicMapper + } + if mapper != nil { + testEngine.SetMapper(mapper) } } } From 32d1d4bc04e063d36e26c642b1ea074e9ed24280 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 13 Mar 2019 21:35:49 +0800 Subject: [PATCH 03/12] fix tests --- session_cols_test.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/session_cols_test.go b/session_cols_test.go index 96cb1620..658e1747 100644 --- a/session_cols_test.go +++ b/session_cols_test.go @@ -81,7 +81,9 @@ func TestCols(t *testing.T) { assert.NoError(t, err) sess := testEngine.ID(1) - _, err = sess.Cols("col1").Cols("col2").Update(&ColsTable{ + col1Name := mapper.Obj2Table("Col1") + col2Name := mapper.Obj2Table("Col2") + _, err = sess.Cols(col1Name).Cols(col2Name).Update(&ColsTable{ Col1: "", Col2: "", }) @@ -130,7 +132,8 @@ func TestMustCol(t *testing.T) { } customer.ParentId = 0 - affected, err := testEngine.MustCols("parent_id").Update(&customer, &CustomerOnlyId{Id: customer.Id}) + parentIDName := mapper.Obj2Table("ParentId") + affected, err := testEngine.MustCols(parentIDName).Update(&customer, &CustomerOnlyId{Id: customer.Id}) assert.NoError(t, err) assert.EqualValues(t, 1, affected) } From 203a4163ca062a28538aaeb5e6409707a6e52bc9 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 13 Mar 2019 21:45:01 +0800 Subject: [PATCH 04/12] fix tests --- session_insert_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/session_insert_test.go b/session_insert_test.go index 262badf3..c1184a18 100644 --- a/session_insert_test.go +++ b/session_insert_test.go @@ -494,7 +494,8 @@ func TestDefaultTime3(t *testing.T) { Cuser: "userId", Muser: "userId", } - cnt, err := testEngine.Omit("end_time").InsertOne(prepareTask) + endTimeName := mapper.Obj2Table("EndTime") + cnt, err := testEngine.Omit(endTimeName).InsertOne(prepareTask) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) } From 06f3b40240d317a209a4043e2f4a158b75511c37 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 13 Mar 2019 22:07:37 +0800 Subject: [PATCH 05/12] fix bugs --- session_find_test.go | 12 +++++++++--- session_tx_test.go | 5 ++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/session_find_test.go b/session_find_test.go index 2f89ad9b..a29e07c4 100644 --- a/session_find_test.go +++ b/session_find_test.go @@ -54,11 +54,17 @@ func TestJoinLimit(t *testing.T) { assert.EqualValues(t, 1, cnt) tableName := mapper.Obj2Table("CheckList") + tableName2 := mapper.Obj2Table("Salary") + tableName3 := mapper.Obj2Table("Empsetting") + + idName := mapper.Obj2Table("Id") + lIDName := mapper.Obj2Table("Lid") + eIDName := mapper.Obj2Table("Eid") var salaries []Salary - err = testEngine.Table("salary"). - Join("INNER", tableName, tableName+".id = salary.lid"). - Join("LEFT", "empsetting", "empsetting.id = "+tableName+".eid"). + err = testEngine.Table(tableName2). + Join("INNER", tableName, tableName+"."+idName+" = "+tableName2+"."+lIDName). + Join("LEFT", tableName3, tableName3+"."+idName+" = "+tableName+"."+eIDName). Limit(10, 0). Find(&salaries) assert.NoError(t, err) diff --git a/session_tx_test.go b/session_tx_test.go index 23e1bf28..8b4ed5e6 100644 --- a/session_tx_test.go +++ b/session_tx_test.go @@ -73,11 +73,14 @@ func TestCombineTransaction(t *testing.T) { _, err = session.Insert(&user1) assert.NoError(t, err) + tableName := mapper.Obj2Table("Userinfo") + userName := mapper.Obj2Table("Username") + user2 := Userinfo{Username: "zzz"} _, err = session.Where("id = ?", 0).Update(&user2) assert.NoError(t, err) - _, err = session.Exec("delete from "+testEngine.TableName("userinfo", true)+" where username = ?", user2.Username) + _, err = session.Exec("delete from "+testEngine.TableName(tableName, true)+" where "+userName+" = ?", user2.Username) assert.NoError(t, err) err = session.Commit() From df424284f394c2ef768356e7d045783d530061b9 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 14 Mar 2019 08:45:06 +0800 Subject: [PATCH 06/12] more tests for same mapper --- .circleci/config.yml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c7a8d6a9..5193fe66 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -54,14 +54,29 @@ jobs: - run: go test -v -race -db="mymysql" -conn_str="xorm_test/root/" -coverprofile=coverage3-1.txt -covermode=atomic - run: go test -v -race -db="mymysql" -conn_str="xorm_test/root/" -cache=true -coverprofile=coverage3-2.txt -covermode=atomic + - run: go test -v -race -db="mymysql" -conn_str="xorm_test/root/" -map_type=same -coverprofile=coverage3-3.txt -covermode=atomic + - run: go test -v -race -db="mymysql" -conn_str="xorm_test/root/" -map_type=same -cache=true -coverprofile=coverage3-4.txt -covermode=atomic + - run: go test -v -race -db="postgres" -conn_str="dbname=xorm_test sslmode=disable" -coverprofile=coverage4-1.txt -covermode=atomic - run: go test -v -race -db="postgres" -conn_str="dbname=xorm_test sslmode=disable" -cache=true -coverprofile=coverage4-2.txt -covermode=atomic + - run: go test -v -race -db="postgres" -conn_str="dbname=xorm_test sslmode=disable" -map_type=same -coverprofile=coverage4-3.txt -covermode=atomic + - run: go test -v -race -db="postgres" -conn_str="dbname=xorm_test sslmode=disable" -map_type=same -cache=true -coverprofile=coverage4-4.txt -covermode=atomic + - run: go test -v -race -db="postgres" -conn_str="dbname=xorm_test sslmode=disable" -schema=xorm -coverprofile=coverage5-1.txt -covermode=atomic - run: go test -v -race -db="postgres" -conn_str="dbname=xorm_test sslmode=disable" -schema=xorm -cache=true -coverprofile=coverage5-2.txt -covermode=atomic + - run: go test -v -race -db="postgres" -conn_str="dbname=xorm_test sslmode=disable" -map_type=same -schema=xorm -coverprofile=coverage5-3.txt -covermode=atomic + - run: go test -v -race -db="postgres" -conn_str="dbname=xorm_test sslmode=disable" -map_type=same -schema=xorm -cache=true -coverprofile=coverage5-4.txt -covermode=atomic + - run: go test -v -race -db="mssql" -conn_str="server=localhost;user id=sa;password=yourStrong(!)Password;database=xorm_test" -coverprofile=coverage6-1.txt -covermode=atomic - run: go test -v -race -db="mssql" -conn_str="server=localhost;user id=sa;password=yourStrong(!)Password;database=xorm_test" -cache=true -coverprofile=coverage6-2.txt -covermode=atomic + - run: go test -v -race -db="mssql" -conn_str="server=localhost;user id=sa;password=yourStrong(!)Password;database=xorm_test" -map_type=same -coverprofile=coverage6-3.txt -covermode=atomic + - run: go test -v -race -db="mssql" -conn_str="server=localhost;user id=sa;password=yourStrong(!)Password;database=xorm_test" -map_type=same -cache=true -coverprofile=coverage6-4.txt -covermode=atomic + - run: go test -v -race -db="mysql" -conn_str="root:@tcp(localhost:4000)/xorm_test" -ignore_select_update=true -coverprofile=coverage7-1.txt -covermode=atomic - run: go test -v -race -db="mysql" -conn_str="root:@tcp(localhost:4000)/xorm_test" -ignore_select_update=true -cache=true -coverprofile=coverage7-2.txt -covermode=atomic - - run: gocovmerge coverage1-1.txt coverage1-2.txt coverage1-3.txt coverage1-4.txt coverage2-1.txt coverage2-2.txt coverage2-3.txt coverage2-4.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt coverage6-1.txt coverage6-2.txt coverage7-1.txt coverage7-2.txt > coverage.txt + - run: go test -v -race -db="mysql" -conn_str="root:@tcp(localhost:4000)/xorm_test" -map_type=same -ignore_select_update=true -coverprofile=coverage7-3.txt -covermode=atomic + - run: go test -v -race -db="mysql" -conn_str="root:@tcp(localhost:4000)/xorm_test" -map_type=same -ignore_select_update=true -cache=true -coverprofile=coverage7-4.txt -covermode=atomic + + - run: gocovmerge coverage1-1.txt coverage1-2.txt coverage1-3.txt coverage1-4.txt coverage2-1.txt coverage2-2.txt coverage2-3.txt coverage2-4.txt coverage3-1.txt coverage3-2.txt coverage3-3.txt coverage3-4.txt coverage4-1.txt coverage4-2.txt coverage4-3.txt coverage4-4.txt coverage5-1.txt coverage5-2.txt coverage5-3.txt coverage5-4.txt coverage6-1.txt coverage6-2.txt coverage6-3.txt coverage6-4.txt coverage7-1.txt coverage7-2.txt coverage7-3.txt coverage7-4.txt > coverage.txt - run: bash <(curl -s https://codecov.io/bash) \ No newline at end of file From ae51ac47b75c4d6bbc13fc75840566e827aa0855 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 14 Mar 2019 09:08:07 +0800 Subject: [PATCH 07/12] fix tests --- cache_test.go | 6 +- session_cols_test.go | 3 +- session_cond_test.go | 10 ++- session_exist_test.go | 14 +-- session_find_test.go | 102 +++++++++------------- session_tx_test.go | 46 ---------- session_update_test.go | 192 ----------------------------------------- 7 files changed, 60 insertions(+), 313 deletions(-) diff --git a/cache_test.go b/cache_test.go index dbfa28e2..1088cdaf 100644 --- a/cache_test.go +++ b/cache_test.go @@ -165,15 +165,17 @@ func TestCacheGet(t *testing.T) { _, err := testEngine.Insert(inserts[0]) assert.NoError(t, err) + idName := mapper.Obj2Table("Id") + var box1 MailBox3 - has, err := testEngine.Where("id = ?", inserts[0].Id).Get(&box1) + has, err := testEngine.Where(idName+" = ?", inserts[0].Id).Get(&box1) assert.NoError(t, err) assert.True(t, has) assert.EqualValues(t, "user1", box1.Username) assert.EqualValues(t, "pass1", box1.Password) var box2 MailBox3 - has, err = testEngine.Where("id = ?", inserts[0].Id).Get(&box2) + has, err = testEngine.Where(idName+" = ?", inserts[0].Id).Get(&box2) assert.NoError(t, err) assert.True(t, has) assert.EqualValues(t, "user1", box2.Username) diff --git a/session_cols_test.go b/session_cols_test.go index 658e1747..7628740e 100644 --- a/session_cols_test.go +++ b/session_cols_test.go @@ -48,7 +48,8 @@ func TestSetExpr(t *testing.T) { if testEngine.Dialect().DBType() == core.MSSQL { not = "~" } - cnt, err = testEngine.SetExpr("show", not+" `show`").ID(1).Update(new(UserExpr)) + showName := mapper.Obj2Table("Show") + cnt, err = testEngine.SetExpr(showName, not+" `"+showName+"`").ID(1).Update(new(UserExpr)) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) diff --git a/session_cond_test.go b/session_cond_test.go index 6fd83293..bd2d5391 100644 --- a/session_cond_test.go +++ b/session_cond_test.go @@ -37,6 +37,7 @@ func TestBuilder(t *testing.T) { assert.NoError(t, err) colNameName := mapper.Obj2Table("ColName") + opName := mapper.Obj2Table("Op") var cond Condition has, err := testEngine.Where(builder.Eq{colNameName: "col1"}).Get(&cond) @@ -50,14 +51,14 @@ func TestBuilder(t *testing.T) { assert.NoError(t, err) assert.Equal(t, true, has, "records should exist") - has, err = testEngine.Where(builder.Eq{colNameName: "col1", "op": OpEqual, "value": "1"}). + has, err = testEngine.Where(builder.Eq{colNameName: "col1", opName: OpEqual, "value": "1"}). NoAutoCondition(). Get(&cond) assert.NoError(t, err) assert.Equal(t, true, has, "records should exist") has, err = testEngine.Where(builder.Eq{colNameName: "col1"}. - And(builder.Neq{"op": OpEqual})). + And(builder.Neq{opName: OpEqual})). NoAutoCondition(). Get(&cond) assert.NoError(t, err) @@ -65,7 +66,7 @@ func TestBuilder(t *testing.T) { var conds []Condition err = testEngine.Where(builder.Eq{colNameName: "col1"}. - And(builder.Eq{"op": OpEqual})). + And(builder.Eq{opName: OpEqual})). Find(&conds) assert.NoError(t, err) assert.EqualValues(t, 1, len(conds), "records should exist") @@ -221,7 +222,8 @@ func TestFindAndCount(t *testing.T) { assert.NoError(t, err) var results []FindAndCount - sess := testEngine.Where("name = ?", "test1") + nameName := mapper.Obj2Table("Name") + sess := testEngine.Where(nameName+" = ?", "test1") conds := sess.Conds() err = sess.Find(&results) assert.NoError(t, err) diff --git a/session_exist_test.go b/session_exist_test.go index 3bc15b3a..d24befc2 100644 --- a/session_exist_test.go +++ b/session_exist_test.go @@ -46,21 +46,23 @@ func TestExistStruct(t *testing.T) { assert.NoError(t, err) assert.False(t, has) - has, err = testEngine.Where("name = ?", "test1").Exist(&RecordExist{}) + nameName := mapper.Obj2Table("Name") + + has, err = testEngine.Where(nameName+" = ?", "test1").Exist(&RecordExist{}) assert.NoError(t, err) assert.True(t, has) - has, err = testEngine.Where("name = ?", "test2").Exist(&RecordExist{}) + has, err = testEngine.Where(nameName+" = ?", "test2").Exist(&RecordExist{}) assert.NoError(t, err) assert.False(t, has) tableName := mapper.Obj2Table("RecordExist") - has, err = testEngine.SQL("select * from "+testEngine.TableName(tableName, true)+" where name = ?", "test1").Exist() + has, err = testEngine.SQL("select * from "+testEngine.TableName(tableName, true)+" where "+nameName+" = ?", "test1").Exist() assert.NoError(t, err) assert.True(t, has) - has, err = testEngine.SQL("select * from "+testEngine.TableName(tableName, true)+" where name = ?", "test2").Exist() + has, err = testEngine.SQL("select * from "+testEngine.TableName(tableName, true)+" where "+nameName+" = ?", "test2").Exist() assert.NoError(t, err) assert.False(t, has) @@ -68,11 +70,11 @@ func TestExistStruct(t *testing.T) { assert.NoError(t, err) assert.True(t, has) - has, err = testEngine.Table(tableName).Where("name = ?", "test1").Exist() + has, err = testEngine.Table(tableName).Where(nameName+" = ?", "test1").Exist() assert.NoError(t, err) assert.True(t, has) - has, err = testEngine.Table(tableName).Where("name = ?", "test2").Exist() + has, err = testEngine.Table(tableName).Where(nameName+" = ?", "test2").Exist() assert.NoError(t, err) assert.False(t, has) } diff --git a/session_find_test.go b/session_find_test.go index a29e07c4..740cf7a4 100644 --- a/session_find_test.go +++ b/session_find_test.go @@ -10,7 +10,6 @@ import ( "testing" "time" - "xorm.io/core" "github.com/stretchr/testify/assert" ) @@ -268,13 +267,17 @@ func TestOrder(t *testing.T) { assert.NoError(t, prepareEngine()) assertSync(t, new(Userinfo)) + idName := mapper.Obj2Table("Id") + userName := mapper.Obj2Table("Username") + heightName := mapper.Obj2Table("Height") + users := make([]Userinfo, 0) - err := testEngine.OrderBy("id desc").Find(&users) + err := testEngine.OrderBy(idName + " desc").Find(&users) assert.NoError(t, err) fmt.Println(users) users2 := make([]Userinfo, 0) - err = testEngine.Asc("id", "username").Desc("height").Find(&users2) + err = testEngine.Asc(idName, userName).Desc(heightName).Find(&users2) assert.NoError(t, err) fmt.Println(users2) } @@ -283,8 +286,11 @@ func TestGroupBy(t *testing.T) { assert.NoError(t, prepareEngine()) assertSync(t, new(Userinfo)) + idName := mapper.Obj2Table("Id") + userName := mapper.Obj2Table("Username") + users := make([]Userinfo, 0) - err := testEngine.GroupBy("id, username").Find(&users) + err := testEngine.GroupBy(idName + ", " + userName).Find(&users) assert.NoError(t, err) } @@ -292,8 +298,10 @@ func TestHaving(t *testing.T) { assert.NoError(t, prepareEngine()) assertSync(t, new(Userinfo)) + userName := mapper.Obj2Table("Username") + users := make([]Userinfo, 0) - err := testEngine.GroupBy("username").Having("username='xlw'").Find(&users) + err := testEngine.GroupBy(userName).Having(userName + "='xlw'").Find(&users) assert.NoError(t, err) fmt.Println(users) @@ -306,79 +314,36 @@ func TestHaving(t *testing.T) { fmt.Println(users)*/ } -func TestOrderSameMapper(t *testing.T) { - assert.NoError(t, prepareEngine()) - testEngine.UnMapType(rValue(new(Userinfo)).Type()) - - mapper := testEngine.GetTableMapper() - testEngine.SetMapper(core.SameMapper{}) - - defer func() { - testEngine.UnMapType(rValue(new(Userinfo)).Type()) - testEngine.SetMapper(mapper) - }() - - assertSync(t, new(Userinfo)) - - users := make([]Userinfo, 0) - err := testEngine.OrderBy("(id) desc").Find(&users) - assert.NoError(t, err) - fmt.Println(users) - - users2 := make([]Userinfo, 0) - err = testEngine.Asc("(id)", "Username").Desc("Height").Find(&users2) - assert.NoError(t, err) - fmt.Println(users2) -} - -func TestHavingSameMapper(t *testing.T) { - assert.NoError(t, prepareEngine()) - testEngine.UnMapType(rValue(new(Userinfo)).Type()) - - mapper := testEngine.GetTableMapper() - testEngine.SetMapper(core.SameMapper{}) - defer func() { - testEngine.UnMapType(rValue(new(Userinfo)).Type()) - testEngine.SetMapper(mapper) - }() - assertSync(t, new(Userinfo)) - - users := make([]Userinfo, 0) - err := testEngine.GroupBy("`Username`").Having("`Username`='xlw'").Find(&users) - if err != nil { - t.Fatal(err) - } - fmt.Println(users) -} - func TestFindInts(t *testing.T) { assert.NoError(t, prepareEngine()) assertSync(t, new(Userinfo)) userinfo := testEngine.GetTableMapper().Obj2Table("Userinfo") + idName := mapper.Obj2Table("Id") + var idsInt64 []int64 - err := testEngine.Table(userinfo).Cols("id").Desc("id").Find(&idsInt64) + err := testEngine.Table(userinfo).Cols(idName).Desc(idName).Find(&idsInt64) if err != nil { t.Fatal(err) } fmt.Println(idsInt64) var idsInt32 []int32 - err = testEngine.Table(userinfo).Cols("id").Desc("id").Find(&idsInt32) + err = testEngine.Table(userinfo).Cols(idName).Desc(idName).Find(&idsInt32) if err != nil { t.Fatal(err) } fmt.Println(idsInt32) var idsInt []int - err = testEngine.Table(userinfo).Cols("id").Desc("id").Find(&idsInt) + err = testEngine.Table(userinfo).Cols(idName).Desc(idName).Find(&idsInt) if err != nil { t.Fatal(err) } fmt.Println(idsInt) var idsUint []uint - err = testEngine.Table(userinfo).Cols("id").Desc("id").Find(&idsUint) + err = testEngine.Table(userinfo).Cols(idName).Desc(idName).Find(&idsUint) if err != nil { t.Fatal(err) } @@ -386,7 +351,7 @@ func TestFindInts(t *testing.T) { type MyInt int var idsMyInt []MyInt - err = testEngine.Table(userinfo).Cols("id").Desc("id").Find(&idsMyInt) + err = testEngine.Table(userinfo).Cols(idName).Desc(idName).Find(&idsMyInt) if err != nil { t.Fatal(err) } @@ -398,8 +363,10 @@ func TestFindStrings(t *testing.T) { assertSync(t, new(Userinfo)) userinfo := testEngine.GetTableMapper().Obj2Table("Userinfo") username := testEngine.GetColumnMapper().Obj2Table("Username") + idName := mapper.Obj2Table("Id") + var idsString []string - err := testEngine.Table(userinfo).Cols(username).Desc("id").Find(&idsString) + err := testEngine.Table(userinfo).Cols(username).Desc(idName).Find(&idsString) if err != nil { t.Fatal(err) } @@ -411,9 +378,10 @@ func TestFindMyString(t *testing.T) { assertSync(t, new(Userinfo)) userinfo := testEngine.GetTableMapper().Obj2Table("Userinfo") username := testEngine.GetColumnMapper().Obj2Table("Username") + idName := mapper.Obj2Table("Id") var idsMyString []MyString - err := testEngine.Table(userinfo).Cols(username).Desc("id").Find(&idsMyString) + err := testEngine.Table(userinfo).Cols(username).Desc(idName).Find(&idsMyString) if err != nil { t.Fatal(err) } @@ -426,8 +394,10 @@ func TestFindInterface(t *testing.T) { userinfo := testEngine.GetTableMapper().Obj2Table("Userinfo") username := testEngine.GetColumnMapper().Obj2Table("Username") + idName := mapper.Obj2Table("Id") + var idsInterface []interface{} - err := testEngine.Table(userinfo).Cols(username).Desc("id").Find(&idsInterface) + err := testEngine.Table(userinfo).Cols(username).Desc(idName).Find(&idsInterface) if err != nil { t.Fatal(err) } @@ -439,8 +409,10 @@ func TestFindSliceBytes(t *testing.T) { assertSync(t, new(Userinfo)) userinfo := testEngine.GetTableMapper().Obj2Table("Userinfo") + idName := mapper.Obj2Table("Id") + var ids [][][]byte - err := testEngine.Table(userinfo).Desc("id").Find(&ids) + err := testEngine.Table(userinfo).Desc(idName).Find(&ids) if err != nil { t.Fatal(err) } @@ -454,8 +426,10 @@ func TestFindSlicePtrString(t *testing.T) { assertSync(t, new(Userinfo)) userinfo := testEngine.GetTableMapper().Obj2Table("Userinfo") + idName := mapper.Obj2Table("Id") + var ids [][]*string - err := testEngine.Table(userinfo).Desc("id").Find(&ids) + err := testEngine.Table(userinfo).Desc(idName).Find(&ids) if err != nil { t.Fatal(err) } @@ -469,8 +443,10 @@ func TestFindMapBytes(t *testing.T) { assertSync(t, new(Userinfo)) userinfo := testEngine.GetTableMapper().Obj2Table("Userinfo") + idName := mapper.Obj2Table("Id") + var ids []map[string][]byte - err := testEngine.Table(userinfo).Desc("id").Find(&ids) + err := testEngine.Table(userinfo).Desc(idName).Find(&ids) if err != nil { t.Fatal(err) } @@ -484,8 +460,10 @@ func TestFindMapPtrString(t *testing.T) { assertSync(t, new(Userinfo)) userinfo := testEngine.GetTableMapper().Obj2Table("Userinfo") + idName := mapper.Obj2Table("Id") + var ids []map[string]*string - err := testEngine.Table(userinfo).Desc("id").Find(&ids) + err := testEngine.Table(userinfo).Desc(idName).Find(&ids) assert.NoError(t, err) for _, record := range ids { fmt.Println(record) diff --git a/session_tx_test.go b/session_tx_test.go index 8b4ed5e6..b00991d7 100644 --- a/session_tx_test.go +++ b/session_tx_test.go @@ -9,7 +9,6 @@ import ( "testing" "time" - "xorm.io/core" "github.com/stretchr/testify/assert" ) @@ -87,51 +86,6 @@ func TestCombineTransaction(t *testing.T) { assert.NoError(t, err) } -func TestCombineTransactionSameMapper(t *testing.T) { - assert.NoError(t, prepareEngine()) - - oldMapper := testEngine.GetColumnMapper() - testEngine.UnMapType(rValue(new(Userinfo)).Type()) - testEngine.SetMapper(core.SameMapper{}) - defer func() { - testEngine.UnMapType(rValue(new(Userinfo)).Type()) - testEngine.SetMapper(oldMapper) - }() - - assertSync(t, new(Userinfo)) - - counter := func() { - total, err := testEngine.Count(&Userinfo{}) - if err != nil { - t.Error(err) - } - fmt.Printf("----now total %v records\n", total) - } - - counter() - defer counter() - - session := testEngine.NewSession() - defer session.Close() - - err := session.Begin() - assert.NoError(t, err) - - user1 := Userinfo{Username: "xiaoxiao2", Departname: "dev", Alias: "lunny", Created: time.Now()} - _, err = session.Insert(&user1) - assert.NoError(t, err) - - user2 := Userinfo{Username: "zzz"} - _, err = session.Where("(id) = ?", 0).Update(&user2) - assert.NoError(t, err) - - _, err = session.Exec("delete from "+testEngine.TableName("`Userinfo`", true)+" where `Username` = ?", user2.Username) - assert.NoError(t, err) - - err = session.Commit() - assert.NoError(t, err) -} - func TestMultipleTransaction(t *testing.T) { assert.NoError(t, prepareEngine()) diff --git a/session_update_test.go b/session_update_test.go index 79b938d7..2e81934b 100644 --- a/session_update_test.go +++ b/session_update_test.go @@ -397,7 +397,6 @@ func TestUpdate1(t *testing.T) { assert.EqualValues(t, *col3, *col2) { - col1 := &UpdateMustCols{} err = testEngine.Sync(col1) assert.NoError(t, err) @@ -627,197 +626,6 @@ func TestUpdateUpdated(t *testing.T) { fmt.Println("ci5:", ci5, "di5:", di5) } -func TestUpdateSameMapper(t *testing.T) { - assert.NoError(t, prepareEngine()) - - oldMapper := testEngine.GetTableMapper() - testEngine.UnMapType(rValue(new(Userinfo)).Type()) - testEngine.UnMapType(rValue(new(Condi)).Type()) - testEngine.UnMapType(rValue(new(Article)).Type()) - testEngine.UnMapType(rValue(new(UpdateAllCols)).Type()) - testEngine.UnMapType(rValue(new(UpdateMustCols)).Type()) - testEngine.UnMapType(rValue(new(UpdateIncr)).Type()) - testEngine.SetMapper(core.SameMapper{}) - defer func() { - testEngine.UnMapType(rValue(new(Userinfo)).Type()) - testEngine.UnMapType(rValue(new(Condi)).Type()) - testEngine.UnMapType(rValue(new(Article)).Type()) - testEngine.UnMapType(rValue(new(UpdateAllCols)).Type()) - testEngine.UnMapType(rValue(new(UpdateMustCols)).Type()) - testEngine.UnMapType(rValue(new(UpdateIncr)).Type()) - testEngine.SetMapper(oldMapper) - }() - - assertSync(t, new(Userinfo)) - - _, err := testEngine.Insert(&Userinfo{ - Username: "user1", - }) - assert.NoError(t, err) - - var ori Userinfo - has, err := testEngine.Get(&ori) - assert.NoError(t, err) - assert.True(t, has) - - // update by id - user := Userinfo{Username: "xxx", Height: 1.2} - cnt, err := testEngine.ID(ori.Uid).Update(&user) - assert.NoError(t, err) - assert.EqualValues(t, 1, cnt) - - condi := Condi{"Username": "zzz", "Departname": ""} - cnt, err = testEngine.Table(&user).ID(ori.Uid).Update(&condi) - assert.NoError(t, err) - assert.EqualValues(t, 1, cnt) - - cnt, err = testEngine.Update(&Userinfo{Username: "yyy"}, &user) - assert.NoError(t, err) - - total, err := testEngine.Count(&user) - assert.NoError(t, err) - assert.EqualValues(t, cnt, total) - - err = testEngine.Sync(&Article{}) - assert.NoError(t, err) - - defer func() { - err = testEngine.DropTables(&Article{}) - assert.NoError(t, err) - }() - - a := &Article{0, "1", "2", "3", "4", "5", 2} - cnt, err = testEngine.Insert(a) - assert.NoError(t, err) - - if cnt != 1 { - err = errors.New(fmt.Sprintf("insert not returned 1 but %d", cnt)) - t.Error(err) - panic(err) - } - - if a.Id == 0 { - err = errors.New("insert returned id is 0") - t.Error(err) - panic(err) - } - - cnt, err = testEngine.ID(a.Id).Update(&Article{Name: "6"}) - assert.NoError(t, err) - - if cnt != 1 { - err = errors.New(fmt.Sprintf("insert not returned 1 but %d", cnt)) - t.Error(err) - panic(err) - return - } - - col1 := &UpdateAllCols{} - err = testEngine.Sync(col1) - assert.NoError(t, err) - - _, err = testEngine.Insert(col1) - assert.NoError(t, err) - - col2 := &UpdateAllCols{col1.Id, true, "", nil} - _, err = testEngine.ID(col2.Id).AllCols().Update(col2) - assert.NoError(t, err) - - col3 := &UpdateAllCols{} - has, err = testEngine.ID(col2.Id).Get(col3) - assert.NoError(t, err) - - if !has { - err = errors.New(fmt.Sprintf("cannot get id %d", col2.Id)) - t.Error(err) - panic(err) - return - } - - if *col2 != *col3 { - err = errors.New(fmt.Sprintf("col2 should eq col3")) - t.Error(err) - panic(err) - return - } - - { - col1 := &UpdateMustCols{} - err = testEngine.Sync(col1) - assert.NoError(t, err) - - _, err = testEngine.Insert(col1) - assert.NoError(t, err) - - col2 := &UpdateMustCols{col1.Id, true, ""} - boolStr := testEngine.GetColumnMapper().Obj2Table("Bool") - stringStr := testEngine.GetColumnMapper().Obj2Table("String") - _, err = testEngine.ID(col2.Id).MustCols(boolStr, stringStr).Update(col2) - assert.NoError(t, err) - - col3 := &UpdateMustCols{} - has, err := testEngine.ID(col2.Id).Get(col3) - assert.NoError(t, err) - - if !has { - err = errors.New(fmt.Sprintf("cannot get id %d", col2.Id)) - t.Error(err) - panic(err) - return - } - - if *col2 != *col3 { - err = errors.New(fmt.Sprintf("col2 should eq col3")) - t.Error(err) - panic(err) - return - } - } - - { - col1 := &UpdateIncr{} - err = testEngine.Sync(col1) - if err != nil { - t.Error(err) - panic(err) - } - - _, err = testEngine.Insert(col1) - if err != nil { - t.Error(err) - panic(err) - } - - cnt, err := testEngine.ID(col1.Id).Incr("`Cnt`").Update(col1) - if err != nil { - t.Error(err) - panic(err) - } - if cnt != 1 { - err = errors.New("update incr failed") - t.Error(err) - panic(err) - } - - newCol := new(UpdateIncr) - has, err := testEngine.ID(col1.Id).Get(newCol) - if err != nil { - t.Error(err) - panic(err) - } - if !has { - err = errors.New("has incr failed") - t.Error(err) - panic(err) - } - if 1 != newCol.Cnt { - err = errors.New("incr failed") - t.Error(err) - panic(err) - } - } -} - func TestUseBool(t *testing.T) { assert.NoError(t, prepareEngine()) assertSync(t, new(Userinfo)) From 854a2778f1179338e60e02d09434144ba3c69935 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 14 Mar 2019 09:16:53 +0800 Subject: [PATCH 08/12] fix tests --- cache_test.go | 8 ++++---- session_cond_test.go | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cache_test.go b/cache_test.go index 1088cdaf..374fff7d 100644 --- a/cache_test.go +++ b/cache_test.go @@ -62,7 +62,7 @@ func TestCacheFind(t *testing.T) { idName := mapper.Obj2Table("Id") boxes = make([]MailBox, 0, 2) - assert.NoError(t, testEngine.Alias("a").Where("a."+idName+" > -1").Asc("a."+idName).Find(&boxes)) + assert.NoError(t, testEngine.Alias("a").Where("`a`.`"+idName+"` > -1").Asc("a."+idName).Find(&boxes)) assert.EqualValues(t, 2, len(boxes)) for i, box := range boxes { assert.Equal(t, inserts[i].Id, box.Id) @@ -79,7 +79,7 @@ func TestCacheFind(t *testing.T) { tableName := mapper.Obj2Table("MailBox") boxes2 := make([]MailBox4, 0, 2) - assert.NoError(t, testEngine.Table(tableName).Where(tableName+"."+idName+" > -1").Asc(tableName+"."+idName).Find(&boxes2)) + assert.NoError(t, testEngine.Table(tableName).Where("`"+tableName+"`.`"+idName+"` > -1").Asc(tableName+"."+idName).Find(&boxes2)) assert.EqualValues(t, 2, len(boxes2)) for i, box := range boxes2 { assert.Equal(t, inserts[i].Id, box.Id) @@ -168,14 +168,14 @@ func TestCacheGet(t *testing.T) { idName := mapper.Obj2Table("Id") var box1 MailBox3 - has, err := testEngine.Where(idName+" = ?", inserts[0].Id).Get(&box1) + has, err := testEngine.Where("`"+idName+"` = ?", inserts[0].Id).Get(&box1) assert.NoError(t, err) assert.True(t, has) assert.EqualValues(t, "user1", box1.Username) assert.EqualValues(t, "pass1", box1.Password) var box2 MailBox3 - has, err = testEngine.Where(idName+" = ?", inserts[0].Id).Get(&box2) + has, err = testEngine.Where("`"+idName+"` = ?", inserts[0].Id).Get(&box2) assert.NoError(t, err) assert.True(t, has) assert.EqualValues(t, "user1", box2.Username) diff --git a/session_cond_test.go b/session_cond_test.go index bd2d5391..48bd3f4d 100644 --- a/session_cond_test.go +++ b/session_cond_test.go @@ -36,8 +36,8 @@ func TestBuilder(t *testing.T) { _, err = testEngine.Insert(&Condition{TableName: "table1", ColName: "col1", Op: OpEqual, Value: "1"}) assert.NoError(t, err) - colNameName := mapper.Obj2Table("ColName") - opName := mapper.Obj2Table("Op") + colNameName := "`" + mapper.Obj2Table("ColName") + "`" + opName := "`" + mapper.Obj2Table("Op") + "`" var cond Condition has, err := testEngine.Where(builder.Eq{colNameName: "col1"}).Get(&cond) @@ -45,7 +45,7 @@ func TestBuilder(t *testing.T) { assert.Equal(t, true, has, "records should exist") has, err = testEngine.Where(builder.Eq{colNameName: "col1"}. - And(builder.Eq{"op": OpEqual})). + And(builder.Eq{opName: OpEqual})). NoAutoCondition(). Get(&cond) assert.NoError(t, err) @@ -223,7 +223,7 @@ func TestFindAndCount(t *testing.T) { var results []FindAndCount nameName := mapper.Obj2Table("Name") - sess := testEngine.Where(nameName+" = ?", "test1") + sess := testEngine.Where("`"+nameName+"` = ?", "test1") conds := sess.Conds() err = sess.Find(&results) assert.NoError(t, err) From 0ba76ad48c0731cb6ceee52874d1eab3089e7e53 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 14 Mar 2019 13:06:13 +0800 Subject: [PATCH 09/12] fix tests --- session_cond_test.go | 3 ++- session_exist_test.go | 2 +- session_find_test.go | 45 +++++++++++++++++++++++-------------------- 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/session_cond_test.go b/session_cond_test.go index 48bd3f4d..dab14f05 100644 --- a/session_cond_test.go +++ b/session_cond_test.go @@ -38,6 +38,7 @@ func TestBuilder(t *testing.T) { colNameName := "`" + mapper.Obj2Table("ColName") + "`" opName := "`" + mapper.Obj2Table("Op") + "`" + valueName := "`" + mapper.Obj2Table("Value") + "`" var cond Condition has, err := testEngine.Where(builder.Eq{colNameName: "col1"}).Get(&cond) @@ -51,7 +52,7 @@ func TestBuilder(t *testing.T) { assert.NoError(t, err) assert.Equal(t, true, has, "records should exist") - has, err = testEngine.Where(builder.Eq{colNameName: "col1", opName: OpEqual, "value": "1"}). + has, err = testEngine.Where(builder.Eq{colNameName: "col1", opName: OpEqual, valueName: "1"}). NoAutoCondition(). Get(&cond) assert.NoError(t, err) diff --git a/session_exist_test.go b/session_exist_test.go index d24befc2..f10d4b55 100644 --- a/session_exist_test.go +++ b/session_exist_test.go @@ -46,7 +46,7 @@ func TestExistStruct(t *testing.T) { assert.NoError(t, err) assert.False(t, has) - nameName := mapper.Obj2Table("Name") + nameName := "`" + mapper.Obj2Table("Name") + "`" has, err = testEngine.Where(nameName+" = ?", "test1").Exist(&RecordExist{}) assert.NoError(t, err) diff --git a/session_find_test.go b/session_find_test.go index 740cf7a4..0a96ae50 100644 --- a/session_find_test.go +++ b/session_find_test.go @@ -151,10 +151,10 @@ func TestFind3(t *testing.T) { tableName := mapper.Obj2Table("TeamUser") teamTableName := mapper.Obj2Table("Team") - idName := mapper.Obj2Table("Id") - orgIDName := mapper.Obj2Table("OrgId") - uidName := mapper.Obj2Table("Uid") - teamIDName := mapper.Obj2Table("TeamId") + idName := "`" + mapper.Obj2Table("Id") + "`" + orgIDName := "`" + mapper.Obj2Table("OrgId") + "`" + uidName := "`" + mapper.Obj2Table("Uid") + "`" + teamIDName := "`" + mapper.Obj2Table("TeamId") + "`" var teams []Team err = testEngine.Cols("`"+teamTableName+"`."+idName). @@ -181,7 +181,7 @@ func TestFind3(t *testing.T) { assert.NoError(t, err) teams = make([]Team, 0) - err = testEngine.Cols("`"+teamTableName+"`.id"). + err = testEngine.Cols("`"+teamTableName+"`."+idName). Where("`tu`."+orgIDName+"=?", 1). And("`tu`."+uidName+"=?", 2). Join("INNER", []string{tableName, "tu"}, "`tu`."+teamIDName+"=`"+teamTableName+"`."+idName). @@ -267,7 +267,7 @@ func TestOrder(t *testing.T) { assert.NoError(t, prepareEngine()) assertSync(t, new(Userinfo)) - idName := mapper.Obj2Table("Id") + idName := "id" userName := mapper.Obj2Table("Username") heightName := mapper.Obj2Table("Height") @@ -286,7 +286,7 @@ func TestGroupBy(t *testing.T) { assert.NoError(t, prepareEngine()) assertSync(t, new(Userinfo)) - idName := mapper.Obj2Table("Id") + idName := "id" userName := mapper.Obj2Table("Username") users := make([]Userinfo, 0) @@ -298,7 +298,7 @@ func TestHaving(t *testing.T) { assert.NoError(t, prepareEngine()) assertSync(t, new(Userinfo)) - userName := mapper.Obj2Table("Username") + userName := "`" + mapper.Obj2Table("Username") + "`" users := make([]Userinfo, 0) err := testEngine.GroupBy(userName).Having(userName + "='xlw'").Find(&users) @@ -319,7 +319,7 @@ func TestFindInts(t *testing.T) { assertSync(t, new(Userinfo)) userinfo := testEngine.GetTableMapper().Obj2Table("Userinfo") - idName := mapper.Obj2Table("Id") + idName := "id" var idsInt64 []int64 err := testEngine.Table(userinfo).Cols(idName).Desc(idName).Find(&idsInt64) @@ -363,7 +363,7 @@ func TestFindStrings(t *testing.T) { assertSync(t, new(Userinfo)) userinfo := testEngine.GetTableMapper().Obj2Table("Userinfo") username := testEngine.GetColumnMapper().Obj2Table("Username") - idName := mapper.Obj2Table("Id") + idName := "id" var idsString []string err := testEngine.Table(userinfo).Cols(username).Desc(idName).Find(&idsString) @@ -378,7 +378,7 @@ func TestFindMyString(t *testing.T) { assertSync(t, new(Userinfo)) userinfo := testEngine.GetTableMapper().Obj2Table("Userinfo") username := testEngine.GetColumnMapper().Obj2Table("Username") - idName := mapper.Obj2Table("Id") + idName := "id" var idsMyString []MyString err := testEngine.Table(userinfo).Cols(username).Desc(idName).Find(&idsMyString) @@ -394,7 +394,7 @@ func TestFindInterface(t *testing.T) { userinfo := testEngine.GetTableMapper().Obj2Table("Userinfo") username := testEngine.GetColumnMapper().Obj2Table("Username") - idName := mapper.Obj2Table("Id") + idName := "id" var idsInterface []interface{} err := testEngine.Table(userinfo).Cols(username).Desc(idName).Find(&idsInterface) @@ -409,7 +409,7 @@ func TestFindSliceBytes(t *testing.T) { assertSync(t, new(Userinfo)) userinfo := testEngine.GetTableMapper().Obj2Table("Userinfo") - idName := mapper.Obj2Table("Id") + idName := "id" var ids [][][]byte err := testEngine.Table(userinfo).Desc(idName).Find(&ids) @@ -426,7 +426,7 @@ func TestFindSlicePtrString(t *testing.T) { assertSync(t, new(Userinfo)) userinfo := testEngine.GetTableMapper().Obj2Table("Userinfo") - idName := mapper.Obj2Table("Id") + idName := "id" var ids [][]*string err := testEngine.Table(userinfo).Desc(idName).Find(&ids) @@ -443,7 +443,7 @@ func TestFindMapBytes(t *testing.T) { assertSync(t, new(Userinfo)) userinfo := testEngine.GetTableMapper().Obj2Table("Userinfo") - idName := mapper.Obj2Table("Id") + idName := "id" var ids []map[string][]byte err := testEngine.Table(userinfo).Desc(idName).Find(&ids) @@ -460,7 +460,7 @@ func TestFindMapPtrString(t *testing.T) { assertSync(t, new(Userinfo)) userinfo := testEngine.GetTableMapper().Obj2Table("Userinfo") - idName := mapper.Obj2Table("Id") + idName := "id" var ids []map[string]*string err := testEngine.Table(userinfo).Desc(idName).Find(&ids) @@ -497,7 +497,6 @@ func TestFindBit(t *testing.T) { } func TestFindMark(t *testing.T) { - type Mark struct { Mark1 string `xorm:"VARCHAR(1)"` Mark2 string `xorm:"VARCHAR(1)"` @@ -557,27 +556,31 @@ func TestFindAndCountOneFunc(t *testing.T) { assert.EqualValues(t, 2, len(results)) assert.EqualValues(t, 2, cnt) + idName := "`" + mapper.Obj2Table("Id") + "`" + msgName := "`" + mapper.Obj2Table("Msg") + "`" + contentName := "`" + mapper.Obj2Table("Content") + "`" + results = make([]FindAndCountStruct, 0, 1) - cnt, err = testEngine.Where("msg = ?", true).FindAndCount(&results) + cnt, err = testEngine.Where(msgName+" = ?", true).FindAndCount(&results) assert.NoError(t, err) assert.EqualValues(t, 1, len(results)) assert.EqualValues(t, 1, cnt) results = make([]FindAndCountStruct, 0, 1) - cnt, err = testEngine.Where("msg = ?", true).Limit(1).FindAndCount(&results) + cnt, err = testEngine.Where(msgName+" = ?", true).Limit(1).FindAndCount(&results) assert.NoError(t, err) assert.EqualValues(t, 1, len(results)) assert.EqualValues(t, 1, cnt) results = make([]FindAndCountStruct, 0, 1) - cnt, err = testEngine.Where("msg = ?", true).Select("id, content, msg"). + cnt, err = testEngine.Where(msgName+" = ?", true).Select(idName + ", " + contentName + ", " + msgName). Limit(1).FindAndCount(&results) assert.NoError(t, err) assert.EqualValues(t, 1, len(results)) assert.EqualValues(t, 1, cnt) results = make([]FindAndCountStruct, 0, 1) - cnt, err = testEngine.Where("msg = ?", true).Desc("id"). + cnt, err = testEngine.Where(msgName+" = ?", true).Desc(idName). Limit(1).FindAndCount(&results) assert.NoError(t, err) assert.EqualValues(t, 1, len(results)) From c08a1cd0a5ceba6310d21fda890b6db3d26e6963 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 14 Mar 2019 22:33:48 +0800 Subject: [PATCH 10/12] fix tests --- session_exist_test.go | 2 +- session_find_test.go | 39 +++++----- session_get_test.go | 41 ++++++----- session_insert_test.go | 28 ++++---- session_query_test.go | 30 ++++---- session_raw_test.go | 4 +- session_stats_test.go | 6 +- session_tx_test.go | 7 +- session_update.go | 3 + session_update_test.go | 37 +++++----- statement.go | 37 +++++----- statement_test.go | 9 ++- tag_test.go | 6 +- time_test.go | 12 ++-- types_null_test.go | 159 ++++++++++++----------------------------- 15 files changed, 186 insertions(+), 234 deletions(-) diff --git a/session_exist_test.go b/session_exist_test.go index f10d4b55..c5bf7e24 100644 --- a/session_exist_test.go +++ b/session_exist_test.go @@ -56,7 +56,7 @@ func TestExistStruct(t *testing.T) { assert.NoError(t, err) assert.False(t, has) - tableName := mapper.Obj2Table("RecordExist") + tableName := "`" + mapper.Obj2Table("RecordExist") + "`" has, err = testEngine.SQL("select * from "+testEngine.TableName(tableName, true)+" where "+nameName+" = ?", "test1").Exist() assert.NoError(t, err) diff --git a/session_find_test.go b/session_find_test.go index 0a96ae50..e2a84caf 100644 --- a/session_find_test.go +++ b/session_find_test.go @@ -52,13 +52,13 @@ func TestJoinLimit(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 1, cnt) - tableName := mapper.Obj2Table("CheckList") - tableName2 := mapper.Obj2Table("Salary") - tableName3 := mapper.Obj2Table("Empsetting") + tableName := "`" + mapper.Obj2Table("CheckList") + "`" + tableName2 := "`" + mapper.Obj2Table("Salary") + "`" + tableName3 := "`" + mapper.Obj2Table("Empsetting") + "`" - idName := mapper.Obj2Table("Id") - lIDName := mapper.Obj2Table("Lid") - eIDName := mapper.Obj2Table("Eid") + idName := "`" + mapper.Obj2Table("Id") + "`" + lIDName := "`" + mapper.Obj2Table("Lid") + "`" + eIDName := "`" + mapper.Obj2Table("Eid") + "`" var salaries []Salary err = testEngine.Table(tableName2). @@ -286,11 +286,11 @@ func TestGroupBy(t *testing.T) { assert.NoError(t, prepareEngine()) assertSync(t, new(Userinfo)) - idName := "id" + idName := "`id`" userName := mapper.Obj2Table("Username") users := make([]Userinfo, 0) - err := testEngine.GroupBy(idName + ", " + userName).Find(&users) + err := testEngine.GroupBy(idName + ", `" + userName + "`").Find(&users) assert.NoError(t, err) } @@ -609,17 +609,20 @@ func TestFindMapStringId(t *testing.T) { deviceIDs := []string{"1"} + deviceIDName := "`" + mapper.Obj2Table("Deviceid") + "`" + statusName := "`" + mapper.Obj2Table("Status") + "`" + deviceMaps := make(map[string]*FindMapDevice, len(deviceIDs)) err = testEngine. - Where("status = ?", 1). - In("deviceid", deviceIDs). + Where(statusName+" = ?", 1). + In(deviceIDName, deviceIDs). Find(&deviceMaps) assert.NoError(t, err) deviceMaps2 := make(map[string]FindMapDevice, len(deviceIDs)) err = testEngine. - Where("status = ?", 1). - In("deviceid", deviceIDs). + Where(statusName+" = ?", 1). + In(deviceIDName, deviceIDs). Find(&deviceMaps2) assert.NoError(t, err) @@ -650,7 +653,7 @@ func TestFindMapStringId(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 1, cnt) - sum, err := testEngine.SumInt(new(FindMapDevice), "status") + sum, err := testEngine.SumInt(new(FindMapDevice), statusName) assert.NoError(t, err) assert.EqualValues(t, 2, sum) @@ -783,12 +786,12 @@ func TestFindJoin(t *testing.T) { assert.NoError(t, prepareEngine()) assertSync(t, new(SceneItem), new(DeviceUserPrivrels)) - tableName1 := mapper.Obj2Table("SceneItem") - tableName2 := mapper.Obj2Table("DeviceUserPrivrels") + tableName1 := "`" + mapper.Obj2Table("SceneItem") + "`" + tableName2 := "`" + mapper.Obj2Table("DeviceUserPrivrels") + "`" - deviceIDName := mapper.Obj2Table("DeviceId") - userIDName := mapper.Obj2Table("UserId") - typeName := mapper.Obj2Table("Type") + deviceIDName := "`" + mapper.Obj2Table("DeviceId") + "`" + userIDName := "`" + mapper.Obj2Table("UserId") + "`" + typeName := "`" + mapper.Obj2Table("Type") + "`" var scenes []SceneItem err := testEngine.Join("LEFT OUTER", tableName2, tableName1+"."+deviceIDName+"="+tableName2+"."+deviceIDName). diff --git a/session_get_test.go b/session_get_test.go index e7e40b8a..e05b824e 100644 --- a/session_get_test.go +++ b/session_get_test.go @@ -35,16 +35,20 @@ func TestGetVar(t *testing.T) { _, err := testEngine.InsertOne(&data) assert.NoError(t, err) - tableName := mapper.Obj2Table("GetVar") + tableName := "`" + mapper.Obj2Table("GetVar") + "`" + idName := mapper.Obj2Table("Id") + msgName := mapper.Obj2Table("Msg") + ageName := mapper.Obj2Table("Age") + moneyName := mapper.Obj2Table("Money") var msg string - has, err := testEngine.Table(tableName).Cols("msg").Get(&msg) + has, err := testEngine.Table(tableName).Cols("`" + msgName + "`").Get(&msg) assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, "hi", msg) var age int - has, err = testEngine.Table(tableName).Cols("age").Get(&age) + has, err = testEngine.Table(tableName).Cols("`" + ageName + "`").Get(&age) assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, 28, age) @@ -56,9 +60,9 @@ func TestGetVar(t *testing.T) { assert.Equal(t, 28, ageMax) var age2 int64 - has, err = testEngine.Table(tableName).Cols("age"). - Where("age > ?", 20). - And("age < ?", 30). + has, err = testEngine.Table(tableName).Cols("`"+ageName+"`"). + Where("`"+ageName+"` > ?", 20). + And("`"+ageName+"` < ?", 30). Get(&age2) assert.NoError(t, err) assert.Equal(t, true, has) @@ -128,52 +132,47 @@ func TestGetVar(t *testing.T) { assert.EqualValues(t, 28, age10) var id sql.NullInt64 - has, err = testEngine.Table(tableName).Cols("id").Get(&id) + has, err = testEngine.Table(tableName).Cols("`" + idName + "`").Get(&id) assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, true, id.Valid) assert.EqualValues(t, data.Id, id.Int64) var msgNull sql.NullString - has, err = testEngine.Table(tableName).Cols("msg").Get(&msgNull) + has, err = testEngine.Table(tableName).Cols("`" + msgName + "`").Get(&msgNull) assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, true, msgNull.Valid) assert.EqualValues(t, data.Msg, msgNull.String) var nullMoney sql.NullFloat64 - has, err = testEngine.Table(tableName).Cols("money").Get(&nullMoney) + has, err = testEngine.Table(tableName).Cols("`" + moneyName + "`").Get(&nullMoney) assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, true, nullMoney.Valid) assert.EqualValues(t, data.Money, nullMoney.Float64) var money float64 - has, err = testEngine.Table(tableName).Cols("money").Get(&money) + has, err = testEngine.Table(tableName).Cols("`" + moneyName + "`").Get(&money) assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, "1.5", fmt.Sprintf("%.1f", money)) var money2 float64 if testEngine.Dialect().DBType() == core.MSSQL { - has, err = testEngine.SQL("SELECT TOP 1 money FROM " + testEngine.TableName(tableName, true)).Get(&money2) + has, err = testEngine.SQL("SELECT TOP 1 `" + moneyName + "` FROM " + testEngine.TableName(tableName, true)).Get(&money2) } else { - has, err = testEngine.SQL("SELECT money FROM " + testEngine.TableName(tableName, true) + " LIMIT 1").Get(&money2) + has, err = testEngine.SQL("SELECT `" + moneyName + "` FROM " + testEngine.TableName(tableName, true) + " LIMIT 1").Get(&money2) } assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, "1.5", fmt.Sprintf("%.1f", money2)) var money3 float64 - has, err = testEngine.SQL("SELECT money FROM " + testEngine.TableName(tableName, true) + " WHERE money > 20").Get(&money3) + has, err = testEngine.SQL("SELECT `" + moneyName + "` FROM " + testEngine.TableName(tableName, true) + " WHERE `" + moneyName + "` > 20").Get(&money3) assert.NoError(t, err) assert.Equal(t, false, has) - idName := mapper.Obj2Table("Id") - ageName := mapper.Obj2Table("Age") - msgName := mapper.Obj2Table("Msg") - moneyName := mapper.Obj2Table("Money") - var valuesString = make(map[string]string) has, err = testEngine.Table(tableName).Get(&valuesString) assert.NoError(t, err) @@ -187,7 +186,7 @@ func TestGetVar(t *testing.T) { // for mymysql driver, interface{} will be []byte, so ignore it currently if testEngine.Dialect().DriverName() != "mymysql" { var valuesInter = make(map[string]interface{}) - has, err = testEngine.Table(tableName).Where(idName+" = ?", 1).Select("*").Get(&valuesInter) + has, err = testEngine.Table(tableName).Where("`"+idName+"` = ?", 1).Select("*").Get(&valuesInter) assert.NoError(t, err) assert.Equal(t, true, has) assert.Equal(t, 5, len(valuesInter)) @@ -405,10 +404,10 @@ func TestGetStructId(t *testing.T) { Id int64 } - idName := mapper.Obj2Table("Id") + idName := "`" + mapper.Obj2Table("Id") + "`" //var id int64 var maxid maxidst - sql := "select max(" + idName + ") as id from " + testEngine.TableName(&TestGetStruct{}, true) + sql := "select max(" + idName + ") as id from " + testEngine.Quote(testEngine.TableName(&TestGetStruct{}, true)) has, err := testEngine.SQL(sql).Get(&maxid) assert.NoError(t, err) assert.True(t, has) diff --git a/session_insert_test.go b/session_insert_test.go index c1184a18..aeac44f6 100644 --- a/session_insert_test.go +++ b/session_insert_test.go @@ -768,10 +768,14 @@ func TestInsertMap(t *testing.T) { assert.NoError(t, prepareEngine()) assertSync(t, new(InsertMap)) + widthName := mapper.Obj2Table("Width") + heightName := mapper.Obj2Table("Height") + nameName := mapper.Obj2Table("Name") + cnt, err := testEngine.Table(new(InsertMap)).Insert(map[string]interface{}{ - "width": 20, - "height": 10, - "name": "lunny", + widthName: 20, + heightName: 10, + nameName: "lunny", }) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) @@ -787,9 +791,9 @@ func TestInsertMap(t *testing.T) { tableName := mapper.Obj2Table("InsertMap") cnt, err = testEngine.Table(tableName).Insert(map[string]interface{}{ - "width": 30, - "height": 10, - "name": "lunny", + widthName: 30, + heightName: 10, + nameName: "lunny", }) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) @@ -807,14 +811,14 @@ func TestInsertMap(t *testing.T) { cnt, err = testEngine.Table(tableName).Insert([]map[string]interface{}{ { - "width": 40, - "height": 10, - "name": "lunny", + widthName: 40, + heightName: 10, + nameName: "lunny", }, { - "width": 50, - "height": 10, - "name": "lunny", + widthName: 50, + heightName: 10, + nameName: "lunny", }, }) assert.NoError(t, err) diff --git a/session_query_test.go b/session_query_test.go index da4b6465..b7f48deb 100644 --- a/session_query_test.go +++ b/session_query_test.go @@ -39,7 +39,7 @@ func TestQueryString(t *testing.T) { tableName := mapper.Obj2Table("GetVar2") - records, err := testEngine.QueryString("select * from " + testEngine.TableName(tableName, true)) + records, err := testEngine.QueryString("select * from `" + testEngine.TableName(tableName, true) + "`") assert.NoError(t, err) assert.Equal(t, 1, len(records)) assert.Equal(t, 5, len(records[0])) @@ -71,7 +71,7 @@ func TestQueryString2(t *testing.T) { _, err := testEngine.Insert(data) assert.NoError(t, err) - tableName := mapper.Obj2Table("GetVar3") + tableName := "`" + mapper.Obj2Table("GetVar3") + "`" idName := mapper.Obj2Table("Id") msgName := mapper.Obj2Table("Msg") @@ -141,7 +141,7 @@ func TestQueryInterface(t *testing.T) { _, err := testEngine.InsertOne(data) assert.NoError(t, err) - tableName := mapper.Obj2Table("GetVarInterface") + tableName := "`" + mapper.Obj2Table("GetVarInterface") + "`" idName := mapper.Obj2Table("Id") msgName := mapper.Obj2Table("Msg") ageName := mapper.Obj2Table("Age") @@ -202,7 +202,7 @@ func TestQueryNoParams(t *testing.T) { assert.EqualValues(t, 3000, money) } - tableName := mapper.Obj2Table("QueryNoParams") + tableName := "`" + mapper.Obj2Table("QueryNoParams") + "`" results, err := testEngine.Table(tableName).Limit(10).Query() assert.NoError(t, err) assertResult(t, results) @@ -228,7 +228,7 @@ func TestQueryStringNoParam(t *testing.T) { _, err := testEngine.Insert(data) assert.NoError(t, err) - tableName := mapper.Obj2Table("GetVar4") + tableName := "`" + mapper.Obj2Table("GetVar4") + "`" idName := mapper.Obj2Table("Id") msgName := mapper.Obj2Table("Msg") @@ -243,7 +243,7 @@ func TestQueryStringNoParam(t *testing.T) { assert.EqualValues(t, "0", records[0][msgName]) } - records, err = testEngine.Table(tableName).Where(builder.Eq{idName: 1}).QueryString() + records, err = testEngine.Table(tableName).Where(builder.Eq{"`" + idName + "`": 1}).QueryString() assert.NoError(t, err) assert.EqualValues(t, 1, len(records)) assert.EqualValues(t, "1", records[0][idName]) @@ -270,7 +270,7 @@ func TestQuerySliceStringNoParam(t *testing.T) { _, err := testEngine.Insert(data) assert.NoError(t, err) - tableName := mapper.Obj2Table("GetVar6") + tableName := "`" + mapper.Obj2Table("GetVar6") + "`" records, err := testEngine.Table(tableName).Limit(1).QuerySliceString() assert.NoError(t, err) @@ -283,7 +283,7 @@ func TestQuerySliceStringNoParam(t *testing.T) { } idName := mapper.Obj2Table("Id") - records, err = testEngine.Table(tableName).Where(builder.Eq{idName: 1}).QuerySliceString() + records, err = testEngine.Table(tableName).Where(builder.Eq{"`" + idName + "`": 1}).QuerySliceString() assert.NoError(t, err) assert.EqualValues(t, 1, len(records)) assert.EqualValues(t, "1", records[0][0]) @@ -310,7 +310,7 @@ func TestQueryInterfaceNoParam(t *testing.T) { _, err := testEngine.Insert(data) assert.NoError(t, err) - tableName := mapper.Obj2Table("GetVar5") + tableName := "`" + mapper.Obj2Table("GetVar5") + "`" idName := mapper.Obj2Table("Id") msgName := mapper.Obj2Table("Msg") @@ -320,7 +320,7 @@ func TestQueryInterfaceNoParam(t *testing.T) { assert.EqualValues(t, 1, toInt64(records[0][idName])) assert.EqualValues(t, 0, toInt64(records[0][msgName])) - records, err = testEngine.Table(tableName).Where(builder.Eq{idName: 1}).QueryInterface() + records, err = testEngine.Table(tableName).Where(builder.Eq{"`" + idName + "`": 1}).QueryInterface() assert.NoError(t, err) assert.EqualValues(t, 1, len(records)) assert.EqualValues(t, 1, toInt64(records[0][idName])) @@ -373,7 +373,7 @@ func TestQueryWithBuilder(t *testing.T) { } tableName := mapper.Obj2Table("QueryWithBuilder") - results, err := testEngine.Query(builder.Select("*").From(testEngine.TableName(tableName, true))) + results, err := testEngine.Query(builder.Select("*").From("`" + testEngine.TableName(tableName, true) + "`")) assert.NoError(t, err) assertResult(t, results) } @@ -414,11 +414,11 @@ func TestJoinWithSubQuery(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 1, cnt) - tableName := mapper.Obj2Table("JoinWithSubQueryDepart") - tableName1 := mapper.Obj2Table("JoinWithSubQuery1") + tableName := "`" + mapper.Obj2Table("JoinWithSubQueryDepart") + "`" + tableName1 := "`" + mapper.Obj2Table("JoinWithSubQuery1") + "`" - departID := mapper.Obj2Table("DepartId") - idName := mapper.Obj2Table("Id") + departID := "`" + mapper.Obj2Table("DepartId") + "`" + idName := "`" + mapper.Obj2Table("Id") + "`" var querys []JoinWithSubQuery1 err = testEngine.Join("INNER", builder.Select(idName).From(testEngine.Quote(testEngine.TableName(tableName, true))), diff --git a/session_raw_test.go b/session_raw_test.go index 8bfabb4d..26ba3b09 100644 --- a/session_raw_test.go +++ b/session_raw_test.go @@ -25,13 +25,13 @@ func TestExecAndQuery(t *testing.T) { uidName := mapper.Obj2Table("Uid") nameName := mapper.Obj2Table("Name") - res, err := testEngine.Exec("INSERT INTO "+testEngine.TableName(tableName, true)+" ("+uidName+", "+nameName+") VALUES (?, ?)", 1, "user") + res, err := testEngine.Exec("INSERT INTO `"+testEngine.TableName(tableName, true)+"` (`"+uidName+"`, `"+nameName+"`) VALUES (?, ?)", 1, "user") assert.NoError(t, err) cnt, err := res.RowsAffected() assert.NoError(t, err) assert.EqualValues(t, 1, cnt) - results, err := testEngine.Query("select * from " + testEngine.TableName(tableName, true)) + results, err := testEngine.Query("select * from `" + testEngine.TableName(tableName, true) + "`") assert.NoError(t, err) assert.EqualValues(t, 1, len(results)) id, err := strconv.Atoi(string(results[0][uidName])) diff --git a/session_stats_test.go b/session_stats_test.go index 08a554ca..868bb8ab 100644 --- a/session_stats_test.go +++ b/session_stats_test.go @@ -153,8 +153,9 @@ func TestSumCustomColumn(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 3, cnt) + intName := mapper.Obj2Table("Int") sumInt, err := testEngine.Sum(new(SumStruct2), - "CASE WHEN `int` <= 2 THEN `int` ELSE 0 END") + "CASE WHEN `"+intName+"` <= 2 THEN `"+intName+"` ELSE 0 END") assert.NoError(t, err) assert.EqualValues(t, 3, int(sumInt)) } @@ -214,8 +215,7 @@ func TestSQLCount(t *testing.T) { tableName := mapper.Obj2Table("UserinfoCount2") idName := mapper.Obj2Table("Id") - total, err := testEngine.SQL("SELECT count(" + idName + ") FROM " + testEngine.TableName(tableName, true)). - Count() + total, err := testEngine.SQL("SELECT count(`" + idName + "`) FROM `" + testEngine.TableName(tableName, true) + "`").Count() assert.NoError(t, err) assert.EqualValues(t, 0, total) } diff --git a/session_tx_test.go b/session_tx_test.go index b00991d7..ea88343c 100644 --- a/session_tx_test.go +++ b/session_tx_test.go @@ -79,7 +79,7 @@ func TestCombineTransaction(t *testing.T) { _, err = session.Where("id = ?", 0).Update(&user2) assert.NoError(t, err) - _, err = session.Exec("delete from "+testEngine.TableName(tableName, true)+" where "+userName+" = ?", user2.Username) + _, err = session.Exec("delete from `"+testEngine.TableName(tableName, true)+"` where `"+userName+"` = ?", user2.Username) assert.NoError(t, err) err = session.Commit() @@ -107,7 +107,8 @@ func TestMultipleTransaction(t *testing.T) { assert.NoError(t, err) user2 := MultipleTransaction{Name: "zzz"} - _, err = session.Where("id = ?", 0).Update(&user2) + idName := mapper.Obj2Table("Id") + _, err = session.Where("`"+idName+"` = ?", 0).Update(&user2) assert.NoError(t, err) err = session.Commit() @@ -121,7 +122,7 @@ func TestMultipleTransaction(t *testing.T) { err = session.Begin() assert.NoError(t, err) - _, err = session.Where("id=?", m1.Id).Delete(new(MultipleTransaction)) + _, err = session.Where("`"+idName+"`=?", m1.Id).Delete(new(MultipleTransaction)) assert.NoError(t, err) err = session.Commit() diff --git a/session_update.go b/session_update.go index c5c65a45..1bb0e65e 100644 --- a/session_update.go +++ b/session_update.go @@ -183,6 +183,9 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6 if session.statement.ColumnStr == "" { colNames, args = session.statement.buildUpdates(bean, false, false, false, false, true) + if session.statement.lastError != nil { + return 0, err + } } else { colNames, args, err = session.genUpdateColumns(bean) if err != nil { diff --git a/session_update_test.go b/session_update_test.go index 2e81934b..c0e57a89 100644 --- a/session_update_test.go +++ b/session_update_test.go @@ -34,9 +34,10 @@ func TestUpdateMap(t *testing.T) { tableName := mapper.Obj2Table("UpdateTable") nameName := mapper.Obj2Table("Name") - ageName := mapper.Obj2Table("age") + ageName := mapper.Obj2Table("Age") + idName := mapper.Obj2Table("Id") - cnt, err := testEngine.Table(tableName).Where("id = ?", tb.Id).Update(map[string]interface{}{ + cnt, err := testEngine.Table(tableName).Where("`"+idName+"` = ?", tb.Id).Update(map[string]interface{}{ nameName: "test2", ageName: 36, }) @@ -68,7 +69,7 @@ func TestUpdateLimit(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 1, cnt) - nameName := mapper.Obj2Table("Name") + nameName := "`" + mapper.Obj2Table("Name") + "`" cnt, err = testEngine.OrderBy(nameName + " desc").Limit(1).Update(&UpdateTable2{ Age: 30, @@ -275,8 +276,8 @@ func TestUpdateMap2(t *testing.T) { assertSync(t, new(UpdateMustCols)) tableName := mapper.Obj2Table("UpdateMustCols") - _, err := testEngine.Table(tableName).Where("id =?", 1).Update(map[string]interface{}{ - "bool": true, + _, err := testEngine.Table(tableName).Where("`"+mapper.Obj2Table("Id")+"` =?", 1).Update(map[string]interface{}{ + mapper.Obj2Table("Bool"): true, }) assert.NoError(t, err) } @@ -300,7 +301,14 @@ func TestUpdate1(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 1, cnt) - condi := Condi{"username": "zzz", "departname": ""} + userName := "`" + mapper.Obj2Table("Username") + "`" + heightName := "`" + mapper.Obj2Table("Height") + "`" + departName := "`" + mapper.Obj2Table("Departname") + "`" + detailIDName := "`detail_id`" + isMan := "`" + mapper.Obj2Table("IsMan") + "`" + createdName := "`" + mapper.Obj2Table("Created") + "`" + + condi := Condi{userName: "zzz", departName: ""} cnt, err = testEngine.Table(&user).ID(ori.Uid).Update(&condi) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) @@ -312,13 +320,6 @@ func TestUpdate1(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, total, cnt) - userName := mapper.Obj2Table("Username") - heightName := mapper.Obj2Table("Height") - departName := mapper.Obj2Table("Departname") - detailIDName := "detail_id" - isMan := mapper.Obj2Table("IsMan") - createdName := mapper.Obj2Table("Created") - // nullable update { user := &Userinfo{Username: "not null data", Height: 180.5} @@ -758,7 +759,9 @@ func TestNewUpdate(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 0, af) - af, err = testEngine.Table(new(TbUserInfo)).Where("phone=?", 13126564922).Update(&changeUsr) + phoneName := "`" + mapper.Obj2Table("Phone") + "`" + + af, err = testEngine.Table(new(TbUserInfo)).Where(phoneName+"=?", 13126564922).Update(&changeUsr) assert.NoError(t, err) assert.EqualValues(t, 0, af) } @@ -889,7 +892,7 @@ func TestUpdateMapCondition(t *testing.T) { _, err := testEngine.Insert(&c) assert.NoError(t, err) - idName := mapper.Obj2Table("Id") + idName := "`" + mapper.Obj2Table("Id") + "`" cnt, err := testEngine.Update(&UpdateMapCondition{ String: "string1", @@ -1076,8 +1079,10 @@ func TestUpdateDeleted(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 0, cnt) + nameName := mapper.Obj2Table("Name") + cnt, err = testEngine.Table(&UpdateDeletedStruct{}).ID(s.Id).Update(map[string]interface{}{ - "name": "test1", + nameName: "test1", }) assert.NoError(t, err) assert.EqualValues(t, 0, cnt) diff --git a/statement.go b/statement.go index 3cc0831e..bab140f6 100644 --- a/statement.go +++ b/statement.go @@ -6,6 +6,7 @@ package xorm import ( "database/sql/driver" + "errors" "fmt" "reflect" "strings" @@ -268,8 +269,8 @@ func (statement *Statement) buildUpdates(bean interface{}, fieldValuePtr, err := col.ValueOf(bean) if err != nil { - engine.logger.Error(err) - continue + statement.lastError = err + return colNames, args } fieldValue := *fieldValuePtr @@ -305,10 +306,10 @@ func (statement *Statement) buildUpdates(bean interface{}, if structConvert, ok := fieldValue.Addr().Interface().(core.Conversion); ok { data, err := structConvert.ToDB() if err != nil { - engine.logger.Error(err) - } else { - val = data + statement.lastError = err + return colNames, args } + val = data goto APPEND } } @@ -316,10 +317,10 @@ func (statement *Statement) buildUpdates(bean interface{}, if structConvert, ok := fieldValue.Interface().(core.Conversion); ok { data, err := structConvert.ToDB() if err != nil { - engine.logger.Error(err) - } else { - val = data + statement.lastError = err + return colNames, args } + val = data goto APPEND } @@ -397,8 +398,8 @@ func (statement *Statement) buildUpdates(bean interface{}, continue } } else { - // TODO: how to handler? - panic("not supported") + statement.lastError = errors.New("Not supported") + return colNames, args } } else { val = fieldValue.Interface() @@ -408,7 +409,8 @@ func (statement *Statement) buildUpdates(bean interface{}, if requiredField || !isStructZero(fieldValue) { bytes, err := DefaultJSONHandler.Marshal(fieldValue.Interface()) if err != nil { - panic(fmt.Sprintf("mashal %v failed", fieldValue.Interface())) + statement.lastError = err + return colNames, args } if col.SQLType.IsText() { val = string(bytes) @@ -437,8 +439,8 @@ func (statement *Statement) buildUpdates(bean interface{}, if col.SQLType.IsText() { bytes, err := DefaultJSONHandler.Marshal(fieldValue.Interface()) if err != nil { - engine.logger.Error(err) - continue + statement.lastError = err + return colNames, args } val = string(bytes) } else if col.SQLType.IsBlob() { @@ -457,8 +459,8 @@ func (statement *Statement) buildUpdates(bean interface{}, } else { bytes, err = DefaultJSONHandler.Marshal(fieldValue.Interface()) if err != nil { - engine.logger.Error(err) - continue + statement.lastError = err + return colNames, args } val = bytes } @@ -471,9 +473,6 @@ func (statement *Statement) buildUpdates(bean interface{}, APPEND: args = append(args, val) - if col.IsPrimaryKey && engine.dialect.DBType() == "ql" { - continue - } colNames = append(colNames, fmt.Sprintf("%v = ?", engine.Quote(col.Name))) } @@ -752,7 +751,7 @@ func (statement *Statement) Join(joinOP string, tablename interface{}, condition statement.joinArgs = append(statement.joinArgs, subQueryArgs...) default: tbName := statement.Engine.TableName(tablename, true) - fmt.Fprintf(&buf, "%s ON %v", tbName, condition) + fmt.Fprintf(&buf, "%s ON %v", statement.Engine.Quote(tbName), condition) } statement.JoinStr = buf.String() diff --git a/statement_test.go b/statement_test.go index ff84eba4..48ef6000 100644 --- a/statement_test.go +++ b/statement_test.go @@ -197,10 +197,11 @@ func TestDistinctAndCols(t *testing.T) { assert.NoError(t, err) assert.EqualValues(t, 1, cnt) - tableName := mapper.Obj2Table("DistinctAndCols") + tableName := "`" + mapper.Obj2Table("DistinctAndCols") + "`" + nameName := "`" + mapper.Obj2Table("Name") + "`" var names []string - err = testEngine.Table(tableName).Cols("name").Distinct("name").Find(&names) + err = testEngine.Table(tableName).Cols(nameName).Distinct(nameName).Find(&names) assert.NoError(t, err) assert.EqualValues(t, 1, len(names)) assert.EqualValues(t, "test", names[0]) @@ -214,9 +215,11 @@ func TestUpdateIgnoreOnlyFromDBFields(t *testing.T) { IngoreField string `xorm:"-"` } + idName := mapper.Obj2Table("Id") + assertGetRecord := func() *TestOnlyFromDBField { var record TestOnlyFromDBField - has, err := testEngine.Where("id = ?", 1).Get(&record) + has, err := testEngine.Where("`"+idName+"` = ?", 1).Get(&record) assert.NoError(t, err) assert.EqualValues(t, true, has) assert.EqualValues(t, "", record.OnlyFromDBField) diff --git a/tag_test.go b/tag_test.go index 6e55f1f0..f0d02560 100644 --- a/tag_test.go +++ b/tag_test.go @@ -140,7 +140,8 @@ func TestLowerCase(t *testing.T) { err := testEngine.Sync2(&Lowercase{}) assert.NoError(t, err) - _, err = testEngine.Where("id > 0").Delete(&Lowercase{}) + idName := mapper.Obj2Table("Id") + _, err = testEngine.Where("`" + idName + "` > 0").Delete(&Lowercase{}) assert.NoError(t, err) _, err = testEngine.Insert(&Lowercase{ended: 1}) @@ -526,7 +527,8 @@ func TestTagTime(t *testing.T) { assert.EqualValues(t, s.Created.Format("2006-01-02 15:04:05"), u.Created.Format("2006-01-02 15:04:05")) var tm string - has, err = testEngine.Table(&s).Cols("created").Get(&tm) + createdName := "`" + mapper.Obj2Table("Created") + "`" + has, err = testEngine.Table(&s).Cols(createdName).Get(&tm) assert.NoError(t, err) assert.True(t, has) assert.EqualValues(t, s.Created.UTC().Format("2006-01-02 15:04:05"), diff --git a/time_test.go b/time_test.go index b7e4d12b..3a27f43b 100644 --- a/time_test.go +++ b/time_test.go @@ -283,8 +283,9 @@ func TestTimeUserDeleted(t *testing.T) { assert.True(t, isTimeZero(user2.DeletedAt)) fmt.Println("user2", user2.CreatedAt, user2.UpdatedAt, user2.DeletedAt) + idName := "`" + mapper.Obj2Table("Id") + "`" var user3 UserDeleted - cnt, err = testEngine.Where("id = ?", "lunny").Delete(&user3) + cnt, err = testEngine.Where(idName+" = ?", "lunny").Delete(&user3) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) assert.True(t, !isTimeZero(user3.DeletedAt)) @@ -337,7 +338,8 @@ func TestTimeUserDeletedDiffLoc(t *testing.T) { fmt.Println("user2", user2.CreatedAt, user2.UpdatedAt, user2.DeletedAt) var user3 UserDeleted2 - cnt, err = testEngine.Where("id = ?", "lunny").Delete(&user3) + idName := "`" + mapper.Obj2Table("Id") + "`" + cnt, err = testEngine.Where(idName+" = ?", "lunny").Delete(&user3) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) assert.True(t, !isTimeZero(user3.DeletedAt)) @@ -408,7 +410,8 @@ func TestCustomTimeUserDeleted(t *testing.T) { fmt.Println("user2", user2.CreatedAt, user2.UpdatedAt, user2.DeletedAt) var user3 UserDeleted3 - cnt, err = testEngine.Where("id = ?", "lunny").Delete(&user3) + idName := "`" + mapper.Obj2Table("Id") + "`" + cnt, err = testEngine.Where(idName+" = ?", "lunny").Delete(&user3) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) assert.True(t, !isTimeZero(time.Time(user3.DeletedAt))) @@ -461,7 +464,8 @@ func TestCustomTimeUserDeletedDiffLoc(t *testing.T) { fmt.Println("user2", user2.CreatedAt, user2.UpdatedAt, user2.DeletedAt) var user3 UserDeleted4 - cnt, err = testEngine.Where("id = ?", "lunny").Delete(&user3) + idName := "`" + mapper.Obj2Table("Id") + "`" + cnt, err = testEngine.Where(idName+" = ?", "lunny").Delete(&user3) assert.NoError(t, err) assert.EqualValues(t, 1, cnt) assert.True(t, !isTimeZero(time.Time(user3.DeletedAt))) diff --git a/types_null_test.go b/types_null_test.go index 22fc1024..c347b399 100644 --- a/types_null_test.go +++ b/types_null_test.go @@ -60,20 +60,14 @@ func TestCreateNullStructTable(t *testing.T) { assert.NoError(t, prepareEngine()) err := testEngine.CreateTables(new(NullType)) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) } func TestDropNullStructTable(t *testing.T) { assert.NoError(t, prepareEngine()) err := testEngine.DropTables(new(NullType)) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) } func TestNullStructInsert(t *testing.T) { @@ -83,16 +77,9 @@ func TestNullStructInsert(t *testing.T) { if true { item := new(NullType) _, err := testEngine.Insert(item) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) fmt.Println(item) - if item.Id != 1 { - err = errors.New("insert error") - t.Error(err) - panic(err) - } + assert.EqualValues(t, 1, item.Id) } if true { @@ -103,16 +90,9 @@ func TestNullStructInsert(t *testing.T) { IsMan: sql.NullBool{true, true}, } _, err := testEngine.Insert(&item) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) fmt.Println(item) - if item.Id != 2 { - err = errors.New("insert error") - t.Error(err) - panic(err) - } + assert.EqualValues(t, 2, item.Id) } if true { @@ -131,10 +111,7 @@ func TestNullStructInsert(t *testing.T) { } _, err := testEngine.Insert(&items) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) fmt.Println(items) } } @@ -171,36 +148,27 @@ func TestNullStructUpdate(t *testing.T) { }) assert.NoError(t, err) + idName := "`" + mapper.Obj2Table("Id") + "`" + ageName := "`" + mapper.Obj2Table("Age") + "`" + heightName := "`" + mapper.Obj2Table("Height") + "`" + isManName := "`" + mapper.Obj2Table("IsMan") + "`" + if true { // 测试可插入NULL item := new(NullType) item.Age = sql.NullInt64{23, true} item.Height = sql.NullFloat64{0, false} // update to NULL - affected, err := testEngine.ID(2).Cols("age", "height", "is_man").Update(item) - if err != nil { - t.Error(err) - panic(err) - } - if affected != 1 { - err := errors.New("update failed") - t.Error(err) - panic(err) - } + affected, err := testEngine.ID(2).Cols(ageName, heightName, isManName).Update(item) + assert.NoError(t, err) + assert.EqualValues(t, 1, affected) } if true { // 测试In update item := new(NullType) item.Age = sql.NullInt64{23, true} - affected, err := testEngine.In("id", 3, 4).Cols("age", "height", "is_man").Update(item) - if err != nil { - t.Error(err) - panic(err) - } - if affected != 2 { - err := errors.New("update failed") - t.Error(err) - panic(err) - } + affected, err := testEngine.In(idName, 3, 4).Cols(ageName, heightName, isManName).Update(item) + assert.NoError(t, err) + assert.EqualValues(t, 2, affected) } if true { // 测试where @@ -209,11 +177,8 @@ func TestNullStructUpdate(t *testing.T) { item.IsMan = sql.NullBool{true, true} item.Age = sql.NullInt64{34, true} - _, err := testEngine.Where("age > ?", 34).Update(item) - if err != nil { - t.Error(err) - panic(err) - } + _, err := testEngine.Where(ageName+" > ?", 34).Update(item) + assert.NoError(t, err) } if true { // 修改全部时,插入空值 @@ -225,13 +190,9 @@ func TestNullStructUpdate(t *testing.T) { } _, err := testEngine.AllCols().ID(6).Update(item) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) fmt.Println(item) } - } func TestNullStructFind(t *testing.T) { @@ -269,14 +230,9 @@ func TestNullStructFind(t *testing.T) { if true { item := new(NullType) has, err := testEngine.ID(1).Get(item) - if err != nil { - t.Error(err) - panic(err) - } - if !has { - t.Error(errors.New("no find id 1")) - panic(err) - } + assert.NoError(t, err) + assert.True(t, has) + fmt.Println(item) if item.Id != 1 || item.Name.Valid || item.Age.Valid || item.Height.Valid || item.IsMan.Valid { @@ -291,14 +247,8 @@ func TestNullStructFind(t *testing.T) { item.Id = 2 has, err := testEngine.Get(item) - if err != nil { - t.Error(err) - panic(err) - } - if !has { - t.Error(errors.New("no find id 2")) - panic(err) - } + assert.NoError(t, err) + assert.True(t, has) fmt.Println(item) } @@ -306,23 +256,16 @@ func TestNullStructFind(t *testing.T) { item := make([]NullType, 0) err := testEngine.ID(2).Find(&item) - if err != nil { - t.Error(err) - panic(err) - } - + assert.NoError(t, err) fmt.Println(item) } if true { item := make([]NullType, 0) - err := testEngine.Asc("age").Find(&item) - if err != nil { - t.Error(err) - panic(err) - } - + ageName := "`" + mapper.Obj2Table("Age") + "`" + err := testEngine.Asc(ageName).Find(&item) + assert.NoError(t, err) for k, v := range item { fmt.Println(k, v) } @@ -334,16 +277,14 @@ func TestNullStructIterate(t *testing.T) { assertSync(t, new(NullType)) if true { - err := testEngine.Where("age IS NOT NULL").OrderBy("age").Iterate(new(NullType), + ageName := "`" + mapper.Obj2Table("Age") + "`" + err := testEngine.Where(ageName+" IS NOT NULL").OrderBy(ageName).Iterate(new(NullType), func(i int, bean interface{}) error { nultype := bean.(*NullType) fmt.Println(i, nultype) return nil }) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) } } @@ -353,11 +294,9 @@ func TestNullStructCount(t *testing.T) { if true { item := new(NullType) - total, err := testEngine.Where("age IS NOT NULL").Count(item) - if err != nil { - t.Error(err) - panic(err) - } + ageName := "`" + mapper.Obj2Table("Age") + "`" + total, err := testEngine.Where(ageName + " IS NOT NULL").Count(item) + assert.NoError(t, err) fmt.Println(total) } } @@ -367,19 +306,14 @@ func TestNullStructRows(t *testing.T) { assertSync(t, new(NullType)) item := new(NullType) - rows, err := testEngine.Where("id > ?", 1).Rows(item) - if err != nil { - t.Error(err) - panic(err) - } + idName := "`" + mapper.Obj2Table("Id") + "`" + rows, err := testEngine.Where(idName+" > ?", 1).Rows(item) + assert.NoError(t, err) defer rows.Close() for rows.Next() { err = rows.Scan(item) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) fmt.Println(item) } } @@ -391,14 +325,9 @@ func TestNullStructDelete(t *testing.T) { item := new(NullType) _, err := testEngine.ID(1).Delete(item) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) - _, err = testEngine.Where("id > ?", 1).Delete(item) - if err != nil { - t.Error(err) - panic(err) - } + idName := "`" + mapper.Obj2Table("Id") + "`" + _, err = testEngine.Where(idName+" > ?", 1).Delete(item) + assert.NoError(t, err) } From b16abb12d9753a5fa5eb56b139585a6dd2f2623d Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 20 Mar 2019 20:41:45 +0800 Subject: [PATCH 11/12] fix table name --- engine_table.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine_table.go b/engine_table.go index eb5aa850..80ad134d 100644 --- a/engine_table.go +++ b/engine_table.go @@ -20,7 +20,7 @@ func (engine *Engine) tbNameWithSchema(v string) string { engine.dialect.URI().Schema != "" && engine.dialect.URI().Schema != postgresPublicSchema && strings.Index(v, ".") == -1 { - return engine.dialect.URI().Schema + "." + v + return engine.Quote(engine.dialect.URI().Schema) + "." + v } return v } From f5248365ee9765d8bafa11c31033209515be9836 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 29 Sep 2019 12:46:25 +0800 Subject: [PATCH 12/12] update master --- session_update_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/session_update_test.go b/session_update_test.go index c0e57a89..6120654a 100644 --- a/session_update_test.go +++ b/session_update_test.go @@ -12,7 +12,6 @@ import ( "time" "github.com/stretchr/testify/assert" - "xorm.io/core" ) func TestUpdateMap(t *testing.T) {