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.
}
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 == gorm.ErrRecordNotFound {
......@@ -92,7 +92,7 @@ func (c *LinkController) Delete(ctx *gin.Context, req *dto.LinkDeleteReq) error
deleteLink := &model.Link{
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 {
logrus.Fatal(err)
return err
......
......@@ -65,10 +65,10 @@ func TestLinkController_Create(t *testing.T) {
Short: "bing",
Comment: "test link 2",
Origin: "https://www.bing.com",
StartTime: null.TimeFrom(time.Now()),
EndTime: null.TimeFrom(time.Now().Add(24 * time.Hour)),
StartTime: null.NewTime(time.Date(2023, 7, 30, 12, 0, 12, 0, time.Local), true),
EndTime: null.NewTime(time.Date(2023, 8, 1, 12, 0, 12, 0, time.Local), true),
},
errorCode: 0,
errorCode: dto.ErrShortLinkExist,
},
// // 测试用例3:创建短链接失败,因为short字段已经存在
// {
......@@ -83,8 +83,8 @@ func TestLinkController_Create(t *testing.T) {
// errorCode: dto.ErrShortLinkExist,
// },
}
var testLinkCtl ILinkController
testLinkCtl = new(LinkController)
testLinkCtl := new(LinkController)
for _, test := range tests {
w := httptest.NewRecorder()
ctx, _ := gin.CreateTestContext(w)
......@@ -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 {
//迁移
db.AutoMigrate(&model.Link{})
db.AutoMigrate(&model.User{})
DB = db
......
......@@ -174,7 +174,7 @@ func GetCode(err error) ErrorCode {
if err, ok := err.(*stacktrace); ok {
return err.code
}
return 1//NoCode
return NoCode
}
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