1
0
mirror of https://github.com/astaxie/beego.git synced 2025-07-07 01:50:19 +00:00

orm insert or update

This commit is contained in:
“fudali113”
2016-07-20 14:37:05 +08:00
parent d11823548b
commit 4b8ecced83
4 changed files with 198 additions and 0 deletions

View File

@ -2174,3 +2174,76 @@ func TestIgnoreCaseTag(t *testing.T) {
throwFail(t, AssertIs(info.fields.GetByName("Name02").column, "Name"))
throwFail(t, AssertIs(info.fields.GetByName("Name03").column, "name"))
}
func TestInsertOrUpdate(t *testing.T) {
user := User{UserName: "unique_username133", Status: 1, Password: "o"}
user1 := User{UserName: "unique_username133", Status: 2, Password: "o"}
user2 := User{UserName: "unique_username133", Status: 3, Password: "oo"}
dORM.Insert(&user)
fmt.Println(dORM.Driver().Name())
if dORM.Driver().Name() == "sqlite3" {
fmt.Println("sqlite3 is nonsupport")
return
}
//test1 普通操作
_, err := dORM.InsertOrUpdate(&user1, "UserName")
if err != nil && (err.Error() == "postgres version must 9.5 or higher" || err.Error() == "`sqlite3` nonsupport insert or update in beego") {
fmt.Println(err)
} else {
throwFailNow(t, err)
}
test := User{UserName: "unique_username133"}
time.Sleep(time.Second * 1)
dORM.Read(&test, "UserName")
throwFailNow(t, AssertIs(user1.Status, test.Status))
//test2 普通操作
_, err = dORM.InsertOrUpdate(&user2, "UserName")
if err != nil && (err.Error() == "postgres version must 9.5 or higher" || err.Error() == "`sqlite3` nonsupport insert or update in beego") {
fmt.Println(err)
} else {
throwFailNow(t, err)
time.Sleep(time.Second * 1)
dORM.Read(&test, "UserName")
throwFailNow(t, AssertIs(user2.Status, test.Status))
throwFailNow(t, AssertIs(user2.Password, strings.TrimSpace(test.Password)))
}
//test3 数字 + 操作
_, err = dORM.InsertOrUpdate(&user2, "UserName", "Status=Status+1")
if err != nil && (err.Error() == "postgres version must 9.5 or higher" || err.Error() == "`sqlite3` nonsupport insert or update in beego") {
fmt.Println(err)
} else {
throwFailNow(t, err)
time.Sleep(time.Second * 1)
dORM.Read(&test, "UserName")
throwFailNow(t, AssertIs(user2.Status+1, test.Status))
}
//test4 数字 - 操作
_, err = dORM.InsertOrUpdate(&user2, "UserName", "Status=Status-1")
if err != nil && (err.Error() == "postgres version must 9.5 or higher" || err.Error() == "`sqlite3` nonsupport insert or update in beego") {
fmt.Println(err)
} else {
throwFailNow(t, err)
time.Sleep(time.Second * 1)
dORM.Read(&test, "UserName")
throwFailNow(t, AssertIs((user2.Status+1)-1, test.Status))
}
//test5 数字 * 操作
_, err = dORM.InsertOrUpdate(&user2, "UserName", "Status=Status*3")
if err != nil && (err.Error() == "postgres version must 9.5 or higher" || err.Error() == "`sqlite3` nonsupport insert or update in beego") {
fmt.Println(err)
} else {
throwFailNow(t, err)
time.Sleep(time.Second * 1)
dORM.Read(&test, "UserName")
throwFailNow(t, AssertIs(((user2.Status+1)-1)*3, test.Status))
}
//test6 数字 / 操作
_, err = dORM.InsertOrUpdate(&user2, "UserName", "Status=Status/3")
if err != nil && (err.Error() == "postgres version must 9.5 or higher" || err.Error() == "`sqlite3` nonsupport insert or update in beego") {
fmt.Println(err)
} else {
throwFailNow(t, err)
time.Sleep(time.Second * 1)
dORM.Read(&test, "UserName")
throwFailNow(t, AssertIs((((user2.Status+1)-1)*3)/3, test.Status))
}
}