github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/token/genesis_test.go (about) 1 package token 2 3 import ( 4 "github.com/fibonacci-chain/fbc/x/common" 5 "testing" 6 7 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 8 abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types" 9 "github.com/fibonacci-chain/fbc/x/token/types" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestDefault(t *testing.T) { 14 common.InitConfig() 15 genesisState := defaultGenesisState() 16 err := validateGenesis(genesisState) 17 require.NoError(t, err) 18 defaultGenesisStatefibo() 19 } 20 21 func TestInitGenesis(t *testing.T) { 22 common.InitConfig() 23 mapp, keeper, _ := getMockDexApp(t, 0) 24 mapp.BeginBlock(abci.RequestBeginBlock{Header: abci.Header{Height: 2}}) 25 ctx := mapp.BaseApp.NewContext(false, abci.Header{}) 26 27 //ctx, keeper, _, _ := CreateParam(t, false) 28 keeper.SetParams(ctx, types.DefaultParams()) 29 params := keeper.GetParams(ctx) 30 31 var tokens []types.Token 32 tokens = append(tokens, defaultGenesisStatefibo()) 33 34 var lockedCoins []types.AccCoins 35 decCoin := sdk.NewDecCoinFromDec(tokens[0].Symbol, sdk.NewDec(1234)) 36 lockedCoins = append(lockedCoins, types.AccCoins{ 37 Acc: tokens[0].Owner, 38 Coins: sdk.SysCoins{decCoin}, 39 }) 40 41 var lockedFees []types.AccCoins 42 lockedFees = append(lockedFees, types.AccCoins{ 43 Acc: tokens[0].Owner, 44 Coins: sdk.SysCoins{decCoin}, 45 }) 46 47 initedGenesis := GenesisState{ 48 Params: params, 49 Tokens: tokens, 50 LockedAssets: lockedCoins, 51 LockedFees: lockedFees, 52 } 53 54 coins := sdk.NewDecCoinsFromDec(tokens[0].Symbol, tokens[0].OriginalTotalSupply) 55 56 err := keeper.supplyKeeper.MintCoins(ctx, types.ModuleName, coins) 57 require.NoError(t, err) 58 59 initGenesis(ctx, keeper, initedGenesis) 60 require.Equal(t, initedGenesis.Params, keeper.GetParams(ctx)) 61 require.Equal(t, initedGenesis.Tokens, keeper.GetTokensInfo(ctx)) 62 require.Equal(t, initedGenesis.LockedAssets, keeper.GetAllLockedCoins(ctx)) 63 require.Equal(t, uint64(len(initedGenesis.Tokens)), keeper.getTokenNum(ctx)) 64 require.Equal(t, initedGenesis.Tokens[0], keeper.GetUserTokensInfo(ctx, initedGenesis.Tokens[0].Owner)[0]) 65 var actualLockeedFees []types.AccCoins 66 keeper.IterateLockedFees(ctx, func(acc sdk.AccAddress, coins sdk.SysCoins) bool { 67 actualLockeedFees = append(actualLockeedFees, 68 types.AccCoins{ 69 Acc: acc, 70 Coins: coins, 71 }) 72 return false 73 }) 74 require.Equal(t, initedGenesis.LockedFees, actualLockeedFees) 75 76 exportGenesis := ExportGenesis(ctx, keeper) 77 require.Equal(t, initedGenesis.Params, exportGenesis.Params) 78 require.Equal(t, initedGenesis.Tokens, exportGenesis.Tokens) 79 require.Equal(t, initedGenesis.LockedAssets, exportGenesis.LockedAssets) 80 require.Equal(t, initedGenesis.LockedFees, exportGenesis.LockedFees) 81 82 newMapp, newKeeper, _ := getMockDexApp(t, 0) 83 newMapp.BeginBlock(abci.RequestBeginBlock{Header: abci.Header{Height: 2}}) 84 newCtx := newMapp.BaseApp.NewContext(false, abci.Header{}) 85 86 exportGenesis.Tokens[0].OriginalTotalSupply = sdk.NewDec(66666) 87 decCoin.Denom = tokens[0].Symbol 88 decCoin.Amount = sdk.NewDec(7777) 89 exportGenesis.LockedAssets[0].Coins = sdk.SysCoins{decCoin} 90 exportGenesis.LockedFees[0].Coins = sdk.SysCoins{decCoin} 91 92 coins = sdk.NewCoins(sdk.NewDecCoinFromDec(exportGenesis.Tokens[0].Symbol, exportGenesis.Tokens[0].OriginalTotalSupply)) 93 err = newKeeper.supplyKeeper.MintCoins(newCtx, types.ModuleName, coins) 94 require.NoError(t, err) 95 96 initGenesis(newCtx, newKeeper, exportGenesis) 97 require.Equal(t, exportGenesis.Params, newKeeper.GetParams(newCtx)) 98 require.Equal(t, exportGenesis.Tokens, newKeeper.GetTokensInfo(newCtx)) 99 require.Equal(t, exportGenesis.LockedAssets, newKeeper.GetAllLockedCoins(newCtx)) 100 require.Equal(t, uint64(len(exportGenesis.Tokens)), newKeeper.getTokenNum(newCtx)) 101 require.Equal(t, exportGenesis.Tokens[0], newKeeper.GetUserTokensInfo(newCtx, exportGenesis.Tokens[0].Owner)[0]) 102 actualLockeedFees = []types.AccCoins{} 103 newKeeper.IterateLockedFees(newCtx, func(acc sdk.AccAddress, coins sdk.SysCoins) bool { 104 actualLockeedFees = append(actualLockeedFees, 105 types.AccCoins{ 106 Acc: acc, 107 Coins: coins, 108 }) 109 return false 110 }) 111 require.Equal(t, exportGenesis.LockedFees, actualLockeedFees) 112 113 newExportGenesis := ExportGenesis(newCtx, newKeeper) 114 require.Equal(t, newExportGenesis.Params, newKeeper.GetParams(newCtx)) 115 require.Equal(t, newExportGenesis.Tokens, newKeeper.GetTokensInfo(newCtx)) 116 require.Equal(t, newExportGenesis.LockedAssets, newKeeper.GetAllLockedCoins(newCtx)) 117 actualLockeedFees = []types.AccCoins{} 118 newKeeper.IterateLockedFees(newCtx, func(acc sdk.AccAddress, coins sdk.SysCoins) bool { 119 actualLockeedFees = append(actualLockeedFees, 120 types.AccCoins{ 121 Acc: acc, 122 Coins: coins, 123 }) 124 return false 125 }) 126 require.Equal(t, newExportGenesis.LockedFees, actualLockeedFees) 127 }