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  }