session_tx_test.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. // Copyright 2017 The Xorm Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package xorm
  5. import (
  6. "fmt"
  7. "testing"
  8. "time"
  9. "github.com/stretchr/testify/assert"
  10. "github.com/xormplus/core"
  11. )
  12. func TestTransaction(t *testing.T) {
  13. assert.NoError(t, prepareEngine())
  14. assertSync(t, new(Userinfo))
  15. counter := func() {
  16. total, err := testEngine.Count(&Userinfo{})
  17. if err != nil {
  18. t.Error(err)
  19. }
  20. fmt.Printf("----now total %v records\n", total)
  21. }
  22. counter()
  23. //defer counter()
  24. session := testEngine.NewSession()
  25. defer session.Close()
  26. err := session.Begin()
  27. if err != nil {
  28. t.Error(err)
  29. panic(err)
  30. return
  31. }
  32. user1 := Userinfo{Username: "xiaoxiao", Departname: "dev", Alias: "lunny", Created: time.Now()}
  33. _, err = session.Insert(&user1)
  34. if err != nil {
  35. session.Rollback()
  36. t.Error(err)
  37. panic(err)
  38. return
  39. }
  40. user2 := Userinfo{Username: "yyy"}
  41. _, err = session.Where("(id) = ?", 0).Update(&user2)
  42. if err != nil {
  43. session.Rollback()
  44. fmt.Println(err)
  45. //t.Error(err)
  46. return
  47. }
  48. _, err = session.Delete(&user2)
  49. if err != nil {
  50. session.Rollback()
  51. t.Error(err)
  52. panic(err)
  53. return
  54. }
  55. err = session.Commit()
  56. if err != nil {
  57. t.Error(err)
  58. panic(err)
  59. return
  60. }
  61. // panic(err) !nashtsai! should remove this
  62. }
  63. func TestCombineTransaction(t *testing.T) {
  64. assert.NoError(t, prepareEngine())
  65. assertSync(t, new(Userinfo))
  66. counter := func() {
  67. total, err := testEngine.Count(&Userinfo{})
  68. if err != nil {
  69. t.Error(err)
  70. }
  71. fmt.Printf("----now total %v records\n", total)
  72. }
  73. counter()
  74. //defer counter()
  75. session := testEngine.NewSession()
  76. defer session.Close()
  77. err := session.Begin()
  78. if err != nil {
  79. t.Error(err)
  80. panic(err)
  81. }
  82. user1 := Userinfo{Username: "xiaoxiao2", Departname: "dev", Alias: "lunny", Created: time.Now()}
  83. _, err = session.Insert(&user1)
  84. if err != nil {
  85. session.Rollback()
  86. t.Error(err)
  87. panic(err)
  88. }
  89. user2 := Userinfo{Username: "zzz"}
  90. _, err = session.Where("id = ?", 0).Update(&user2)
  91. if err != nil {
  92. session.Rollback()
  93. t.Error(err)
  94. panic(err)
  95. }
  96. _, err = session.Exec("delete from userinfo where username = ?", user2.Username)
  97. if err != nil {
  98. session.Rollback()
  99. t.Error(err)
  100. panic(err)
  101. }
  102. err = session.Commit()
  103. if err != nil {
  104. t.Error(err)
  105. panic(err)
  106. }
  107. }
  108. func TestCombineTransactionSameMapper(t *testing.T) {
  109. assert.NoError(t, prepareEngine())
  110. oldMapper := testEngine.ColumnMapper
  111. testEngine.unMapType(rValue(new(Userinfo)).Type())
  112. testEngine.SetMapper(core.SameMapper{})
  113. defer func() {
  114. testEngine.unMapType(rValue(new(Userinfo)).Type())
  115. testEngine.SetMapper(oldMapper)
  116. }()
  117. assertSync(t, new(Userinfo))
  118. counter := func() {
  119. total, err := testEngine.Count(&Userinfo{})
  120. if err != nil {
  121. t.Error(err)
  122. }
  123. fmt.Printf("----now total %v records\n", total)
  124. }
  125. counter()
  126. defer counter()
  127. session := testEngine.NewSession()
  128. defer session.Close()
  129. err := session.Begin()
  130. if err != nil {
  131. t.Error(err)
  132. panic(err)
  133. return
  134. }
  135. user1 := Userinfo{Username: "xiaoxiao2", Departname: "dev", Alias: "lunny", Created: time.Now()}
  136. _, err = session.Insert(&user1)
  137. if err != nil {
  138. session.Rollback()
  139. t.Error(err)
  140. panic(err)
  141. return
  142. }
  143. user2 := Userinfo{Username: "zzz"}
  144. _, err = session.Where("(id) = ?", 0).Update(&user2)
  145. if err != nil {
  146. session.Rollback()
  147. t.Error(err)
  148. panic(err)
  149. return
  150. }
  151. _, err = session.Exec("delete from `Userinfo` where `Username` = ?", user2.Username)
  152. if err != nil {
  153. session.Rollback()
  154. t.Error(err)
  155. panic(err)
  156. return
  157. }
  158. err = session.Commit()
  159. if err != nil {
  160. t.Error(err)
  161. panic(err)
  162. }
  163. }