summaryrefslogtreecommitdiff
path: root/events/events_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'events/events_test.go')
-rw-r--r--events/events_test.go94
1 files changed, 94 insertions, 0 deletions
diff --git a/events/events_test.go b/events/events_test.go
new file mode 100644
index 00000000..e15c55d6
--- /dev/null
+++ b/events/events_test.go
@@ -0,0 +1,94 @@
+package events
+
+import (
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestEvenHandler(t *testing.T) {
+ eh, id := Bus()
+ defer eh.Unsubscribe(id)
+
+ ch := make(chan Event, 100)
+ err := eh.SubscribeP(id, "http.EventJobOK", ch)
+ require.NoError(t, err)
+
+ eh.Send(NewEvent(EventJobOK, "http", "foo"))
+
+ evt := <-ch
+ require.Equal(t, "foo", evt.Message())
+ require.Equal(t, "http", evt.Plugin())
+ require.Equal(t, "EventJobOK", evt.Type().String())
+}
+
+func TestEvenHandler2(t *testing.T) {
+ eh, id := Bus()
+ eh2, id2 := Bus()
+ defer eh.Unsubscribe(id)
+ defer eh2.Unsubscribe(id2)
+
+ ch := make(chan Event, 100)
+ ch2 := make(chan Event, 100)
+ err := eh2.SubscribeP(id2, "http.EventJobOK", ch)
+ require.NoError(t, err)
+
+ err = eh.SubscribeP(id, "http.EventJobOK", ch2)
+ require.NoError(t, err)
+
+ eh.Send(NewEvent(EventJobOK, "http", "foo"))
+
+ evt := <-ch2
+ require.Equal(t, "foo", evt.Message())
+ require.Equal(t, "http", evt.Plugin())
+ require.Equal(t, "EventJobOK", evt.Type().String())
+
+ l := eh.Len()
+ require.Equal(t, uint(2), l)
+
+ eh.Unsubscribe(id)
+ time.Sleep(time.Second)
+
+ l = eh.Len()
+ require.Equal(t, uint(1), l)
+
+ eh2.Unsubscribe(id2)
+ time.Sleep(time.Second)
+
+ l = eh.Len()
+ require.Equal(t, uint(0), l)
+}
+
+func TestEvenHandler3(t *testing.T) {
+ eh, id := Bus()
+ defer eh.Unsubscribe(id)
+
+ ch := make(chan Event, 100)
+ err := eh.SubscribeP(id, "EventJobOK", ch)
+ require.Error(t, err)
+}
+
+func TestEvenHandler4(t *testing.T) {
+ eh, id := Bus()
+ defer eh.Unsubscribe(id)
+
+ err := eh.SubscribeP(id, "EventJobOK", nil)
+ require.Error(t, err)
+}
+
+func TestEvenHandler5(t *testing.T) {
+ eh, id := Bus()
+ defer eh.Unsubscribe(id)
+
+ ch := make(chan Event, 100)
+ err := eh.SubscribeP(id, "http.EventJobOK", ch)
+ require.NoError(t, err)
+
+ eh.Send(NewEvent(EventJobOK, "http", "foo"))
+
+ evt := <-ch
+ require.Equal(t, "foo", evt.Message())
+ require.Equal(t, "http", evt.Plugin())
+ require.Equal(t, "EventJobOK", evt.Type().String())
+}