1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
package event_tracker //nolint:stylecheck
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestEventTracker(t *testing.T) {
et := NewEventTracker()
e := et.RegisterEvent("x")
require.Contains(t, et.eventLists, "x")
ed := et.CloneEventData()
expectedEvents := map[string][]Event{}
require.Equal(t, expectedEvents, ed.Events)
e.EmitEvent(1, 2)
e.EmitEvent(4, 5)
e.EmitEvent(1, 2)
assert.EqualValues(t, 3, et.AccumulatedEvents())
ed = et.CloneEventData()
expectedEvents = map[string][]Event{
"x": {
{
UserID: 1,
ProjectID: 2,
},
{
UserID: 4,
ProjectID: 5,
},
{
UserID: 1,
ProjectID: 2,
},
},
}
require.Equal(t, expectedEvents, ed.Events)
et.Subtract(ed)
ed = et.CloneEventData()
require.Empty(t, ed.Events)
assert.Zero(t, et.AccumulatedEvents())
}
func TestEventTracker_Subtract(t *testing.T) {
et := NewEventTracker()
e := et.RegisterEvent("x")
require.Contains(t, et.eventLists, "x")
e.EmitEvent(1, 1)
e.EmitEvent(2, 2)
e.EmitEvent(3, 3)
e.EmitEvent(4, 4)
e.EmitEvent(5, 5)
require.Len(t, et.eventLists["x"].events, 5)
assert.EqualValues(t, 5, et.AccumulatedEvents())
et.Subtract(&EventData{
Events: map[string][]Event{
"x": {
{
UserID: 1,
ProjectID: 1,
},
{
UserID: 2,
ProjectID: 2,
},
{
UserID: 3,
ProjectID: 3,
},
},
},
})
require.Len(t, et.eventLists["x"].events, 2)
assert.EqualValues(t, 2, et.AccumulatedEvents())
e.EmitEvent(6, 6)
assert.EqualValues(t, 3, et.AccumulatedEvents())
et.Subtract(&EventData{
Events: map[string][]Event{
"x": {
{
UserID: 4,
ProjectID: 4,
},
{
UserID: 5,
ProjectID: 5,
},
{
UserID: 6,
ProjectID: 6,
},
},
},
})
require.Empty(t, et.eventLists["x"].events)
assert.Zero(t, et.AccumulatedEvents())
}
|