github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/token/test_common.go (about) 1 package token 2 3 import ( 4 "testing" 5 6 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec" 7 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/store" 8 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/store/mpt" 9 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 10 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth" 11 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/bank" 12 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/supply" 13 abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types" 14 "github.com/fibonacci-chain/fbc/libs/tendermint/libs/log" 15 dbm "github.com/fibonacci-chain/fbc/libs/tm-db" 16 "github.com/fibonacci-chain/fbc/x/params" 17 "github.com/fibonacci-chain/fbc/x/token/types" 18 "github.com/stretchr/testify/require" 19 ) 20 21 // CreateParam create fbchainparm for test 22 func CreateParam(t *testing.T, isCheckTx bool) (sdk.Context, Keeper, *sdk.KVStoreKey, []byte) { 23 keyAcc := sdk.NewKVStoreKey(auth.StoreKey) 24 keyMpt := sdk.NewKVStoreKey(mpt.StoreKey) 25 keyParams := sdk.NewKVStoreKey(params.StoreKey) 26 tkeyParams := sdk.NewTransientStoreKey(params.TStoreKey) 27 keySupply := sdk.NewKVStoreKey(supply.StoreKey) 28 29 keyToken := sdk.NewKVStoreKey("token") 30 keyLock := sdk.NewKVStoreKey("lock") 31 32 db := dbm.NewMemDB() 33 ms := store.NewCommitMultiStore(db) 34 ms.MountStoreWithDB(keyAcc, sdk.StoreTypeIAVL, db) 35 ms.MountStoreWithDB(keyMpt, sdk.StoreTypeMPT, db) 36 ms.MountStoreWithDB(keyParams, sdk.StoreTypeIAVL, db) 37 ms.MountStoreWithDB(tkeyParams, sdk.StoreTypeTransient, db) 38 ms.MountStoreWithDB(keyToken, sdk.StoreTypeIAVL, db) 39 ms.MountStoreWithDB(keyLock, sdk.StoreTypeIAVL, db) 40 ms.MountStoreWithDB(keySupply, sdk.StoreTypeIAVL, db) 41 42 err := ms.LoadLatestVersion() 43 require.Nil(t, err) 44 45 ctx := sdk.NewContext(ms, abci.Header{ChainID: "foochainid"}, isCheckTx, nil) 46 47 cdc := codec.New() 48 RegisterCodec(cdc) 49 codec.RegisterCrypto(cdc) 50 51 pk := params.NewKeeper(cdc, keyParams, tkeyParams, log.NewNopLogger()) 52 53 accountKeeper := auth.NewAccountKeeper( 54 cdc, // amino codec 55 keyAcc, // target store 56 keyMpt, 57 pk.Subspace(auth.DefaultParamspace), 58 auth.ProtoBaseAccount, // prototype 59 ) 60 blacklistedAddrs := make(map[string]bool) 61 62 bk := bank.NewBaseKeeper( 63 accountKeeper, 64 pk.Subspace(bank.DefaultParamspace), 65 blacklistedAddrs, 66 ) 67 maccPerms := map[string][]string{ 68 auth.FeeCollectorName: nil, 69 types.ModuleName: nil, 70 } 71 supplyKeeper := supply.NewKeeper(cdc, keySupply, accountKeeper, bank.NewBankKeeperAdapter(bk), maccPerms) 72 tk := NewKeeper(bk, 73 pk.Subspace(DefaultParamspace), 74 auth.FeeCollectorName, 75 supplyKeeper, 76 keyToken, 77 keyLock, 78 cdc, 79 true, accountKeeper) 80 tk.SetParams(ctx, types.DefaultParams()) 81 82 return ctx, tk, keyParams, []byte("testToken") 83 } 84 85 func NewTestToken(t *testing.T, ctx sdk.Context, keeper Keeper, bankKeeper bank.Keeper, tokenName string, addrList []sdk.AccAddress) { 86 require.NotEqual(t, 0, len(addrList)) 87 tokenObject := InitTestTokenWithOwner(tokenName, addrList[0]) 88 keeper.NewToken(ctx, tokenObject) 89 90 initCoins := sdk.NewCoins(sdk.NewCoin(tokenName, sdk.NewInt(100000))) 91 for _, addr := range addrList { 92 _, err := bankKeeper.AddCoins(ctx, addr, initCoins) 93 if err != nil { 94 panic(err) 95 } 96 } 97 } 98 99 func InitTestToken(name string) types.Token { 100 return InitTestTokenWithOwner(name, supply.NewModuleAddress(ModuleName)) 101 } 102 103 func InitTestTokenWithOwner(name string, owner sdk.AccAddress) types.Token { 104 return types.Token{ 105 Description: name, 106 Symbol: name, 107 OriginalSymbol: name, 108 WholeName: name, 109 OriginalTotalSupply: sdk.NewDec(0), 110 Owner: owner, 111 Type: 1, 112 Mintable: true, 113 } 114 }