Commit 9df34dc7 authored by 李宇怀's avatar 李宇怀
Browse files

完成link的测试

parent e674b465
...@@ -58,7 +58,7 @@ func (c *LinkController) Create(ctx *gin.Context, req *dto.LinkCreateReq) (*dto. ...@@ -58,7 +58,7 @@ func (c *LinkController) Create(ctx *gin.Context, req *dto.LinkCreateReq) (*dto.
} }
var link model.Link var link model.Link
err := dao.DB(ctx).Where(&model.Link{Short: newLink.Short}).First(&link).Error err := dao.DB(ctx).Table("Links").Where(&model.Link{Short: newLink.Short}).First(&link).Error
if err != nil { if err != nil {
// 没找到相关记录 说明不是短连接重复 // 没找到相关记录 说明不是短连接重复
if err == gorm.ErrRecordNotFound { if err == gorm.ErrRecordNotFound {
...@@ -92,7 +92,7 @@ func (c *LinkController) Delete(ctx *gin.Context, req *dto.LinkDeleteReq) error ...@@ -92,7 +92,7 @@ func (c *LinkController) Delete(ctx *gin.Context, req *dto.LinkDeleteReq) error
deleteLink := &model.Link{ deleteLink := &model.Link{
Short: req.Short, Short: req.Short,
} }
err := dao.DB(ctx).Where(&model.Link{Short: deleteLink.Short}).Delete(deleteLink).Error err := dao.DB(ctx).Table("Links").Where(&model.Link{Short: deleteLink.Short}).Delete(deleteLink).Error
if err != nil { if err != nil {
logrus.Fatal(err) logrus.Fatal(err)
return err return err
......
...@@ -65,10 +65,10 @@ func TestLinkController_Create(t *testing.T) { ...@@ -65,10 +65,10 @@ func TestLinkController_Create(t *testing.T) {
Short: "bing", Short: "bing",
Comment: "test link 2", Comment: "test link 2",
Origin: "https://www.bing.com", Origin: "https://www.bing.com",
StartTime: null.TimeFrom(time.Now()), StartTime: null.NewTime(time.Date(2023, 7, 30, 12, 0, 12, 0, time.Local), true),
EndTime: null.TimeFrom(time.Now().Add(24 * time.Hour)), EndTime: null.NewTime(time.Date(2023, 8, 1, 12, 0, 12, 0, time.Local), true),
}, },
errorCode: 0, errorCode: dto.ErrShortLinkExist,
}, },
// // 测试用例3:创建短链接失败,因为short字段已经存在 // // 测试用例3:创建短链接失败,因为short字段已经存在
// { // {
...@@ -83,8 +83,8 @@ func TestLinkController_Create(t *testing.T) { ...@@ -83,8 +83,8 @@ func TestLinkController_Create(t *testing.T) {
// errorCode: dto.ErrShortLinkExist, // errorCode: dto.ErrShortLinkExist,
// }, // },
} }
var testLinkCtl ILinkController
testLinkCtl = new(LinkController) testLinkCtl := new(LinkController)
for _, test := range tests { for _, test := range tests {
w := httptest.NewRecorder() w := httptest.NewRecorder()
ctx, _ := gin.CreateTestContext(w) ctx, _ := gin.CreateTestContext(w)
...@@ -99,3 +99,81 @@ func TestLinkController_Create(t *testing.T) { ...@@ -99,3 +99,81 @@ func TestLinkController_Create(t *testing.T) {
} }
} }
func TestLinkController_Delete(t *testing.T) {
var tests = []struct {
userID uint
input dto.LinkDeleteReq
errorCode stacktrace.ErrorCode
}{
// 测试用例1:正常创建短链接,指定short字段,使用自定义的short值
{
userID: 2,
input: dto.LinkDeleteReq{
Short: "bing",
},
errorCode: dto.ErrShortLinkExist,
},
}
testLinkCtl := new(LinkController)
for _, test := range tests {
w := httptest.NewRecorder()
ctx, _ := gin.CreateTestContext(w)
ctx.Set(model.USER_ID_KEY, test.userID)
err := testLinkCtl.Delete(ctx, &test.input)
if test.errorCode != 0 {
assert.Equal(t, test.errorCode, stacktrace.GetCode(err))
continue
}
assert.NoError(t, err)
}
}
func TestGetinfo(t *testing.T) {
var tests = []struct {
userID uint
input dto.GetLinkInfoReq
output dto.GetLinkInfoResp
errorCode stacktrace.ErrorCode
}{
{
userID: 2,
input: dto.GetLinkInfoReq{
Short: "bing",
},
output: dto.GetLinkInfoResp{
Active: null.BoolFrom(true),
Comment: "test link 2",
EndTime: null.NewTime(time.Date(2023, 8, 1, 12, 0, 12, 0, time.Local), true),
Origin: "https://www.bing.com",
Short: "short1", //注意此处和bing不一样
StartTime: null.NewTime(time.Date(2023, 7, 30, 12, 0, 12, 0, time.Local), true),
},
errorCode: 0,
},
}
controller := &LinkController{}
for _, test := range tests {
w := httptest.NewRecorder()
ctx, _ := gin.CreateTestContext(w)
ctx.Set(model.USER_ID_KEY, test.userID)
resp, err := controller.GetInfo(ctx, &test.input)
assert.Equal(t, test.output.Active, resp.Active)
assert.Equal(t, test.output.Comment, resp.Comment)
assert.Equal(t, test.output.EndTime, resp.EndTime)
assert.Equal(t, test.output.Origin, resp.Origin)
assert.Equal(t, test.output.Short, resp.Short)
assert.Equal(t, test.output.StartTime, resp.StartTime)
if test.errorCode != 0 {
assert.Equal(t, test.errorCode, stacktrace.GetCode(err))
continue
}
assert.NoError(t, err)
}
}
...@@ -20,6 +20,7 @@ func testInitDB() *gorm.DB { ...@@ -20,6 +20,7 @@ func testInitDB() *gorm.DB {
//迁移 //迁移
db.AutoMigrate(&model.Link{}) db.AutoMigrate(&model.Link{})
db.AutoMigrate(&model.User{})
DB = db DB = db
......
...@@ -174,7 +174,7 @@ func GetCode(err error) ErrorCode { ...@@ -174,7 +174,7 @@ func GetCode(err error) ErrorCode {
if err, ok := err.(*stacktrace); ok { if err, ok := err.(*stacktrace); ok {
return err.code return err.code
} }
return 1//NoCode return NoCode
} }
type stacktrace struct { type stacktrace struct {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment