Add context for Publish and AddEventListener (#41665)

* Add context for Publish and AddEventListener

* Add test and listenersWithCtx

* Refactor listener logic

* Refactor publish logic for all combination of listeners and publish with and without ctx
This commit is contained in:
idafurjes
2021-11-19 13:56:42 +01:00
committed by GitHub
parent 35c2c95fdc
commit 972764cf8f
2 changed files with 143 additions and 16 deletions
+57 -2
View File
@@ -122,7 +122,7 @@ func TestQuery_HandlerReturnsError(t *testing.T) {
require.Error(t, err, "expected error but got none")
}
func TestEvent(t *testing.T) {
func TestEventPublish(t *testing.T) {
bus := New()
var invoked bool
@@ -138,9 +138,64 @@ func TestEvent(t *testing.T) {
require.True(t, invoked)
}
func TestEvent_NoRegisteredListener(t *testing.T) {
func TestEventPublish_NoRegisteredListener(t *testing.T) {
bus := New()
err := bus.Publish(&testQuery{})
require.NoError(t, err, "unable to publish event")
}
func TestEventCtxPublishCtx(t *testing.T) {
bus := New()
var invoked bool
bus.AddEventListenerCtx(func(ctx context.Context, query *testQuery) error {
invoked = true
return nil
})
err := bus.PublishCtx(context.Background(), &testQuery{})
require.NoError(t, err, "unable to publish event")
require.True(t, invoked)
}
func TestEventPublishCtx_NoRegisteredListener(t *testing.T) {
bus := New()
err := bus.PublishCtx(context.Background(), &testQuery{})
require.NoError(t, err, "unable to publish event")
}
func TestEventPublishCtx(t *testing.T) {
bus := New()
var invoked bool
bus.AddEventListener(func(query *testQuery) error {
invoked = true
return nil
})
err := bus.PublishCtx(context.Background(), &testQuery{})
require.NoError(t, err, "unable to publish event")
require.True(t, invoked)
}
func TestEventCtxPublish(t *testing.T) {
bus := New()
var invoked bool
bus.AddEventListenerCtx(func(ctx context.Context, query *testQuery) error {
invoked = true
return nil
})
err := bus.Publish(&testQuery{})
require.NoError(t, err, "unable to publish event")
require.True(t, invoked)
}