This repository has been archived on 2020-04-12. You can view files and clone it, but cannot push or open issues or pull requests.
tests/testTransaction.go

170 lines
3.0 KiB
Go

package tests
import (
"fmt"
"testing"
"time"
"xorm.io/xorm"
)
func transaction(engine *xorm.Engine, t *testing.T) {
counter := func() {
total, err := engine.Count(&Userinfo{})
if err != nil {
t.Error(err)
}
fmt.Printf("----now total %v records\n", total)
}
counter()
//defer counter()
session := engine.NewSession()
defer session.Close()
err := session.Begin()
if err != nil {
t.Error(err)
panic(err)
return
}
user1 := Userinfo{Username: "xiaoxiao", Departname: "dev", Alias: "lunny", Created: time.Now()}
_, err = session.Insert(&user1)
if err != nil {
session.Rollback()
t.Error(err)
panic(err)
return
}
user2 := Userinfo{Username: "yyy"}
_, err = session.Where("(id) = ?", 0).Update(&user2)
if err != nil {
session.Rollback()
fmt.Println(err)
//t.Error(err)
return
}
_, err = session.Delete(&user2)
if err != nil {
session.Rollback()
t.Error(err)
panic(err)
return
}
err = session.Commit()
if err != nil {
t.Error(err)
panic(err)
return
}
// panic(err) !nashtsai! should remove this
}
func combineTransaction(engine *xorm.Engine, t *testing.T) {
counter := func() {
total, err := engine.Count(&Userinfo{})
if err != nil {
t.Error(err)
}
fmt.Printf("----now total %v records\n", total)
}
counter()
//defer counter()
session := engine.NewSession()
defer session.Close()
err := session.Begin()
if err != nil {
t.Error(err)
panic(err)
}
user1 := Userinfo{Username: "xiaoxiao2", Departname: "dev", Alias: "lunny", Created: time.Now()}
_, err = session.Insert(&user1)
if err != nil {
session.Rollback()
t.Error(err)
panic(err)
}
user2 := Userinfo{Username: "zzz"}
_, err = session.Where("id = ?", 0).Update(&user2)
if err != nil {
session.Rollback()
t.Error(err)
panic(err)
}
_, err = session.Exec("delete from userinfo where username = ?", user2.Username)
if err != nil {
session.Rollback()
t.Error(err)
panic(err)
}
err = session.Commit()
if err != nil {
t.Error(err)
panic(err)
}
}
func combineTransactionSameMapper(engine *xorm.Engine, t *testing.T) {
counter := func() {
total, err := engine.Count(&Userinfo{})
if err != nil {
t.Error(err)
}
fmt.Printf("----now total %v records\n", total)
}
counter()
defer counter()
session := engine.NewSession()
defer session.Close()
err := session.Begin()
if err != nil {
t.Error(err)
panic(err)
return
}
user1 := Userinfo{Username: "xiaoxiao2", Departname: "dev", Alias: "lunny", Created: time.Now()}
_, err = session.Insert(&user1)
if err != nil {
session.Rollback()
t.Error(err)
panic(err)
return
}
user2 := Userinfo{Username: "zzz"}
_, err = session.Where("(id) = ?", 0).Update(&user2)
if err != nil {
session.Rollback()
t.Error(err)
panic(err)
return
}
_, err = session.Exec("delete from `Userinfo` where `Username` = ?", user2.Username)
if err != nil {
session.Rollback()
t.Error(err)
panic(err)
return
}
err = session.Commit()
if err != nil {
t.Error(err)
panic(err)
}
}