mirror of
https://github.com/zeromicro/go-zero.git
synced 2026-05-08 07:30:01 +08:00
165 lines
4.1 KiB
Go
165 lines
4.1 KiB
Go
|
|
package example
|
||
|
|
|
||
|
|
// todo: In order to pass the go test on github,
|
||
|
|
// todo: the code is commented. If you need go test,
|
||
|
|
// todo: modify the configuration file and delete the comment and execute it.
|
||
|
|
|
||
|
|
//import (
|
||
|
|
// "flag"
|
||
|
|
// "fmt"
|
||
|
|
// "testing"
|
||
|
|
//
|
||
|
|
// "github.com/stretchr/testify/assert"
|
||
|
|
// "github.com/tal-tech/go-zero/core/conf"
|
||
|
|
// "github.com/tal-tech/go-zero/core/jsonx"
|
||
|
|
// "github.com/tal-tech/go-zero/core/logx"
|
||
|
|
// "github.com/tal-tech/go-zero/core/stores/redis"
|
||
|
|
// "github.com/tal-tech/go-zero/core/stores/sqlx"
|
||
|
|
// "github.com/tal-tech/go-zero/tools/goctl/model/sql/example/config"
|
||
|
|
// "github.com/tal-tech/go-zero/tools/goctl/model/sql/example/model"
|
||
|
|
//)
|
||
|
|
//
|
||
|
|
//var (
|
||
|
|
// userModel *model.UserModel
|
||
|
|
// courseModel *model.UserCourseModel
|
||
|
|
// // verify redis cache
|
||
|
|
// r *redis.Redis
|
||
|
|
//)
|
||
|
|
//var configFile = flag.String("f", "etc/config.json", "the config file")
|
||
|
|
//
|
||
|
|
//func TestMain(m *testing.M) {
|
||
|
|
// flag.Parse()
|
||
|
|
// var c config.Config
|
||
|
|
// conf.MustLoad(*configFile, &c)
|
||
|
|
//
|
||
|
|
// logx.MustSetup(c.LogConf)
|
||
|
|
// conn := sqlx.NewMysql(c.Mysql.DataSource)
|
||
|
|
// if conn == nil {
|
||
|
|
// return
|
||
|
|
// }
|
||
|
|
// userModel = model.NewUserModel(conn, c.CacheRedis, c.Mysql.Table.User)
|
||
|
|
// courseModel = model.NewUserCourseModel(conn, c.Mysql.Table.Course)
|
||
|
|
// r = redis.NewRedis(c.Redis.Host, c.Redis.Type, c.Redis.Pass)
|
||
|
|
// if userModel == nil || courseModel == nil || r == nil {
|
||
|
|
// return
|
||
|
|
// }
|
||
|
|
// m.Run()
|
||
|
|
//}
|
||
|
|
//
|
||
|
|
//// cache model
|
||
|
|
//func TestUser(t *testing.T) {
|
||
|
|
// var user model.User
|
||
|
|
// user.Name = "test"
|
||
|
|
// user.Password = "123456"
|
||
|
|
// user.Mobile = "136****0001"
|
||
|
|
// user.Gender = "男"
|
||
|
|
// user.Nickname = "Keson"
|
||
|
|
// insert, err := userModel.Insert(user)
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
// id, err := insert.LastInsertId()
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
//
|
||
|
|
// // select
|
||
|
|
// ret, err := userModel.FindOneByName("test")
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
// assert.Equal(t, user.Mobile, ret.Mobile)
|
||
|
|
//
|
||
|
|
// // should cache
|
||
|
|
// // expected primary key
|
||
|
|
// var redisId int64
|
||
|
|
// err = get(&redisId, "cache#User#name#test")
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
// assert.Equal(t, ret.Id, redisId)
|
||
|
|
//
|
||
|
|
// //expected user from cache
|
||
|
|
// var redisData model.User
|
||
|
|
// err = get(&redisData, fmt.Sprintf("cache#User#id#%v", redisId))
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
// assert.Equal(t, redisData.Nickname, user.Nickname)
|
||
|
|
//
|
||
|
|
// // update
|
||
|
|
// ret.Nickname = "Keson after"
|
||
|
|
// err = userModel.Update(*ret)
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
// // expected cache delete
|
||
|
|
// exist, err := r.Exists(fmt.Sprintf("cache#User#id#%v", ret.Id))
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
// assert.Equal(t, false, exist)
|
||
|
|
//
|
||
|
|
// // select
|
||
|
|
// ret, err = userModel.FindOne(id)
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
// assert.Equal(t, "Keson after", ret.Nickname)
|
||
|
|
//
|
||
|
|
// // delete
|
||
|
|
// err = userModel.Delete(ret.Id)
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
// exist, err = r.Exists(fmt.Sprintf("cache#User#id#%v", ret.Id))
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
// assert.Equal(t, false, exist)
|
||
|
|
//
|
||
|
|
// // verify
|
||
|
|
// _, err = userModel.FindOne(id)
|
||
|
|
// assert.Equal(t, model.ErrNotFound, err)
|
||
|
|
//
|
||
|
|
//}
|
||
|
|
//
|
||
|
|
//// no cache model
|
||
|
|
//func TestCourse(t *testing.T) {
|
||
|
|
// // new user
|
||
|
|
// insert, err := userModel.Insert(model.User{
|
||
|
|
// Name: "courseUser",
|
||
|
|
// Password: "123456",
|
||
|
|
// Mobile: "136****1111",
|
||
|
|
// Gender: "男",
|
||
|
|
// Nickname: "Keson",
|
||
|
|
// })
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
// id, err := insert.LastInsertId()
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
//
|
||
|
|
// var course model.UserCourse
|
||
|
|
// course.Id = id
|
||
|
|
// course.CourseName = "Java"
|
||
|
|
//
|
||
|
|
// courseInsert, err := courseModel.Insert(course)
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
// courseId, err := courseInsert.LastInsertId()
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
//
|
||
|
|
// // select
|
||
|
|
// ret, err := courseModel.FindOne(courseId)
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
// assert.Equal(t, course.CourseName, ret.CourseName)
|
||
|
|
//
|
||
|
|
// // update
|
||
|
|
// ret.CourseName = "Golang"
|
||
|
|
// err = courseModel.Update(*ret)
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
//
|
||
|
|
// // select
|
||
|
|
// ret, err = courseModel.FindOne(courseId)
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
// assert.Equal(t, "Golang", ret.CourseName)
|
||
|
|
//
|
||
|
|
// // delete
|
||
|
|
// err = courseModel.Delete(ret.Id)
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
//
|
||
|
|
// // verify
|
||
|
|
// _, err = courseModel.FindOne(courseId)
|
||
|
|
// assert.Equal(t, model.ErrNotFound, err)
|
||
|
|
//
|
||
|
|
// // clean user
|
||
|
|
// err = userModel.Delete(id)
|
||
|
|
// assert.Nil(t, err)
|
||
|
|
//}
|
||
|
|
//
|
||
|
|
//func get(data interface{}, key string) error {
|
||
|
|
// v, err := r.Get(key)
|
||
|
|
// if err != nil {
|
||
|
|
// return err
|
||
|
|
// }
|
||
|
|
// return jsonx.Unmarshal([]byte(v), data)
|
||
|
|
//}
|