cosmos-sdk/types/events_test.go

72 lines
2.1 KiB
Go

package types
import (
"encoding/json"
"testing"
"github.com/stretchr/testify/require"
)
func TestAppendEvents(t *testing.T) {
e1 := NewEvent("transfer", NewAttribute("sender", "foo"))
e2 := NewEvent("transfer", NewAttribute("sender", "bar"))
a := Events{e1}
b := Events{e2}
c := a.AppendEvents(b)
require.Equal(t, c, Events{e1, e2})
require.Equal(t, c, Events{e1}.AppendEvent(NewEvent("transfer", NewAttribute("sender", "bar"))))
require.Equal(t, c, Events{e1}.AppendEvents(Events{e2}))
}
func TestAppendAttributes(t *testing.T) {
e := NewEvent("transfer", NewAttribute("sender", "foo"))
e = e.AppendAttributes(NewAttribute("recipient", "bar"))
require.Len(t, e.Attributes, 2)
require.Equal(t, e, NewEvent("transfer", NewAttribute("sender", "foo"), NewAttribute("recipient", "bar")))
}
func TestEmptyEvents(t *testing.T) {
require.Equal(t, EmptyEvents(), Events{})
}
func TestAttributeString(t *testing.T) {
require.Equal(t, "foo: bar", NewAttribute("foo", "bar").String())
}
func TestToABCIEvents(t *testing.T) {
e := Events{NewEvent("transfer", NewAttribute("sender", "foo"))}
abciEvents := e.ToABCIEvents()
require.Len(t, abciEvents, 1)
require.Equal(t, abciEvents[0].Type, e[0].Type)
require.Equal(t, abciEvents[0].Attributes, e[0].Attributes)
}
func TestEventManager(t *testing.T) {
em := NewEventManager()
event := NewEvent("reward", NewAttribute("x", "y"))
events := Events{NewEvent("transfer", NewAttribute("sender", "foo"))}
em.EmitEvents(events)
em.EmitEvent(event)
require.Len(t, em.Events(), 2)
require.Equal(t, em.Events(), events.AppendEvent(event))
}
func TestStringifyEvents(t *testing.T) {
e := Events{
NewEvent("message", NewAttribute("sender", "foo")),
NewEvent("message", NewAttribute("module", "bank")),
}
se := StringifyEvents(e.ToABCIEvents())
expectedTxtStr := "\t\t- message\n\t\t\t- sender: foo\n\t\t\t- module: bank"
require.Equal(t, expectedTxtStr, se.String())
bz, err := json.Marshal(se)
require.NoError(t, err)
expectedJSONStr := "[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"foo\"},{\"key\":\"module\",\"value\":\"bank\"}]}]"
require.Equal(t, expectedJSONStr, string(bz))
}