diff --git a/tests/session_tx_test.go b/tests/session_tx_test.go index c9db40ba..f2bd4bda 100644 --- a/tests/session_tx_test.go +++ b/tests/session_tx_test.go @@ -10,10 +10,46 @@ import ( "time" "github.com/stretchr/testify/assert" + + "xorm.io/xorm" "xorm.io/xorm/internal/utils" "xorm.io/xorm/names" ) +func TestSessionTransaction(t *testing.T) { + assert.NoError(t, PrepareEngine()) + assertSync(t, new(Userinfo)) + + counter := func(t *testing.T) { + _, err := testEngine.Count(&Userinfo{}) + assert.NoError(t, err) + } + + counter(t) + // defer counter() + session := testEngine.NewSession() + _, err := session.Transaction(func(session *xorm.Session) (interface{}, error) { + user1 := Userinfo{Username: "xiaoxiaosession", Departname: "dev", Alias: "lunny", Created: time.Now()} + _, err := session.Insert(&user1) + if err != nil { + return nil, err + } + + user2 := Userinfo{Username: "yyysession"} + _, err = session.Where("`id` = ?", 0).Update(&user2) + if err != nil { + return nil, err + } + + _, err = session.Delete(&user2) + if err != nil { + return nil, err + } + return nil, nil + }) + assert.NoError(t, err) +} + func TestTransaction(t *testing.T) { assert.NoError(t, PrepareEngine()) assertSync(t, new(Userinfo))