MCPcopy
hub / github.com/go-gorm/gorm / TestSoftDeleteZeroValue

Function TestSoftDeleteZeroValue

tests/soft_delete_test.go:103–169  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

101}
102
103func 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

Callers

nothing calls this directly

Calls 13

SaveMethod · 0.80
ModelMethod · 0.80
ParseMethod · 0.80
DropTableMethod · 0.65
MigratorMethod · 0.65
AutoMigrateMethod · 0.65
CountMethod · 0.65
WhereMethod · 0.65
ScanMethod · 0.65
SelectMethod · 0.65
DeleteMethod · 0.65
FirstMethod · 0.65

Tested by

no test coverage detected