(t *testing.T)
| 101 | } |
| 102 | |
| 103 | func TestSoftDeleteZeroValue(t *testing.T) { |
| 104 | type SoftDeleteBook struct { |
| 105 | ID uint |
| 106 | Name string |
| 107 | Pages uint |
| 108 | DeletedAt gorm.DeletedAt `gorm:"zeroValue:'1970-01-01 00:00:01'"` |
| 109 | } |
| 110 | DB.Migrator().DropTable(&SoftDeleteBook{}) |
| 111 | if err := DB.AutoMigrate(&SoftDeleteBook{}); err != nil { |
| 112 | t.Fatalf("failed to auto migrate soft delete table") |
| 113 | } |
| 114 | |
| 115 | book := SoftDeleteBook{Name: "jinzhu", Pages: 10} |
| 116 | DB.Save(&book) |
| 117 | |
| 118 | var count int64 |
| 119 | if DB.Model(&SoftDeleteBook{}).Where("name = ?", book.Name).Count(&count).Error != nil || count != 1 { |
| 120 | t.Errorf("Count soft deleted record, expects: %v, got: %v", 1, count) |
| 121 | } |
| 122 | |
| 123 | var pages uint |
| 124 | if DB.Model(&SoftDeleteBook{}).Select("pages").Where("name = ?", book.Name).Scan(&pages).Error != nil || pages != book.Pages { |
| 125 | t.Errorf("Pages soft deleted record, expects: %v, got: %v", 0, pages) |
| 126 | } |
| 127 | |
| 128 | if err := DB.Delete(&book).Error; err != nil { |
| 129 | t.Fatalf("No error should happen when soft delete user, but got %v", err) |
| 130 | } |
| 131 | |
| 132 | zeroTime, _ := now.Parse("1970-01-01 00:00:01") |
| 133 | if book.DeletedAt.Time.Equal(zeroTime) { |
| 134 | t.Errorf("book's deleted at should not be zero, DeletedAt: %v", book.DeletedAt) |
| 135 | } |
| 136 | |
| 137 | if DB.First(&SoftDeleteBook{}, "name = ?", book.Name).Error == nil { |
| 138 | t.Errorf("Can't find a soft deleted record") |
| 139 | } |
| 140 | |
| 141 | count = 0 |
| 142 | if DB.Model(&SoftDeleteBook{}).Where("name = ?", book.Name).Count(&count).Error != nil || count != 0 { |
| 143 | t.Errorf("Count soft deleted record, expects: %v, got: %v", 0, count) |
| 144 | } |
| 145 | |
| 146 | pages = 0 |
| 147 | if err := DB.Model(&SoftDeleteBook{}).Select("pages").Where("name = ?", book.Name).Scan(&pages).Error; err != nil || pages != 0 { |
| 148 | t.Fatalf("Age soft deleted record, expects: %v, got: %v, err %v", 0, pages, err) |
| 149 | } |
| 150 | |
| 151 | if err := DB.Unscoped().First(&SoftDeleteBook{}, "name = ?", book.Name).Error; err != nil { |
| 152 | t.Errorf("Should find soft deleted record with Unscoped, but got err %s", err) |
| 153 | } |
| 154 | |
| 155 | count = 0 |
| 156 | if DB.Unscoped().Model(&SoftDeleteBook{}).Where("name = ?", book.Name).Count(&count).Error != nil || count != 1 { |
| 157 | t.Errorf("Count soft deleted record, expects: %v, count: %v", 1, count) |
| 158 | } |
| 159 | |
| 160 | pages = 0 |
nothing calls this directly
no test coverage detected