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) { | ||||
| 	for i := len(p.callbacks) - 1; i >= 0; i-- { | ||||
| 		if v := p.callbacks[i]; v.name == name && !v.remove { | ||||
| 			return v.handler | ||||
| 		if v := p.callbacks[i]; v.name == name { | ||||
| 			if !v.remove { | ||||
| 				return v.handler | ||||
| 			} | ||||
| 			return nil | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
|  | ||||
| @ -206,3 +206,25 @@ func TestPluginCallbacks(t *testing.T) { | ||||
| 		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
	 snackmgmg
						snackmgmg