package dao import ( "fmt" "go-template/business/model" "go-template/business/util" "testing" "time" "gitea.ckfah.com/cjjy/gocommon/pkg/common" "gitea.ckfah.com/cjjy/gocommon/pkg/database/db" ) // make test test_func=Test_reportPeccancyDao_NoSession test_pkg=./business/dao func Test_reportPeccancyDao_NoSession(t *testing.T) { var ( searchId uint64 = 0 userId uint64 = 10086 userName = "init_name" updateName = "update_name" ) context := util.MockContext() // 插入 t.Run("插入和查询 id", func(t *testing.T) { session := db.NewMasterSession(context) t.Logf("保存数据,user_id: %d, user_name: %s", userId, userName) saveData := model.ReportPeccancy{ UserID: userId, UserName: userName, DiscoveryTime: time.Now(), OperateTime: time.Now(), StartCycleTime: time.Now(), EndCycleTime: time.Now(), } effectRow, err := NewReportPeccancyDao().SaveOne(context, session, &saveData) if err != nil { t.Fatal(err) } if effectRow == 0 { t.Fatal("未插入到数据库中!!") } t.Logf("save success , save_data_id: %d, effect_row: %d", saveData.ID, effectRow) searchId = saveData.ID }) // 查询(本地环境没有主从) t.Run(fmt.Sprintf("查询 id %d", searchId), func(t *testing.T) { data, err := NewReportPeccancyDao().GetById(context, searchId) if err != nil { t.Fatal(err) } if data == nil { t.Fatal("数据库中未找到") } t.Logf("查询成功,id: %d, user_id: %d, user_name: %s", data.ID, data.UserID, data.UserName) }) // 查询分页 t.Run(fmt.Sprintf("查询 id %d user_id %d", searchId, userId), func(t *testing.T) { list, err := NewReportPeccancyDao().GetByUserId(context, userId, common.PageRequest{}.GetPaginator()) if err != nil { t.Fatal(err) } if list == nil { t.Fatal("分页查询失败,列表为空不正确") } t.Logf("查询分页成功, len list: %d", len(list)) count, err := NewReportPeccancyDao().GetCountByUserId(context, userId) if err != nil { t.Fatal(err) } if count == 0 { t.Fatal("分页查询失败,总量不能为0") } t.Logf("查询分页成功, count: %d", count) }) // 更新 t.Run(fmt.Sprintf("更新 id %d", searchId), func(t *testing.T) { session := db.NewMasterSession(context) effectRow, err := NewReportPeccancyDao().UpdateById(context, session, searchId, map[string]interface{}{"user_name": updateName}) if err != nil { t.Fatal(err) } if effectRow == 0 { t.Fatal("更新失败!") } t.Logf("更新成功, effectRow: %d", effectRow) data, err := NewReportPeccancyDao().GetById(context, searchId) if err != nil { t.Fatal(err) } if data == nil { t.Fatal("更新失败,未查询到数据!") } if data.UserName == updateName { t.Logf("更新成功,username 一致!") } else { t.Fatal("更新失败,username 不一致") } }) // 删除 t.Run(fmt.Sprintf("删除 id %d", searchId), func(t *testing.T) { session := db.NewMasterSession(context) effectRow, err := NewReportPeccancyDao().DeleteById(context, session, searchId) if err != nil { t.Fatal(err) } if effectRow == 0 { t.Fatal("删除失败") } t.Logf("删除成功, effectRow: %d", effectRow) data, err := NewReportPeccancyDao().GetById(context, searchId) if err != nil { t.Fatal(err) } if data == nil { t.Logf("删除成功,未查询到数据!") } }) } // make test test_func=Test_reportPeccancyDao_WithSession test_pkg=./business/dao func Test_reportPeccancyDao_WithSession(t *testing.T) { var ( searchId uint64 = 0 userId uint64 = 10010 userName = "init_name" updateName = "update_name" rollbackName = "rollback_name" ) context := util.MockContext() // 插入 t.Run("插入和查询 id", func(t *testing.T) { session := db.NewMasterSession(context) session.Begin() defer session.Close() t.Logf("保存数据,user_id: %d, user_name: %s", userId, userName) saveData := model.ReportPeccancy{ UserID: userId, UserName: userName, DiscoveryTime: time.Now(), OperateTime: time.Now(), StartCycleTime: time.Now(), EndCycleTime: time.Now(), } effectRow, err := NewReportPeccancyDao().SaveOne(context, session, &saveData) if err != nil { t.Fatal(err) } if effectRow == 0 { t.Fatal("未插入到数据库中!!") } session.Commit() t.Logf("save success , save_data_id: %d, effect_row: %d", saveData.ID, effectRow) searchId = saveData.ID }) // 查询(本地环境没有主从) t.Run(fmt.Sprintf("查询 id %d", searchId), func(t *testing.T) { data, err := NewReportPeccancyDao().GetById(context, searchId) if err != nil { t.Fatal(err) } if data == nil { t.Fatal("数据库中未找到") } t.Logf("查询成功,id: %d, user_id: %d, user_name: %s", data.ID, data.UserID, data.UserName) }) // 查询分页 t.Run(fmt.Sprintf("查询 id %d user_id %d", searchId, userId), func(t *testing.T) { list, err := NewReportPeccancyDao().GetByUserId(context, userId, common.PageRequest{}.GetPaginator()) if err != nil { t.Fatal(err) } if list == nil { t.Fatal("分页查询失败,列表为空不正确") } t.Logf("查询分页成功, len list: %d", len(list)) count, err := NewReportPeccancyDao().GetCountByUserId(context, userId) if err != nil { t.Fatal(err) } if count == 0 { t.Fatal("分页查询失败,总量不能为0") } t.Logf("查询分页成功, count: %d", count) }) // 更新回滚 t.Run(fmt.Sprintf("更新回滚测试 id %d", searchId), func(t *testing.T) { // 更新,defer func() { session := db.NewMasterSession(context) session.Begin() defer session.Close() effectRow, err := NewReportPeccancyDao().UpdateById(context, session, searchId, map[string]interface{}{"user_name": rollbackName}) if err != nil { t.Fatal(err) } if effectRow == 0 { t.Fatal("回滚失败!") } // 不用写rowback,返回出去自动回滚 t.Logf("更新确认进行回滚, effectRow: %d", effectRow) }() data, err := NewReportPeccancyDao().GetById(context, searchId) if err != nil { t.Fatal(err) } if data == nil { t.Fatal("回滚失败,未查询到数据!") } if data.UserName == userName { t.Logf("回滚成功,username和回滚前保持 一致!") } else { t.Fatal("回滚失败,username和回滚前不保持 一致!") } }) // 更新 t.Run(fmt.Sprintf("更新 id %d", searchId), func(t *testing.T) { // 更新,defer func() { session := db.NewMasterSession(context) session.Begin() defer session.Close() effectRow, err := NewReportPeccancyDao().UpdateById(context, session, searchId, map[string]interface{}{"user_name": updateName}) if err != nil { t.Fatal(err) } if effectRow == 0 { t.Fatal("更新失败!") } t.Logf("更新成功, effectRow: %d", effectRow) session.Commit() }() data, err := NewReportPeccancyDao().GetById(context, searchId) if err != nil { t.Fatal(err) } if data == nil { t.Fatal("更新失败,未查询到数据!") } if data.UserName == updateName { t.Logf("更新成功,username 一致!") } else { t.Fatal("更新失败,username 不一致") } }) // 删除 t.Run(fmt.Sprintf("删除 id %d", searchId), func(t *testing.T) { func() { session := db.NewMasterSession(context) session.Begin() defer session.Close() effectRow, err := NewReportPeccancyDao().DeleteById(context, session, searchId) if err != nil { t.Fatal(err) } if effectRow == 0 { t.Fatal("删除失败") } session.Commit() t.Logf("删除成功, effectRow: %d", effectRow) }() data, err := NewReportPeccancyDao().GetById(context, searchId) if err != nil { t.Fatal(err) } if data == nil { t.Logf("删除成功,未查询到数据!") } }) }