mirror of https://github.com/cloudreve/Cloudreve
test: fix failed test in model/file/deleteFile
parent
18f5bffed1
commit
13d36c25d4
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)
|
result := tx.Unscoped().Where("size = ?", file.Size).Delete(file)
|
||||||
|
if result.Error != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
return result.Error
|
||||||
|
}
|
||||||
|
|
||||||
if result.RowsAffected == 0 {
|
if result.RowsAffected == 0 {
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
return errors.New("file size is dirty")
|
return errors.New("file size is dirty")
|
||||||
}
|
}
|
||||||
|
|
||||||
size += file.Size
|
size += file.Size
|
||||||
|
|
||||||
if result.Error != nil {
|
|
||||||
tx.Rollback()
|
|
||||||
return result.Error
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := user.ChangeStorage(tx, "-", size); err != nil {
|
if err := user.ChangeStorage(tx, "-", size); err != nil {
|
||||||
|
|
|
@ -339,7 +339,7 @@ func TestDeleteFiles(t *testing.T) {
|
||||||
// uid 不一致
|
// uid 不一致
|
||||||
{
|
{
|
||||||
err := DeleteFiles([]*File{{}}, 1)
|
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)
|
a.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 成功,其中一个文件已经不存在
|
// 文件脏读
|
||||||
{
|
{
|
||||||
mock.ExpectBegin()
|
mock.ExpectBegin()
|
||||||
mock.ExpectExec("DELETE(.+)").
|
mock.ExpectExec("DELETE(.+)").
|
||||||
WillReturnResult(sqlmock.NewResult(1, 0))
|
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(.+)").
|
mock.ExpectExec("DELETE(.+)").
|
||||||
WillReturnResult(sqlmock.NewResult(2, 1))
|
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()
|
mock.ExpectCommit()
|
||||||
err := DeleteFiles([]*File{{Size: 1}, {Size: 2}}, 0)
|
err := DeleteFiles([]*File{{Size: 1}, {Size: 2}}, 0)
|
||||||
a.NoError(mock.ExpectationsWereMet())
|
a.NoError(mock.ExpectationsWereMet())
|
||||||
|
|
Loading…
Reference in New Issue