fix: behavior when getting removed callback
This commit is contained in:
parent
1b0aa802df
commit
f68e189300
@ -154,8 +154,11 @@ func (p *processor) Execute(db *DB) *DB {
|
|||||||
|
|
||||||
func (p *processor) Get(name string) func(*DB) {
|
func (p *processor) Get(name string) func(*DB) {
|
||||||
for i := len(p.callbacks) - 1; i >= 0; i-- {
|
for i := len(p.callbacks) - 1; i >= 0; i-- {
|
||||||
if v := p.callbacks[i]; v.name == name && !v.remove {
|
if v := p.callbacks[i]; v.name == name {
|
||||||
return v.handler
|
if !v.remove {
|
||||||
|
return v.handler
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -206,3 +206,25 @@ func TestPluginCallbacks(t *testing.T) {
|
|||||||
t.Errorf("callbacks tests failed, got %v", msg)
|
t.Errorf("callbacks tests failed, got %v", msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCallbacksRemoveAndGet(t *testing.T) {
|
||||||
|
db, _ := gorm.Open(nil, nil)
|
||||||
|
createCallback := db.Callback().Create()
|
||||||
|
|
||||||
|
err := createCallback.Register("plugin_1_fn1", c1)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("callbacks tests failed, got error: %v", err)
|
||||||
|
}
|
||||||
|
if cb := createCallback.Get("plugin_1_fn1"); reflect.DeepEqual(cb, c1) {
|
||||||
|
t.Errorf("callbacks tests failed, got: %p, want: %p", cb, c1)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = createCallback.Remove("plugin_1_fn1")
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("callbacks test failed, got error: %v", err)
|
||||||
|
}
|
||||||
|
if cb := createCallback.Get("plugin_1_fn1"); cb != nil {
|
||||||
|
t.Errorf("callbacks test failed. got: %p, want: nil", cb)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user