Skip to content

Commit 2ac9275

Browse files
committed
update tests
1 parent 9df7cb6 commit 2ac9275

File tree

2 files changed

+76
-21
lines changed

2 files changed

+76
-21
lines changed

x/bank/v2/keeper/keeper_test.go

Lines changed: 74 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@ import (
88
"github.com/golang/mock/gomock"
99
"github.com/stretchr/testify/suite"
1010

11+
"cosmossdk.io/core/address"
1112
"cosmossdk.io/core/header"
1213
coretesting "cosmossdk.io/core/testing"
1314
"cosmossdk.io/math"
1415
storetypes "cosmossdk.io/store/types"
15-
banktypes "cosmossdk.io/x/bank/types"
1616
"cosmossdk.io/x/bank/v2/keeper"
1717
banktestutil "cosmossdk.io/x/bank/v2/testutil"
18+
banktypes "cosmossdk.io/x/bank/v2/types"
1819

1920
codectestutil "github.com/cosmos/cosmos-sdk/codec/testutil"
2021
"github.com/cosmos/cosmos-sdk/runtime"
@@ -73,24 +74,20 @@ func (suite *KeeperTestSuite) mockMintCoins(moduleAcc *authtypes.ModuleAccount)
7374

7475
func (suite *KeeperTestSuite) mockSendCoinsFromModuleToAccount(moduleAcc *authtypes.ModuleAccount, _ sdk.AccAddress) {
7576
suite.authKeeper.EXPECT().GetModuleAddress(moduleAcc.Name).Return(moduleAcc.GetAddress())
76-
suite.authKeeper.EXPECT().GetAccount(suite.ctx, moduleAcc.GetAddress()).Return(moduleAcc)
7777
}
7878

7979
func (suite *KeeperTestSuite) mockFundAccount(receiver sdk.AccAddress) {
8080
suite.mockMintCoins(mintAcc)
8181
suite.mockSendCoinsFromModuleToAccount(mintAcc, receiver)
8282
}
8383

84-
func (suite *KeeperTestSuite) mockSendCoins(ctx context.Context, sender sdk.AccountI, _ sdk.AccAddress) {
85-
suite.authKeeper.EXPECT().GetAccount(ctx, sender.GetAddress()).Return(sender)
86-
}
87-
8884
type KeeperTestSuite struct {
8985
suite.Suite
9086

91-
ctx context.Context
92-
bankKeeper keeper.Keeper
93-
authKeeper *banktestutil.MockAccountKeeper
87+
ctx context.Context
88+
bankKeeper keeper.Keeper
89+
authKeeper *banktestutil.MockAccountKeeper
90+
addressCodec address.Codec
9491
}
9592

9693
func TestKeeperTestSuite(t *testing.T) {
@@ -121,26 +118,26 @@ func (suite *KeeperTestSuite) SetupTest() {
121118
encCfg.Codec,
122119
authKeeper,
123120
)
121+
suite.addressCodec = ac
124122
}
125123

126-
func (suite *KeeperTestSuite) TestSendCoins() {
124+
func (suite *KeeperTestSuite) TestSendCoins_Acount_To_Account() {
127125
ctx := suite.ctx
128126
require := suite.Require()
129127
balances := sdk.NewCoins(newFooCoin(100), newBarCoin(50))
130128
sendAmt := sdk.NewCoins(newFooCoin(10), newBarCoin(10))
131129

132-
acc0 := authtypes.NewBaseAccountWithAddress(accAddrs[0])
130+
acc0Str, _ := suite.addressCodec.BytesToString(accAddrs[0])
131+
acc1Str, _ := suite.addressCodec.BytesToString(accAddrs[1])
133132

134133
// Try send with empty balances
135-
suite.authKeeper.EXPECT().GetAccount(suite.ctx, accAddrs[0]).Return(acc0)
136-
err := suite.bankKeeper.SendCoins(ctx, accAddrs[0], accAddrs[1], sendAmt)
134+
err := suite.bankKeeper.SendCoins(ctx, acc0Str, acc1Str, sendAmt)
137135
require.Error(err)
138136

139137
// Set balances for acc0 and then try send to acc1
140138
suite.mockFundAccount(accAddrs[0])
141-
require.NoError(banktestutil.FundAccount(ctx, suite.bankKeeper, accAddrs[0], balances))
142-
suite.mockSendCoins(ctx, acc0, accAddrs[1])
143-
require.NoError(suite.bankKeeper.SendCoins(ctx, accAddrs[0], accAddrs[1], sendAmt))
139+
require.NoError(banktestutil.FundAccount(ctx, suite.bankKeeper, acc0Str, balances))
140+
require.NoError(suite.bankKeeper.SendCoins(ctx, acc0Str, acc1Str, sendAmt))
144141

145142
// Check balances
146143
acc0FooBalance := suite.bankKeeper.GetBalance(ctx, accAddrs[0], fooDenom)
@@ -151,5 +148,66 @@ func (suite *KeeperTestSuite) TestSendCoins() {
151148
require.Equal(acc1FooBalance.Amount, math.NewInt(10))
152149
acc1BarBalance := suite.bankKeeper.GetBalance(ctx, accAddrs[1], barDenom)
153150
require.Equal(acc1BarBalance.Amount, math.NewInt(10))
151+
}
152+
153+
func (suite *KeeperTestSuite) TestSendCoins_Module_To_Account() {
154+
ctx := suite.ctx
155+
require := suite.Require()
156+
balances := sdk.NewCoins(newFooCoin(100), newBarCoin(50))
157+
158+
acc4Str, _ := suite.addressCodec.BytesToString(accAddrs[4])
159+
160+
suite.mockMintCoins(mintAcc)
161+
require.NoError(suite.bankKeeper.MintCoins(ctx, banktypes.MintModuleName, balances))
162+
163+
// Try send from invalid module
164+
suite.authKeeper.EXPECT().GetModuleAddress("invalid").Return(nil)
165+
err := suite.bankKeeper.SendCoins(ctx, "invalid", acc4Str, balances)
166+
require.Error(err)
167+
168+
// Send from mint module
169+
suite.authKeeper.EXPECT().GetModuleAddress(mintAcc.Name).Return(mintAcc.GetAddress())
170+
err = suite.bankKeeper.SendCoins(ctx, banktypes.MintModuleName, acc4Str, balances)
171+
require.NoError(err)
154172

173+
// Check balances
174+
acc4FooBalance := suite.bankKeeper.GetBalance(ctx, accAddrs[4], fooDenom)
175+
require.Equal(acc4FooBalance.Amount, math.NewInt(100))
176+
acc4BarBalance := suite.bankKeeper.GetBalance(ctx, accAddrs[4], barDenom)
177+
require.Equal(acc4BarBalance.Amount, math.NewInt(50))
178+
mintFooBalance := suite.bankKeeper.GetBalance(ctx, mintAcc.GetAddress(), fooDenom)
179+
require.Equal(mintFooBalance.Amount, math.NewInt(0))
180+
mintBarBalance := suite.bankKeeper.GetBalance(ctx, mintAcc.GetAddress(), barDenom)
181+
require.Equal(mintBarBalance.Amount, math.NewInt(0))
182+
}
183+
184+
func (suite *KeeperTestSuite) TestSendCoins_Module_To_Module() {
185+
ctx := suite.ctx
186+
require := suite.Require()
187+
balances := sdk.NewCoins(newFooCoin(100), newBarCoin(50))
188+
189+
suite.mockMintCoins(mintAcc)
190+
require.NoError(suite.bankKeeper.MintCoins(ctx, banktypes.MintModuleName, balances))
191+
192+
// Try send to invalid module
193+
suite.authKeeper.EXPECT().GetModuleAddress(mintAcc.Name).Return(mintAcc.GetAddress())
194+
suite.authKeeper.EXPECT().GetModuleAddress("invalid").Return(nil)
195+
err := suite.bankKeeper.SendCoins(ctx, mintAcc.Name, "invalid", balances)
196+
require.Error(err)
197+
198+
// Send from mint module to burn module
199+
suite.authKeeper.EXPECT().GetModuleAddress(mintAcc.Name).Return(mintAcc.GetAddress())
200+
suite.authKeeper.EXPECT().GetModuleAddress(burnerAcc.Name).Return(burnerAcc.GetAddress())
201+
err = suite.bankKeeper.SendCoins(ctx, mintAcc.Name, burnerAcc.Name, balances)
202+
require.NoError(err)
203+
204+
// Check balances
205+
burnerFooBalance := suite.bankKeeper.GetBalance(ctx, burnerAcc.GetAddress(), fooDenom)
206+
require.Equal(burnerFooBalance.Amount, math.NewInt(100))
207+
burnerBarBalance := suite.bankKeeper.GetBalance(ctx, burnerAcc.GetAddress(), barDenom)
208+
require.Equal(burnerBarBalance.Amount, math.NewInt(50))
209+
mintFooBalance := suite.bankKeeper.GetBalance(ctx, mintAcc.GetAddress(), fooDenom)
210+
require.Equal(mintFooBalance.Amount, math.NewInt(0))
211+
mintBarBalance := suite.bankKeeper.GetBalance(ctx, mintAcc.GetAddress(), barDenom)
212+
require.Equal(mintBarBalance.Amount, math.NewInt(0))
155213
}

x/bank/v2/testutil/helpers.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,11 @@ import (
1212
// FundAccount is a utility function that funds an account by minting and
1313
// sending the coins to the address. This should be used for testing purposes
1414
// only!
15-
//
16-
// TODO: Instead of using the mint module account, which has the
17-
// permission of minting, create a "faucet" account. (@fdymylja)
18-
func FundAccount(ctx context.Context, bankKeeper bankkeeper.Keeper, addr sdk.AccAddress, amounts sdk.Coins) error {
15+
func FundAccount(ctx context.Context, bankKeeper bankkeeper.Keeper, addr string, amounts sdk.Coins) error {
1916
if err := bankKeeper.MintCoins(ctx, types.MintModuleName, amounts); err != nil {
2017
return err
2118
}
2219

23-
return bankKeeper.SendCoinsFromModuleToAccount(ctx, types.MintModuleName, addr, amounts)
20+
return bankKeeper.SendCoins(ctx, types.MintModuleName, addr, amounts)
2421
}
2522

0 commit comments

Comments
 (0)