github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/ibc-go/modules/apps/29-fee/keeper/events_test.go (about)

     1  package keeper_test
     2  
     3  import (
     4  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     5  	"github.com/fibonacci-chain/fbc/libs/ibc-go/modules/apps/29-fee/types"
     6  	abcitypes "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types"
     7  )
     8  
     9  func (suite *KeeperTestSuite) TestIncentivizePacketEvent() {
    10  	var (
    11  		expRecvFees    sdk.CoinAdapters
    12  		expAckFees     sdk.CoinAdapters
    13  		expTimeoutFees sdk.CoinAdapters
    14  	)
    15  
    16  	suite.coordinator.Setup(suite.path)
    17  
    18  	fee := types.NewFee(defaultRecvFee, defaultAckFee, defaultTimeoutFee)
    19  	msg := types.NewMsgPayPacketFee(
    20  		fee,
    21  		suite.path.EndpointA.ChannelConfig.PortID,
    22  		suite.path.EndpointA.ChannelID,
    23  		suite.chainA.SenderAccount().GetAddress().String(),
    24  		nil,
    25  	)
    26  
    27  	expRecvFees = expRecvFees.Add(fee.RecvFee...)
    28  	expAckFees = expAckFees.Add(fee.AckFee...)
    29  	expTimeoutFees = expTimeoutFees.Add(fee.TimeoutFee...)
    30  
    31  	result, err := suite.chainA.SendMsgs(msg)
    32  	suite.Require().NoError(err)
    33  
    34  	var incentivizedPacketEvent abcitypes.Event
    35  	for _, event := range result.Events {
    36  		if event.Type == types.EventTypeIncentivizedPacket {
    37  			incentivizedPacketEvent = abcitypes.Event(event)
    38  		}
    39  	}
    40  
    41  	for _, attr := range incentivizedPacketEvent.Attributes {
    42  		switch string(attr.Key) {
    43  		case types.AttributeKeyRecvFee:
    44  			suite.Require().Equal(expRecvFees.String(), string(attr.Value))
    45  
    46  		case types.AttributeKeyAckFee:
    47  			suite.Require().Equal(expAckFees.String(), string(attr.Value))
    48  
    49  		case types.AttributeKeyTimeoutFee:
    50  			suite.Require().Equal(expTimeoutFees.String(), string(attr.Value))
    51  		}
    52  	}
    53  
    54  	// send the same messages again a few times
    55  	for i := 0; i < 3; i++ {
    56  		expRecvFees = expRecvFees.Add(fee.RecvFee...)
    57  		expAckFees = expAckFees.Add(fee.AckFee...)
    58  		expTimeoutFees = expTimeoutFees.Add(fee.TimeoutFee...)
    59  
    60  		result, err = suite.chainA.SendMsgs(msg)
    61  		suite.Require().NoError(err)
    62  	}
    63  
    64  	for _, event := range result.Events {
    65  		if event.Type == types.EventTypeIncentivizedPacket {
    66  			incentivizedPacketEvent = abcitypes.Event(event)
    67  		}
    68  	}
    69  
    70  	for _, attr := range incentivizedPacketEvent.Attributes {
    71  		switch string(attr.Key) {
    72  		case types.AttributeKeyRecvFee:
    73  			suite.Require().Equal(expRecvFees.String(), string(attr.Value))
    74  
    75  		case types.AttributeKeyAckFee:
    76  			suite.Require().Equal(expAckFees.String(), string(attr.Value))
    77  
    78  		case types.AttributeKeyTimeoutFee:
    79  			suite.Require().Equal(expTimeoutFees.String(), string(attr.Value))
    80  		}
    81  	}
    82  }