cosmos-sdk/core/testing/event_test.go

50 lines
1.3 KiB
Go

package coretesting
import (
"reflect"
"testing"
gogotypes "github.com/cosmos/gogoproto/types"
"cosmossdk.io/core/event"
)
func TestEventsService(t *testing.T) {
ctx := Context()
es := EventsService(ctx, "auth")
wantProtoEvent := &gogotypes.BoolValue{Value: true}
err := es.EventManager(ctx).Emit(wantProtoEvent)
if err != nil {
t.Errorf("failed to emit proto event: %s", err)
}
wantEvent := event.NewEvent("new-account", event.Attribute{
Key: "number",
Value: "1",
})
err = es.EventManager(ctx).EmitKV(wantEvent.Type, wantEvent.Attributes...)
if err != nil {
t.Errorf("failed to emit event: %s", err)
}
gotProtoEvents := es.GetProtoEvents(ctx)
if len(gotProtoEvents) != 1 || gotProtoEvents[0] != wantProtoEvent {
t.Errorf("unexpected proto events: got %v, want %v", gotProtoEvents, wantProtoEvent)
}
gotEvents := es.GetEvents(ctx)
if len(gotEvents) != 1 || !reflect.DeepEqual(gotEvents[0], wantEvent) {
t.Errorf("unexpected events: got %v, want %v", gotEvents, wantEvent)
}
// test reset
es = EventsService(ctx, "auth")
if es.GetEvents(ctx) != nil {
t.Errorf("expected nil events after reset, got %v", es.GetEvents(ctx))
}
if es.GetProtoEvents(ctx) != nil {
t.Errorf("expected nil proto events after reset, got %v", es.GetProtoEvents(ctx))
}
}