github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/dex/genesis_test.go (about) 1 //go:build ignore 2 3 package dex 4 5 import ( 6 "fmt" 7 "testing" 8 "time" 9 10 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 11 "github.com/fibonacci-chain/fbc/x/dex/types" 12 ordertypes "github.com/fibonacci-chain/fbc/x/order/types" 13 "github.com/stretchr/testify/require" 14 ) 15 16 func TestInitGenesis(t *testing.T) { 17 _, _, _, keeper, ctx := getMockTestCaseEvn(t) 18 19 keeper.SetParams(ctx, *types.DefaultParams()) 20 params := keeper.GetParams(ctx) 21 22 var tokenPairs []*types.TokenPair 23 tokenPair := GetBuiltInTokenPair() 24 tokenPairs = append(tokenPairs, tokenPair) 25 26 var operators DEXOperators 27 operators = append(operators, types.DEXOperator{ 28 Address: tokenPair.Owner, 29 HandlingFeeAddress: tokenPair.Owner, 30 Website: "http://www.fbchain.org/operator.json", 31 InitHeight: 100, 32 }) 33 34 var withdrawInfos []WithdrawInfo 35 now := time.Now() 36 withdrawInfos = append(withdrawInfos, types.WithdrawInfo{ 37 Owner: tokenPair.Owner, 38 Deposits: sdk.NewInt64DecCoin(tokenPair.BaseAssetSymbol, 1234), 39 CompleteTime: now.Add(types.DefaultWithdrawPeriod), 40 }) 41 42 lock := &ordertypes.ProductLock{ 43 BlockHeight: 666, 44 Price: sdk.NewDec(77), 45 Quantity: sdk.NewDec(88), 46 BuyExecuted: sdk.NewDec(99), 47 SellExecuted: sdk.NewDec(66), 48 } 49 lockMap := ordertypes.NewProductLockMap() 50 product := fmt.Sprintf("%s_%s", tokenPair.BaseAssetSymbol, tokenPair.QuoteAssetSymbol) 51 lockMap.Data[product] = lock 52 53 initGenesis := GenesisState{ 54 Params: params, 55 TokenPairs: tokenPairs, 56 WithdrawInfos: withdrawInfos, 57 ProductLocks: *lockMap, 58 Operators: operators, 59 MaxTokenPairID: 10, 60 } 61 require.NoError(t, ValidateGenesis(initGenesis)) 62 InitGenesis(ctx, keeper, initGenesis) 63 require.Equal(t, initGenesis.Params, keeper.GetParams(ctx)) 64 require.Equal(t, initGenesis.TokenPairs, keeper.GetTokenPairs(ctx)) 65 require.Equal(t, initGenesis.MaxTokenPairID, keeper.GetMaxTokenPairID(ctx)) 66 require.Equal(t, initGenesis.ProductLocks, *keeper.LoadProductLocks(ctx)) 67 require.Equal(t, initGenesis.TokenPairs, keeper.GetUserTokenPairs(ctx, initGenesis.TokenPairs[0].Owner)) 68 69 var exportWithdrawInfos WithdrawInfos 70 keeper.IterateWithdrawInfo(ctx, func(_ int64, withdrawInfo WithdrawInfo) (stop bool) { 71 exportWithdrawInfos = append(exportWithdrawInfos, withdrawInfo) 72 return false 73 }) 74 require.True(t, initGenesis.WithdrawInfos.Equal(exportWithdrawInfos)) 75 76 var addr sdk.AccAddress 77 keeper.IterateWithdrawAddress(ctx, initGenesis.WithdrawInfos[0].CompleteTime, 78 func(_ int64, key []byte) (stop bool) { 79 _, addr = types.SplitWithdrawTimeKey(key) 80 return false 81 }) 82 require.Equal(t, initGenesis.WithdrawInfos[0].Owner, addr) 83 84 exportGenesis := ExportGenesis(ctx, keeper) 85 require.Equal(t, initGenesis.Params, exportGenesis.Params) 86 require.Equal(t, initGenesis.TokenPairs, exportGenesis.TokenPairs) 87 require.True(t, initGenesis.WithdrawInfos.Equal(exportGenesis.WithdrawInfos)) 88 require.Equal(t, initGenesis.ProductLocks, exportGenesis.ProductLocks) 89 require.Equal(t, initGenesis.MaxTokenPairID, exportGenesis.MaxTokenPairID) 90 91 exportGenesis.Params.WithdrawPeriod = 55555 92 exportGenesis.TokenPairs[0].ID = 66666 93 exportGenesis.WithdrawInfos[0].CompleteTime = now.Add(2 * types.DefaultWithdrawPeriod) 94 exportGenesis.ProductLocks.Data[product].BlockHeight = 123 95 exportGenesis.MaxTokenPairID = 100 96 97 _, _, _, newKeeper, newCtx := getMockTestCaseEvn(t) 98 require.NoError(t, ValidateGenesis(exportGenesis)) 99 InitGenesis(newCtx, newKeeper, exportGenesis) 100 require.Equal(t, exportGenesis.Params, newKeeper.GetParams(newCtx)) 101 require.Equal(t, exportGenesis.TokenPairs, newKeeper.GetTokenPairs(newCtx)) 102 require.Equal(t, exportGenesis.TokenPairs[0].ID, newKeeper.GetMaxTokenPairID(newCtx)) 103 require.Equal(t, exportGenesis.ProductLocks, *newKeeper.LoadProductLocks(newCtx)) 104 require.Equal(t, exportGenesis.TokenPairs, newKeeper.GetUserTokenPairs(newCtx, exportGenesis.TokenPairs[0].Owner)) 105 106 var exportWithdrawInfos1 WithdrawInfos 107 newKeeper.IterateWithdrawInfo(newCtx, func(_ int64, withdrawInfo WithdrawInfo) (stop bool) { 108 exportWithdrawInfos1 = append(exportWithdrawInfos1, withdrawInfo) 109 return false 110 }) 111 require.True(t, exportGenesis.WithdrawInfos.Equal(exportWithdrawInfos1)) 112 113 var addr1 sdk.AccAddress 114 newKeeper.IterateWithdrawAddress(newCtx, exportGenesis.WithdrawInfos[0].CompleteTime, 115 func(_ int64, key []byte) (stop bool) { 116 _, addr1 = types.SplitWithdrawTimeKey(key) 117 return false 118 }) 119 require.Equal(t, exportGenesis.WithdrawInfos[0].Owner, addr1) 120 121 newExportGenesis := ExportGenesis(newCtx, newKeeper) 122 require.Equal(t, newExportGenesis.Params, newKeeper.GetParams(newCtx)) 123 require.Equal(t, newExportGenesis.TokenPairs, newKeeper.GetTokenPairs(newCtx)) 124 require.Equal(t, newExportGenesis.MaxTokenPairID, newKeeper.GetMaxTokenPairID(newCtx)) 125 var newExportWithdrawInfos WithdrawInfos 126 newKeeper.IterateWithdrawInfo(newCtx, func(_ int64, withdrawInfo WithdrawInfo) (stop bool) { 127 newExportWithdrawInfos = append(newExportWithdrawInfos, withdrawInfo) 128 return false 129 }) 130 require.True(t, newExportGenesis.WithdrawInfos.Equal(newExportWithdrawInfos)) 131 require.Equal(t, newExportGenesis.ProductLocks, *newKeeper.LoadProductLocks(newCtx)) 132 }