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

Function TestTransactionWithSavePoint

tests/transaction_test.go:181–236  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

179}
180
181func TestTransactionWithSavePoint(t *testing.T) {
182 tx := DB.Begin()
183
184 user := *GetUser("transaction-save-point", Config{})
185 tx.Create(&user)
186
187 if err := tx.First(&User{}, "name = ?", user.Name).Error; err != nil {
188 t.Fatalf("Should find saved record")
189 }
190
191 if err := tx.SavePoint("save_point1").Error; err != nil {
192 t.Fatalf("Failed to save point, got error %v", err)
193 }
194
195 user1 := *GetUser("transaction-save-point-1", Config{})
196 tx.Create(&user1)
197
198 if err := tx.First(&User{}, "name = ?", user1.Name).Error; err != nil {
199 t.Fatalf("Should find saved record")
200 }
201
202 if err := tx.RollbackTo("save_point1").Error; err != nil {
203 t.Fatalf("Failed to save point, got error %v", err)
204 }
205
206 if err := tx.First(&User{}, "name = ?", user1.Name).Error; err == nil {
207 t.Fatalf("Should not find rollbacked record")
208 }
209
210 if err := tx.SavePoint("save_point2").Error; err != nil {
211 t.Fatalf("Failed to save point, got error %v", err)
212 }
213
214 user2 := *GetUser("transaction-save-point-2", Config{})
215 tx.Create(&user2)
216
217 if err := tx.First(&User{}, "name = ?", user2.Name).Error; err != nil {
218 t.Fatalf("Should find saved record")
219 }
220
221 if err := tx.Commit().Error; err != nil {
222 t.Fatalf("Failed to commit, got error %v", err)
223 }
224
225 if err := DB.First(&User{}, "name = ?", user.Name).Error; err != nil {
226 t.Fatalf("Should find saved record")
227 }
228
229 if err := DB.First(&User{}, "name = ?", user1.Name).Error; err == nil {
230 t.Fatalf("Should not find rollbacked record")
231 }
232
233 if err := DB.First(&User{}, "name = ?", user2.Name).Error; err != nil {
234 t.Fatalf("Should find saved record")
235 }
236}
237
238func TestNestedTransactionWithBlock(t *testing.T) {

Callers

nothing calls this directly

Calls 7

GetUserFunction · 0.85
BeginMethod · 0.80
CreateMethod · 0.65
FirstMethod · 0.65
SavePointMethod · 0.65
RollbackToMethod · 0.65
CommitMethod · 0.65

Tested by

no test coverage detected