- package events
-
- import (
- "context"
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- )
-
- func TestEventCache_Flush(t *testing.T) {
- ctx, cancel := context.WithCancel(context.Background())
- defer cancel()
-
- evsw := NewEventSwitch()
- err := evsw.Start(ctx)
- require.NoError(t, err)
-
- err = evsw.AddListenerForEvent("nothingness", "", func(data EventData) {
- // Check we are not initializing an empty buffer full of zeroed eventInfos in the EventCache
- require.FailNow(t, "We should never receive a message on this switch since none are fired")
- })
- require.NoError(t, err)
-
- evc := NewEventCache(evsw)
- evc.Flush()
- // Check after reset
- evc.Flush()
- fail := true
- pass := false
- err = evsw.AddListenerForEvent("somethingness", "something", func(data EventData) {
- if fail {
- require.FailNow(t, "Shouldn't see a message until flushed")
- }
- pass = true
- })
- require.NoError(t, err)
-
- evc.FireEvent("something", struct{ int }{1})
- evc.FireEvent("something", struct{ int }{2})
- evc.FireEvent("something", struct{ int }{3})
- fail = false
- evc.Flush()
- assert.True(t, pass)
- }
|