github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/types/events_test.go (about) 1 package types 2 3 import ( 4 "encoding/json" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestAppendEvents(t *testing.T) { 11 e1 := NewEvent("transfer", NewAttribute("sender", "foo")) 12 e2 := NewEvent("transfer", NewAttribute("sender", "bar")) 13 a := Events{e1} 14 b := Events{e2} 15 c := a.AppendEvents(b) 16 require.Equal(t, c, Events{e1, e2}) 17 require.Equal(t, c, Events{e1}.AppendEvent(NewEvent("transfer", NewAttribute("sender", "bar")))) 18 require.Equal(t, c, Events{e1}.AppendEvents(Events{e2})) 19 } 20 21 func TestAppendAttributes(t *testing.T) { 22 e := NewEvent("transfer", NewAttribute("sender", "foo")) 23 e = e.AppendAttributes(NewAttribute("recipient", "bar")) 24 require.Len(t, e.Attributes, 2) 25 require.Equal(t, e, NewEvent("transfer", NewAttribute("sender", "foo"), NewAttribute("recipient", "bar"))) 26 } 27 28 func TestEmptyEvents(t *testing.T) { 29 require.Equal(t, EmptyEvents(), Events{}) 30 } 31 32 func TestAttributeString(t *testing.T) { 33 require.Equal(t, "foo: bar", NewAttribute("foo", "bar").String()) 34 } 35 36 func TestToABCIEvents(t *testing.T) { 37 e := Events{NewEvent("transfer", NewAttribute("sender", "foo"))} 38 abciEvents := e.ToABCIEvents() 39 require.Len(t, abciEvents, 1) 40 require.Equal(t, abciEvents[0].Type, e[0].Type) 41 require.Equal(t, abciEvents[0].Attributes, e[0].Attributes) 42 } 43 44 func TestEventManager(t *testing.T) { 45 em := NewEventManager() 46 event := NewEvent("reward", NewAttribute("x", "y")) 47 events := Events{NewEvent("transfer", NewAttribute("sender", "foo"))} 48 49 em.EmitEvents(events) 50 em.EmitEvent(event) 51 52 require.Len(t, em.Events(), 2) 53 require.Equal(t, em.Events(), events.AppendEvent(event)) 54 } 55 56 func TestStringifyEvents(t *testing.T) { 57 e := Events{ 58 NewEvent("message", NewAttribute("sender", "foo")), 59 NewEvent("message", NewAttribute("module", "bank")), 60 } 61 se := StringifyEvents(e) 62 63 expectedTxtStr := "\t\t- message\n\t\t\t- sender: foo\n\t\t\t- module: bank" 64 require.Equal(t, expectedTxtStr, se.String()) 65 66 bz, err := json.Marshal(se) 67 require.NoError(t, err) 68 69 expectedJSONStr := "[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"foo\"},{\"key\":\"module\",\"value\":\"bank\"}]}]" 70 require.Equal(t, expectedJSONStr, string(bz)) 71 }