report_peccancy_dao_test.go 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. package dao
  2. import (
  3. "fmt"
  4. "go-template/business/model"
  5. "go-template/business/util"
  6. "testing"
  7. "time"
  8. "gitea.ckfah.com/cjjy/gocommon/pkg/common"
  9. "gitea.ckfah.com/cjjy/gocommon/pkg/database/db"
  10. )
  11. // make test test_func=Test_reportPeccancyDao_NoSession test_pkg=./business/dao
  12. func Test_reportPeccancyDao_NoSession(t *testing.T) {
  13. var (
  14. searchId uint64 = 0
  15. userId uint64 = 10086
  16. userName = "init_name"
  17. updateName = "update_name"
  18. )
  19. context := util.MockContext()
  20. // 插入
  21. t.Run("插入和查询 id", func(t *testing.T) {
  22. session := db.NewMasterSession(context)
  23. t.Logf("保存数据,user_id: %d, user_name: %s", userId, userName)
  24. saveData := model.ReportPeccancy{
  25. UserID: userId,
  26. UserName: userName,
  27. DiscoveryTime: time.Now(),
  28. OperateTime: time.Now(),
  29. StartCycleTime: time.Now(),
  30. EndCycleTime: time.Now(),
  31. }
  32. effectRow, err := NewReportPeccancyDao().SaveOne(context, session, &saveData)
  33. if err != nil {
  34. t.Fatal(err)
  35. }
  36. if effectRow == 0 {
  37. t.Fatal("未插入到数据库中!!")
  38. }
  39. t.Logf("save success , save_data_id: %d, effect_row: %d", saveData.ID, effectRow)
  40. searchId = saveData.ID
  41. })
  42. // 查询(本地环境没有主从)
  43. t.Run(fmt.Sprintf("查询 id %d", searchId), func(t *testing.T) {
  44. data, err := NewReportPeccancyDao().GetById(context, searchId)
  45. if err != nil {
  46. t.Fatal(err)
  47. }
  48. if data == nil {
  49. t.Fatal("数据库中未找到")
  50. }
  51. t.Logf("查询成功,id: %d, user_id: %d, user_name: %s", data.ID, data.UserID, data.UserName)
  52. })
  53. // 查询分页
  54. t.Run(fmt.Sprintf("查询 id %d user_id %d", searchId, userId), func(t *testing.T) {
  55. list, err := NewReportPeccancyDao().GetByUserId(context, userId, common.PageRequest{}.GetPaginator())
  56. if err != nil {
  57. t.Fatal(err)
  58. }
  59. if list == nil {
  60. t.Fatal("分页查询失败,列表为空不正确")
  61. }
  62. t.Logf("查询分页成功, len list: %d", len(list))
  63. count, err := NewReportPeccancyDao().GetCountByUserId(context, userId)
  64. if err != nil {
  65. t.Fatal(err)
  66. }
  67. if count == 0 {
  68. t.Fatal("分页查询失败,总量不能为0")
  69. }
  70. t.Logf("查询分页成功, count: %d", count)
  71. })
  72. // 更新
  73. t.Run(fmt.Sprintf("更新 id %d", searchId), func(t *testing.T) {
  74. session := db.NewMasterSession(context)
  75. effectRow, err := NewReportPeccancyDao().UpdateById(context, session, searchId, map[string]interface{}{"user_name": updateName})
  76. if err != nil {
  77. t.Fatal(err)
  78. }
  79. if effectRow == 0 {
  80. t.Fatal("更新失败!")
  81. }
  82. t.Logf("更新成功, effectRow: %d", effectRow)
  83. data, err := NewReportPeccancyDao().GetById(context, searchId)
  84. if err != nil {
  85. t.Fatal(err)
  86. }
  87. if data == nil {
  88. t.Fatal("更新失败,未查询到数据!")
  89. }
  90. if data.UserName == updateName {
  91. t.Logf("更新成功,username 一致!")
  92. } else {
  93. t.Fatal("更新失败,username 不一致")
  94. }
  95. })
  96. // 删除
  97. t.Run(fmt.Sprintf("删除 id %d", searchId), func(t *testing.T) {
  98. session := db.NewMasterSession(context)
  99. effectRow, err := NewReportPeccancyDao().DeleteById(context, session, searchId)
  100. if err != nil {
  101. t.Fatal(err)
  102. }
  103. if effectRow == 0 {
  104. t.Fatal("删除失败")
  105. }
  106. t.Logf("删除成功, effectRow: %d", effectRow)
  107. data, err := NewReportPeccancyDao().GetById(context, searchId)
  108. if err != nil {
  109. t.Fatal(err)
  110. }
  111. if data == nil {
  112. t.Logf("删除成功,未查询到数据!")
  113. }
  114. })
  115. }
  116. // make test test_func=Test_reportPeccancyDao_WithSession test_pkg=./business/dao
  117. func Test_reportPeccancyDao_WithSession(t *testing.T) {
  118. var (
  119. searchId uint64 = 0
  120. userId uint64 = 10010
  121. userName = "init_name"
  122. updateName = "update_name"
  123. rollbackName = "rollback_name"
  124. )
  125. context := util.MockContext()
  126. // 插入
  127. t.Run("插入和查询 id", func(t *testing.T) {
  128. session := db.NewMasterSession(context)
  129. session.Begin()
  130. defer session.Close()
  131. t.Logf("保存数据,user_id: %d, user_name: %s", userId, userName)
  132. saveData := model.ReportPeccancy{
  133. UserID: userId,
  134. UserName: userName,
  135. DiscoveryTime: time.Now(),
  136. OperateTime: time.Now(),
  137. StartCycleTime: time.Now(),
  138. EndCycleTime: time.Now(),
  139. }
  140. effectRow, err := NewReportPeccancyDao().SaveOne(context, session, &saveData)
  141. if err != nil {
  142. t.Fatal(err)
  143. }
  144. if effectRow == 0 {
  145. t.Fatal("未插入到数据库中!!")
  146. }
  147. session.Commit()
  148. t.Logf("save success , save_data_id: %d, effect_row: %d", saveData.ID, effectRow)
  149. searchId = saveData.ID
  150. })
  151. // 查询(本地环境没有主从)
  152. t.Run(fmt.Sprintf("查询 id %d", searchId), func(t *testing.T) {
  153. data, err := NewReportPeccancyDao().GetById(context, searchId)
  154. if err != nil {
  155. t.Fatal(err)
  156. }
  157. if data == nil {
  158. t.Fatal("数据库中未找到")
  159. }
  160. t.Logf("查询成功,id: %d, user_id: %d, user_name: %s", data.ID, data.UserID, data.UserName)
  161. })
  162. // 查询分页
  163. t.Run(fmt.Sprintf("查询 id %d user_id %d", searchId, userId), func(t *testing.T) {
  164. list, err := NewReportPeccancyDao().GetByUserId(context, userId, common.PageRequest{}.GetPaginator())
  165. if err != nil {
  166. t.Fatal(err)
  167. }
  168. if list == nil {
  169. t.Fatal("分页查询失败,列表为空不正确")
  170. }
  171. t.Logf("查询分页成功, len list: %d", len(list))
  172. count, err := NewReportPeccancyDao().GetCountByUserId(context, userId)
  173. if err != nil {
  174. t.Fatal(err)
  175. }
  176. if count == 0 {
  177. t.Fatal("分页查询失败,总量不能为0")
  178. }
  179. t.Logf("查询分页成功, count: %d", count)
  180. })
  181. // 更新回滚
  182. t.Run(fmt.Sprintf("更新回滚测试 id %d", searchId), func(t *testing.T) {
  183. // 更新,defer
  184. func() {
  185. session := db.NewMasterSession(context)
  186. session.Begin()
  187. defer session.Close()
  188. effectRow, err := NewReportPeccancyDao().UpdateById(context, session, searchId, map[string]interface{}{"user_name": rollbackName})
  189. if err != nil {
  190. t.Fatal(err)
  191. }
  192. if effectRow == 0 {
  193. t.Fatal("回滚失败!")
  194. }
  195. // 不用写rowback,返回出去自动回滚
  196. t.Logf("更新确认进行回滚, effectRow: %d", effectRow)
  197. }()
  198. data, err := NewReportPeccancyDao().GetById(context, searchId)
  199. if err != nil {
  200. t.Fatal(err)
  201. }
  202. if data == nil {
  203. t.Fatal("回滚失败,未查询到数据!")
  204. }
  205. if data.UserName == userName {
  206. t.Logf("回滚成功,username和回滚前保持 一致!")
  207. } else {
  208. t.Fatal("回滚失败,username和回滚前不保持 一致!")
  209. }
  210. })
  211. // 更新
  212. t.Run(fmt.Sprintf("更新 id %d", searchId), func(t *testing.T) {
  213. // 更新,defer
  214. func() {
  215. session := db.NewMasterSession(context)
  216. session.Begin()
  217. defer session.Close()
  218. effectRow, err := NewReportPeccancyDao().UpdateById(context, session, searchId, map[string]interface{}{"user_name": updateName})
  219. if err != nil {
  220. t.Fatal(err)
  221. }
  222. if effectRow == 0 {
  223. t.Fatal("更新失败!")
  224. }
  225. t.Logf("更新成功, effectRow: %d", effectRow)
  226. session.Commit()
  227. }()
  228. data, err := NewReportPeccancyDao().GetById(context, searchId)
  229. if err != nil {
  230. t.Fatal(err)
  231. }
  232. if data == nil {
  233. t.Fatal("更新失败,未查询到数据!")
  234. }
  235. if data.UserName == updateName {
  236. t.Logf("更新成功,username 一致!")
  237. } else {
  238. t.Fatal("更新失败,username 不一致")
  239. }
  240. })
  241. // 删除
  242. t.Run(fmt.Sprintf("删除 id %d", searchId), func(t *testing.T) {
  243. func() {
  244. session := db.NewMasterSession(context)
  245. session.Begin()
  246. defer session.Close()
  247. effectRow, err := NewReportPeccancyDao().DeleteById(context, session, searchId)
  248. if err != nil {
  249. t.Fatal(err)
  250. }
  251. if effectRow == 0 {
  252. t.Fatal("删除失败")
  253. }
  254. session.Commit()
  255. t.Logf("删除成功, effectRow: %d", effectRow)
  256. }()
  257. data, err := NewReportPeccancyDao().GetById(context, searchId)
  258. if err != nil {
  259. t.Fatal(err)
  260. }
  261. if data == nil {
  262. t.Logf("删除成功,未查询到数据!")
  263. }
  264. })
  265. }