gorm/tests/soft_delete_test.go

45 lines
1.3 KiB
Go
Raw Normal View History

2020-05-29 02:35:45 +03:00
package tests_test
import (
2020-06-07 17:03:45 +03:00
"errors"
2020-05-29 02:35:45 +03:00
"testing"
2020-06-07 17:03:45 +03:00
"gorm.io/gorm"
2020-06-02 05:34:50 +03:00
. "gorm.io/gorm/utils/tests"
2020-05-29 02:35:45 +03:00
)
func TestSoftDelete(t *testing.T) {
user := *GetUser("SoftDelete", Config{})
DB.Save(&user)
2020-06-10 08:42:39 +03:00
var count int64
if DB.Model(&User{}).Where("name = ?", user.Name).Count(&count).Error != nil || count != 1 {
t.Errorf("Count soft deleted record, expects: %v, got: %v", 1, count)
}
2020-05-29 02:35:45 +03:00
if err := DB.Delete(&user).Error; err != nil {
t.Fatalf("No error should happen when soft delete user, but got %v", err)
}
if DB.First(&User{}, "name = ?", user.Name).Error == nil {
t.Errorf("Can't find a soft deleted record")
}
2020-06-10 08:42:39 +03:00
if DB.Model(&User{}).Where("name = ?", user.Name).Count(&count).Error != nil || count != 0 {
t.Errorf("Count soft deleted record, expects: %v, got: %v", 0, count)
}
2020-05-29 02:35:45 +03:00
if err := DB.Unscoped().First(&User{}, "name = ?", user.Name).Error; err != nil {
t.Errorf("Should find soft deleted record with Unscoped, but got err %s", err)
}
2020-06-10 08:42:39 +03:00
if DB.Unscoped().Model(&User{}).Where("name = ?", user.Name).Count(&count).Error != nil || count != 1 {
t.Errorf("Count soft deleted record, expects: %v, count: %v", 1, count)
}
2020-05-29 02:35:45 +03:00
DB.Unscoped().Delete(&user)
2020-06-07 17:03:45 +03:00
if err := DB.Unscoped().First(&User{}, "name = ?", user.Name).Error; !errors.Is(err, gorm.ErrRecordNotFound) {
2020-05-29 02:35:45 +03:00
t.Errorf("Can't find permanently deleted record")
}
}