github.com/systematiccaos/gorm@v1.22.6/schema/check_test.go (about) 1 package schema_test 2 3 import ( 4 "reflect" 5 "sync" 6 "testing" 7 8 "github.com/systematiccaos/gorm/schema" 9 ) 10 11 type UserCheck struct { 12 Name string `gorm:"check:name_checker,name <> 'jinzhu'"` 13 Name2 string `gorm:"check:name <> 'jinzhu'"` 14 Name3 string `gorm:"check:,name <> 'jinzhu'"` 15 } 16 17 func TestParseCheck(t *testing.T) { 18 user, err := schema.Parse(&UserCheck{}, &sync.Map{}, schema.NamingStrategy{}) 19 if err != nil { 20 t.Fatalf("failed to parse user check, got error %v", err) 21 } 22 23 results := map[string]schema.Check{ 24 "name_checker": { 25 Name: "name_checker", 26 Constraint: "name <> 'jinzhu'", 27 }, 28 "chk_user_checks_name2": { 29 Name: "chk_user_checks_name2", 30 Constraint: "name <> 'jinzhu'", 31 }, 32 "chk_user_checks_name3": { 33 Name: "chk_user_checks_name3", 34 Constraint: "name <> 'jinzhu'", 35 }, 36 } 37 38 checks := user.ParseCheckConstraints() 39 40 for k, result := range results { 41 v, ok := checks[k] 42 if !ok { 43 t.Errorf("Failed to found check %v from parsed checks %+v", k, checks) 44 } 45 46 for _, name := range []string{"Name", "Constraint"} { 47 if reflect.ValueOf(result).FieldByName(name).Interface() != reflect.ValueOf(v).FieldByName(name).Interface() { 48 t.Errorf( 49 "check %v %v should equal, expects %v, got %v", 50 k, name, reflect.ValueOf(result).FieldByName(name).Interface(), reflect.ValueOf(v).FieldByName(name).Interface(), 51 ) 52 } 53 } 54 } 55 }