github.com/erda-project/erda-infra@v1.0.9/providers/mysql/v2/plugins/fields/soft_delete_stamp_test.go (about) 1 // Copyright (c) 2021 Terminus, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package fields_test 16 17 //import ( 18 // "errors" 19 // "os" 20 // "path/filepath" 21 // "regexp" 22 // "testing" 23 // 24 // "gorm.io/driver/sqlite" 25 // "gorm.io/gorm" 26 // 27 // "github.com/erda-project/erda-infra/providers/mysql/v2/plugins/fields" 28 //) 29 // 30 //type User2 struct { 31 // ID uint 32 // Name string 33 // Age uint 34 // DeletedAt fields.DeletedAtStamp 35 //} 36 // 37 //func TestDeletedAtStamp(t *testing.T) { 38 // dsn := filepath.Join(os.TempDir(), "gorm.db") 39 // db, err := gorm.Open(sqlite.Open(dsn), &gorm.Config{}) 40 // if err != nil { 41 // t.Fatalf("failed to connect to database: %v", err) 42 // } 43 // defer os.Remove(dsn) 44 // db = db.Debug() 45 // 46 // user := User2{Name: "dspo", Age: 20} 47 // t.Log("drop table") 48 // if err = db.Migrator().DropTable(new(User2)); err != nil { 49 // t.Fatalf("failed to drop table: %v", err) 50 // } 51 // t.Log("auto migrate") 52 // if err = db.AutoMigrate(new(User2)); err != nil { 53 // t.Fatalf("failed to auto migrate: %v", err) 54 // } 55 // t.Log("save user") 56 // db.Save(&user) 57 // 58 // var count int64 59 // var age uint 60 // 61 // t.Log("count") 62 // if db.Model(&User2{}).Where("name = ?", user.Name).Count(&count).Error != nil || count != 1 { 63 // t.Errorf("count soft deleted record, expects: %v, got: %v", 1, count) 64 // } 65 // 66 // t.Log("select") 67 // if db.Model(&User2{}).Select("age").Where("name = ?", user.Name).Scan(&age).Error != nil || age != user.Age { 68 // t.Errorf("age soft deleted record, expects: %v, got: %v", user.Age, age) 69 // } 70 // 71 // t.Log("delete") 72 // if err := db.Delete(&user).Error; err != nil { 73 // t.Fatalf("no error should be happen when soft delte user, but got: %v", err) 74 // } 75 // 76 // if user.DeletedAt.Int64 == 0 { 77 // t.Errorf("user's deleted at shoud be zero, bug got: %v", user.DeletedAt) 78 // } 79 // 80 // t.Log("dry run delete") 81 // sql := db.Session(&gorm.Session{DryRun: true}).Delete(&user).Statement.SQL.String() 82 // if !regexp.MustCompile(`UPDATE .user2. SET .deleted_at.=.* WHERE .user2.\..id. = .* AND \(.user2.\..deleted_at. = \? OR .user2.\..deleted_at. IS NULL\)`).MatchString(sql) { 83 // t.Fatalf("invalid sql generated, got %v", sql) 84 // } 85 // 86 // t.Log("first") 87 // if db.First(&User2{}, "name = ?", user.Name).Error == nil { 88 // t.Errorf("can not find a soft deleted record") 89 // } 90 // 91 // count = 0 92 // t.Log("count") 93 // if db.Model(&User2{}).Where("name = ?", user.Name).Count(&count).Error != nil || count != 0 { 94 // t.Errorf("count soft deleted record, expects: %v, got: %v", 0, count) 95 // } 96 // 97 // age = 0 98 // t.Log("select age") 99 // if err := db.Model(&User2{}).Select("age").Where("name = ?", user.Name).Scan(&age).Error; err != nil || age != 0 { 100 // t.Fatalf("age soft deleted record, expects: %v, got: %v, err: %v", 0, age, err) 101 // } 102 // 103 // t.Log("unscoped first") 104 // if err := db.Unscoped().First(&User2{}, "name = ?", user.Name).Error; err != nil { 105 // t.Errorf("should find soft deleted record with Unscoped, but got err: %v", err) 106 // } 107 // 108 // t.Log("unscoped delete") 109 // db.Unscoped().Delete(&user) 110 // t.Log("unscoped first") 111 // if err := db.Unscoped().First(&User2{}, "name = ?", user.Name).Error; !errors.Is(err, gorm.ErrRecordNotFound) { 112 // t.Errorf("can not permanently deleted record") 113 // } 114 //}