12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package schema_test
- import (
- "reflect"
- "sync"
- "testing"
- "github.com/jinzhu/gorm/schema"
- )
- type UserCheck struct {
- Name string `gorm:"check:name_checker,name <> 'jinzhu'"`
- Name2 string `gorm:"check:name <> 'jinzhu'"`
- Name3 string `gorm:"check:,name <> 'jinzhu'"`
- }
- func TestParseCheck(t *testing.T) {
- user, _, err := schema.Parse(&UserCheck{}, &sync.Map{}, schema.NamingStrategy{})
- if err != nil {
- t.Fatalf("failed to parse user check, got error %v", err)
- }
- results := map[string]schema.Check{
- "name_checker": {
- Name: "name_checker",
- Constraint: "name <> 'jinzhu'",
- },
- "chk_user_checks_name2": {
- Name: "chk_user_checks_name2",
- Constraint: "name <> 'jinzhu'",
- },
- "chk_user_checks_name3": {
- Name: "chk_user_checks_name3",
- Constraint: "name <> 'jinzhu'",
- },
- }
- checks := user.ParseCheckConstraints()
- for k, result := range results {
- v, ok := checks[k]
- if !ok {
- t.Errorf("Failed to found check %v from parsed checks %+v", k, checks)
- }
- for _, name := range []string{"Name", "Constraint"} {
- if reflect.ValueOf(result).FieldByName(name).Interface() != reflect.ValueOf(v).FieldByName(name).Interface() {
- t.Errorf(
- "check %v %v should equal, expects %v, got %v",
- k, name, reflect.ValueOf(result).FieldByName(name).Interface(), reflect.ValueOf(v).FieldByName(name).Interface(),
- )
- }
- }
- }
- }
|