33package evm_test
44
55import (
6+ "fmt"
7+
68 sdkmath "cosmossdk.io/math"
79 sdktypes "github.com/cosmos/cosmos-sdk/types"
810 banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
@@ -12,11 +14,13 @@ import (
1214 "github.com/evmos/os/testutil/integration/os/grpc"
1315 testkeyring "github.com/evmos/os/testutil/integration/os/keyring"
1416 "github.com/evmos/os/testutil/integration/os/network"
17+ evmtypes "github.com/evmos/os/x/evm/types"
1518)
1619
1720func (suite * EvmAnteTestSuite ) TestUpdateCumulativeGasWanted () {
1821 keyring := testkeyring .New (1 )
1922 unitNetwork := network .NewUnitTestNetwork (
23+ network .WithChainID (suite .chainID ),
2024 network .WithPreFundedAccounts (keyring .GetAllAccAddrs ()... ),
2125 )
2226
@@ -89,6 +93,7 @@ func (suite *EvmAnteTestSuite) TestUpdateCumulativeGasWanted() {
8993func (suite * EvmAnteTestSuite ) TestConsumeGasAndEmitEvent () {
9094 keyring := testkeyring .New (1 )
9195 unitNetwork := network .NewUnitTestNetwork (
96+ network .WithChainID (suite .chainID ),
9297 network .WithPreFundedAccounts (keyring .GetAllAccAddrs ()... ),
9398 )
9499 grpcHandler := grpc .NewIntegrationHandler (unitNetwork )
@@ -97,22 +102,20 @@ func (suite *EvmAnteTestSuite) TestConsumeGasAndEmitEvent() {
97102 testCases := []struct {
98103 name string
99104 expectedError string
100- fees sdktypes. Coins
105+ feesAmt sdkmath. Int
101106 getSender func () sdktypes.AccAddress
102107 }{
103108 {
104- name : "success: fees are zero and event emitted" ,
105- fees : sdktypes. Coins {} ,
109+ name : "success: fees are zero and event emitted" ,
110+ feesAmt : sdkmath . NewInt ( 0 ) ,
106111 getSender : func () sdktypes.AccAddress {
107112 // Return prefunded sender
108113 return keyring .GetKey (0 ).AccAddr
109114 },
110115 },
111116 {
112- name : "success: there are non zero fees, user has sufficient bank balances and event emitted" ,
113- fees : sdktypes.Coins {
114- sdktypes .NewCoin (unitNetwork .GetBaseDenom (), sdkmath .NewInt (1000 )),
115- },
117+ name : "success: there are non zero fees, user has sufficient bank balances and event emitted" ,
118+ feesAmt : sdkmath .NewInt (1000 ),
116119 getSender : func () sdktypes.AccAddress {
117120 // Return prefunded sender
118121 return keyring .GetKey (0 ).AccAddr
@@ -121,9 +124,7 @@ func (suite *EvmAnteTestSuite) TestConsumeGasAndEmitEvent() {
121124 {
122125 name : "fail: insufficient user balance, event is NOT emitted" ,
123126 expectedError : "failed to deduct transaction costs from user balance" ,
124- fees : sdktypes.Coins {
125- sdktypes .NewCoin (unitNetwork .GetBaseDenom (), sdkmath .NewInt (1000 )),
126- },
127+ feesAmt : sdkmath .NewInt (1000 ),
127128 getSender : func () sdktypes.AccAddress {
128129 // Set up account with too little balance (but not zero)
129130 index := keyring .AddKey ()
@@ -145,18 +146,23 @@ func (suite *EvmAnteTestSuite) TestConsumeGasAndEmitEvent() {
145146 }
146147
147148 for _ , tc := range testCases {
148- suite .Run (tc .name , func () {
149+ suite .Run (fmt . Sprintf ( "%v_%v_%v" , evmtypes . GetTxTypeName ( suite . ethTxType ), suite . chainID , tc .name ) , func () {
149150 sender := tc .getSender ()
150- prevBalance , err := grpcHandler .GetAllBalances (
151- sender ,
152- )
151+
152+ resp , err := grpcHandler .GetBalanceFromEVM (sender )
153153 suite .Require ().NoError (err )
154+ prevBalance , ok := sdkmath .NewIntFromString (resp .Balance )
155+ suite .Require ().True (ok )
156+
157+ evmDecimals := evmtypes .GetEVMCoinDecimals ()
158+ feesAmt := tc .feesAmt .Mul (evmDecimals .ConversionFactor ())
159+ fees := sdktypes .NewCoins (sdktypes .NewCoin (unitNetwork .GetBaseDenom (), feesAmt ))
154160
155161 // Function under test
156162 err = evmante .ConsumeFeesAndEmitEvent (
157163 unitNetwork .GetContext (),
158164 unitNetwork .App .EVMKeeper ,
159- tc . fees ,
165+ fees ,
160166 sender ,
161167 )
162168
@@ -166,31 +172,32 @@ func (suite *EvmAnteTestSuite) TestConsumeGasAndEmitEvent() {
166172
167173 // Check events are not present
168174 events := unitNetwork .GetContext ().EventManager ().Events ()
169- suite .Require ().Zero (len (events ))
175+ suite .Require ().Zero (len (events ), "required no events to be emitted" )
170176 } else {
171177 suite .Require ().NoError (err )
172178
173179 // Check fees are deducted
174- afterBalance , err := grpcHandler .GetAllBalances (
175- sender ,
176- )
180+ resp , err := grpcHandler .GetBalanceFromEVM (sender )
177181 suite .Require ().NoError (err )
178- expectedBalance := prevBalance .Balances .Sub (tc .fees ... )
179- suite .Require ().True (
180- expectedBalance .Equal (afterBalance .Balances ),
181- )
182+ afterBalance , ok := sdkmath .NewIntFromString (resp .Balance )
183+ suite .Require ().True (ok )
184+
185+ suite .Require ().NoError (err )
186+ expectedBalance := prevBalance .Sub (feesAmt )
187+ suite .Require ().True (expectedBalance .Equal (afterBalance ), "expected different balance after fees deduction" )
182188
183189 // Event to be emitted
184190 expectedEvent := sdktypes .NewEvent (
185191 sdktypes .EventTypeTx ,
186- sdktypes .NewAttribute (sdktypes .AttributeKeyFee , tc . fees .String ()),
192+ sdktypes .NewAttribute (sdktypes .AttributeKeyFee , fees .String ()),
187193 )
188194 // Check events are present
189195 events := unitNetwork .GetContext ().EventManager ().Events ()
190196 suite .Require ().NotZero (len (events ))
191197 suite .Require ().Contains (
192198 events ,
193199 expectedEvent ,
200+ "expected different events after fees deduction" ,
194201 )
195202 }
196203
0 commit comments