package event import ( "sync" "testing" "github.com/stretchr/testify/assert" ) func TestLocalBroker_On(t *testing.T) { broker := NewLocalBroker() called := 0 receivedSessionId := "" receivedArgs := []interface{}{} wg := sync.WaitGroup{} wg.Add(1) broker.On(INSTANCE_NEW, func(sessionId string, args ...interface{}) { called++ receivedSessionId = sessionId receivedArgs = args wg.Done() }) broker.Emit(SESSION_READY, "1") broker.Emit(INSTANCE_NEW, "2", "foo", "bar") wg.Wait() assert.Equal(t, 1, called) assert.Equal(t, "2", receivedSessionId) assert.Equal(t, []interface{}{"foo", "bar"}, receivedArgs) } func TestLocalBroker_OnAny(t *testing.T) { broker := NewLocalBroker() var receivedEvent EventType receivedSessionId := "" receivedArgs := []interface{}{} wg := sync.WaitGroup{} wg.Add(1) broker.OnAny(func(eventType EventType, sessionId string, args ...interface{}) { receivedSessionId = sessionId receivedArgs = args receivedEvent = eventType wg.Done() }) broker.Emit(SESSION_READY, "1") wg.Wait() var expectedArgs []interface{} assert.Equal(t, SESSION_READY, receivedEvent) assert.Equal(t, "1", receivedSessionId) assert.Equal(t, expectedArgs, receivedArgs) }