12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package schema_test
- import (
- "reflect"
- "sync"
- "testing"
- "time"
- "github.com/jinzhu/gorm"
- "github.com/jinzhu/gorm/schema"
- "github.com/jinzhu/gorm/tests"
- )
- func TestFieldValuerAndSetter(t *testing.T) {
- var (
- cacheMap = sync.Map{}
- userSchema, _ = schema.Parse(&tests.User{}, &cacheMap, schema.NamingStrategy{})
- user = tests.User{
- Model: gorm.Model{
- ID: 10,
- CreatedAt: time.Now(),
- DeletedAt: tests.Now(),
- },
- Name: "valuer_and_setter",
- Age: 18,
- Birthday: tests.Now(),
- }
- reflectValue = reflect.ValueOf(user)
- )
- values := map[string]interface{}{
- "name": user.Name,
- "id": user.ID,
- "created_at": user.CreatedAt,
- "deleted_at": user.DeletedAt,
- "age": user.Age,
- "birthday": user.Birthday,
- }
- for k, v := range values {
- if rv := userSchema.FieldsByDBName[k].ValueOf(reflectValue); rv != v {
- t.Errorf("user's %v value should equal %+v, but got %+v", k, v, rv)
- }
- }
- newValues := map[string]interface{}{
- "name": "valuer_and_setter_2",
- "id": "2",
- "created_at": time.Now(),
- "deleted_at": tests.Now(),
- "age": 20,
- "birthday": time.Now(),
- }
- for k, v := range newValues {
- if err := userSchema.FieldsByDBName[k].Set(reflectValue, v); err != nil {
- t.Errorf("no error should happen when assign value to field %v", k)
- }
- if rv := userSchema.FieldsByDBName[k].ValueOf(reflectValue); rv != v {
- t.Errorf("user's %v value should equal %+v after assign new value, but got %+v", k, v, rv)
- }
- }
- }
|