github.com/systematiccaos/gorm@v1.22.6/schema/callbacks_test.go (about)

     1  package schema_test
     2  
     3  import (
     4  	"reflect"
     5  	"sync"
     6  	"testing"
     7  
     8  	"github.com/systematiccaos/gorm"
     9  	"github.com/systematiccaos/gorm/schema"
    10  )
    11  
    12  type UserWithCallback struct {
    13  }
    14  
    15  func (UserWithCallback) BeforeSave(*gorm.DB) error {
    16  	return nil
    17  }
    18  
    19  func (UserWithCallback) AfterCreate(*gorm.DB) error {
    20  	return nil
    21  }
    22  
    23  func TestCallback(t *testing.T) {
    24  	user, err := schema.Parse(&UserWithCallback{}, &sync.Map{}, schema.NamingStrategy{})
    25  	if err != nil {
    26  		t.Fatalf("failed to parse user with callback, got error %v", err)
    27  	}
    28  
    29  	for _, str := range []string{"BeforeSave", "AfterCreate"} {
    30  		if !reflect.Indirect(reflect.ValueOf(user)).FieldByName(str).Interface().(bool) {
    31  			t.Errorf("%v should be true", str)
    32  		}
    33  	}
    34  
    35  	for _, str := range []string{"BeforeCreate", "BeforeUpdate", "AfterUpdate", "AfterSave", "BeforeDelete", "AfterDelete", "AfterFind"} {
    36  		if reflect.Indirect(reflect.ValueOf(user)).FieldByName(str).Interface().(bool) {
    37  			t.Errorf("%v should be false", str)
    38  		}
    39  	}
    40  }