Skip to content

Commit 207f347

Browse files
authored
Merge pull request #58 from neutron-org/feat/hooks
Feat: refactor hooks
2 parents d567e3c + 4dbd2a2 commit 207f347

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

x/bank/app_test.go

+28
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ var (
6363
priv2 = secp256k1.GenPrivKey()
6464
addr2 = sdk.AccAddress(priv2.PubKey().Address())
6565
addr3 = sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address())
66+
addr4 = sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address())
67+
addr5 = sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address())
6668

6769
coins = sdk.Coins{sdk.NewInt64Coin("foocoin", 10)}
6870
halfCoins = sdk.Coins{sdk.NewInt64Coin("foocoin", 5)}
@@ -572,4 +574,30 @@ func TestHooks(t *testing.T) {
572574
require.NoError(t, err)
573575
require.Equal(t, countTrackBeforeSend, expNextCount)
574576
expNextCount++
577+
578+
err = s.BankKeeper.InputOutputCoins(ctx, types.Input{Address: addr1.String(), Coins: triggerTrackSendAmount}, []types.Output{{Address: addr2.String(), Coins: triggerTrackSendAmount}})
579+
require.NoError(t, err)
580+
require.Equal(t, countTrackBeforeSend, expNextCount)
581+
582+
multiSendTrackInput := types.Input{
583+
Address: addr1.String(),
584+
Coins: triggerTrackSendAmount.MulInt(sdkmath.NewInt(4)),
585+
}
586+
multiSendTrackOutput := []types.Output{{
587+
Address: addr2.String(),
588+
Coins: triggerTrackSendAmount,
589+
}, {
590+
Address: addr3.String(),
591+
Coins: triggerTrackSendAmount,
592+
}, {
593+
Address: addr4.String(),
594+
Coins: triggerTrackSendAmount,
595+
}, {
596+
Address: addr5.String(),
597+
Coins: triggerTrackSendAmount,
598+
}}
599+
err = s.BankKeeper.InputOutputCoins(ctx, multiSendTrackInput, multiSendTrackOutput)
600+
require.NoError(t, err)
601+
expNextCount += 4
602+
require.Equal(t, countTrackBeforeSend, expNextCount)
575603
}

x/bank/keeper/send.go

+13
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,19 @@ func (k BaseSendKeeper) InputOutputCoins(ctx context.Context, input types.Input,
164164
return err
165165
}
166166

167+
for _, out := range outputs {
168+
outAddress, err := k.ak.AddressCodec().StringToBytes(out.Address)
169+
if err != nil {
170+
return err
171+
}
172+
173+
if err := k.BlockBeforeSend(ctx, inAddress, outAddress, out.Coins); err != nil {
174+
return err
175+
}
176+
177+
k.TrackBeforeSend(ctx, inAddress, outAddress, out.Coins)
178+
}
179+
167180
err = k.subUnlockedCoins(ctx, inAddress, input.Coins)
168181
if err != nil {
169182
return err

0 commit comments

Comments
 (0)