test: fix failed test in model/file/deleteFile
This commit is contained in:
parent
18f5bffed1
commit
13d36c25d4
3 changed files with 21 additions and 9 deletions
2
assets
2
assets
|
@ -1 +1 @@
|
|||
Subproject commit da7a3a38bf924d53072a7c56d144b0e777ea0511
|
||||
Subproject commit dd539f606a1dc7d48a2e745892abef6bbe99405c
|
|
@ -225,17 +225,17 @@ func DeleteFiles(files []*File, uid uint) error {
|
|||
}
|
||||
|
||||
result := tx.Unscoped().Where("size = ?", file.Size).Delete(file)
|
||||
if result.Error != nil {
|
||||
tx.Rollback()
|
||||
return result.Error
|
||||
}
|
||||
|
||||
if result.RowsAffected == 0 {
|
||||
tx.Rollback()
|
||||
return errors.New("file size is dirty")
|
||||
}
|
||||
|
||||
size += file.Size
|
||||
|
||||
if result.Error != nil {
|
||||
tx.Rollback()
|
||||
return result.Error
|
||||
}
|
||||
}
|
||||
|
||||
if err := user.ChangeStorage(tx, "-", size); err != nil {
|
||||
|
|
|
@ -339,7 +339,7 @@ func TestDeleteFiles(t *testing.T) {
|
|||
// uid 不一致
|
||||
{
|
||||
err := DeleteFiles([]*File{{}}, 1)
|
||||
a.Contains("User id not consistent", err.Error())
|
||||
a.Contains("user id not consistent", err.Error())
|
||||
}
|
||||
|
||||
// 删除失败
|
||||
|
@ -365,14 +365,26 @@ func TestDeleteFiles(t *testing.T) {
|
|||
a.Error(err)
|
||||
}
|
||||
|
||||
// 成功,其中一个文件已经不存在
|
||||
// 文件脏读
|
||||
{
|
||||
mock.ExpectBegin()
|
||||
mock.ExpectExec("DELETE(.+)").
|
||||
WillReturnResult(sqlmock.NewResult(1, 0))
|
||||
mock.ExpectRollback()
|
||||
err := DeleteFiles([]*File{{Size: 1}, {Size: 2}}, 0)
|
||||
a.NoError(mock.ExpectationsWereMet())
|
||||
a.Error(err)
|
||||
a.Contains("file size is dirty", err.Error())
|
||||
}
|
||||
|
||||
// 成功
|
||||
{
|
||||
mock.ExpectBegin()
|
||||
mock.ExpectExec("DELETE(.+)").
|
||||
WillReturnResult(sqlmock.NewResult(2, 1))
|
||||
mock.ExpectExec("UPDATE(.+)storage(.+)").WithArgs(uint64(2), sqlmock.AnyArg()).WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectExec("DELETE(.+)").
|
||||
WillReturnResult(sqlmock.NewResult(2, 1))
|
||||
mock.ExpectExec("UPDATE(.+)storage(.+)").WithArgs(uint64(3), sqlmock.AnyArg()).WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectCommit()
|
||||
err := DeleteFiles([]*File{{Size: 1}, {Size: 2}}, 0)
|
||||
a.NoError(mock.ExpectationsWereMet())
|
||||
|
|
Loading…
Add table
Reference in a new issue