fix: #8 must check the '*' global listeners

This commit is contained in:
inhere
2021-03-11 22:00:20 +08:00
parent 6a1e8fbe23
commit ca71faacb4
2 changed files with 38 additions and 3 deletions

32
issues_test.go Normal file
View File

@@ -0,0 +1,32 @@
package event_test
import (
"testing"
"github.com/gookit/event"
"github.com/stretchr/testify/assert"
)
type testNotify struct {}
func (notify *testNotify) Handle(e event.Event) error {
isRun = true
return nil
}
var isRun = false
// https://github.com/gookit/event/issues/8
func TestIssue_8(t *testing.T) {
notify := testNotify{}
event.On("*", &notify)
err, _ := event.Fire("test_notify", event.M{})
assert.Nil(t, err)
assert.True(t, isRun)
event.On("test_notify", &notify)
err, _ = event.Fire("test_notify", event.M{})
assert.Nil(t, err)
assert.True(t, isRun)
}

View File

@@ -149,9 +149,12 @@ func (em *Manager) Trigger(name string, params M) (error, Event) {
func (em *Manager) Fire(name string, params M) (err error, e Event) {
name = goodName(name)
// not found listeners
if !em.HasListeners(name) {
return
// not found listeners.
if false == em.HasListeners(name) {
// NOTICE: must check the '*' global listeners
if name != Wildcard && false == em.HasListeners(Wildcard) {
return
}
}
// call listeners use defined Event