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  }