github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/dex/keeper/proposal_test.go (about) 1 //go:build ignore 2 3 package keeper 4 5 import ( 6 "testing" 7 "time" 8 9 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 10 "github.com/fibonacci-chain/fbc/x/common" 11 "github.com/fibonacci-chain/fbc/x/dex/types" 12 govTypes "github.com/fibonacci-chain/fbc/x/gov/types" 13 ordertypes "github.com/fibonacci-chain/fbc/x/order/types" 14 "github.com/stretchr/testify/require" 15 ) 16 17 func TestKeeper_GetMinDeposit(t *testing.T) { 18 testInput := createTestInputWithBalance(t, 1, 10000) 19 ctx := testInput.Ctx 20 21 p := types.DefaultParams() 22 p.DelistMinDeposit = sdk.SysCoins{sdk.NewDecCoin(common.NativeToken, sdk.NewInt(12345))} 23 24 testInput.DexKeeper.SetParams(ctx, *p) 25 var contentImpl types.DelistProposal 26 minDeposit := testInput.DexKeeper.GetMinDeposit(ctx, contentImpl) 27 require.True(t, minDeposit.IsEqual(p.DelistMinDeposit)) 28 } 29 30 func TestKeeper_GetMaxDepositPeriod(t *testing.T) { 31 testInput := createTestInputWithBalance(t, 1, 10000) 32 ctx := testInput.Ctx 33 34 p := types.DefaultParams() 35 p.DelistMaxDepositPeriod = time.Second * 123 36 37 testInput.DexKeeper.SetParams(ctx, *p) 38 var contentImpl types.DelistProposal 39 maxDepositPeriod := testInput.DexKeeper.GetMaxDepositPeriod(ctx, contentImpl) 40 require.EqualValues(t, maxDepositPeriod, p.DelistMaxDepositPeriod) 41 } 42 43 func TestKeeper_GetVotingPeriod(t *testing.T) { 44 testInput := createTestInputWithBalance(t, 1, 10000) 45 ctx := testInput.Ctx 46 47 p := types.DefaultParams() 48 p.DelistVotingPeriod = time.Second * 123 49 50 testInput.DexKeeper.SetParams(ctx, *p) 51 var contentImpl types.DelistProposal 52 maxListVotingPeriod := testInput.DexKeeper.GetVotingPeriod(ctx, contentImpl) 53 require.EqualValues(t, maxListVotingPeriod, p.DelistVotingPeriod) 54 } 55 56 func TestKeeper_CheckMsgSubmitProposal(t *testing.T) { 57 testInput := createTestInputWithBalance(t, 1, 10000) 58 ctx := testInput.Ctx 59 60 testInput.DexKeeper.SetParams(ctx, *types.DefaultParams()) 61 tokenPair := GetBuiltInTokenPair() 62 63 content := types.NewDelistProposal("delist xxb_okb", "delist asset from dex", tokenPair.Owner, tokenPair.BaseAssetSymbol, tokenPair.QuoteAssetSymbol) 64 content.Proposer = tokenPair.Owner 65 proposal := govTypes.NewMsgSubmitProposal(content, sdk.SysCoins{sdk.NewDecCoin(common.NativeToken, sdk.NewInt(150))}, tokenPair.Owner) 66 67 // error case : fail to check proposal because product(token pair) not exist 68 err := testInput.DexKeeper.CheckMsgSubmitProposal(ctx, proposal) 69 require.Error(t, err) 70 // SaveTokenPair 71 saveErr := testInput.DexKeeper.SaveTokenPair(ctx, tokenPair) 72 require.Nil(t, saveErr) 73 74 // successful case : check proposal successfully 75 err = testInput.DexKeeper.CheckMsgSubmitProposal(ctx, proposal) 76 require.NoError(t, err) 77 78 // error case: fail to check proposal because the proposer can't afford the initial deposit 79 proposal1 := govTypes.NewMsgSubmitProposal(content, sdk.SysCoins{sdk.NewDecCoin(common.NativeToken, sdk.NewInt(500000))}, tokenPair.Owner) 80 err = testInput.DexKeeper.CheckMsgSubmitProposal(ctx, proposal1) 81 require.Error(t, err) 82 83 // error case: fail to check proposal because initial deposit must not be less than 100.00000000okb 84 proposal2 := govTypes.NewMsgSubmitProposal(content, sdk.SysCoins{sdk.NewDecCoin(common.NativeToken, sdk.NewInt(1))}, tokenPair.Owner) 85 err = testInput.DexKeeper.CheckMsgSubmitProposal(ctx, proposal2) 86 require.Error(t, err) 87 88 // error case: fail to check proposal because the proposal is nil 89 proposal3 := govTypes.NewMsgSubmitProposal(nil, sdk.SysCoins{sdk.NewDecCoin(common.NativeToken, sdk.NewInt(1))}, tokenPair.Owner) 90 err = testInput.DexKeeper.CheckMsgSubmitProposal(ctx, proposal3) 91 require.Error(t, err) 92 93 } 94 95 func TestKeeper_RejectedHandler(t *testing.T) { 96 testInput := createTestInputWithBalance(t, 1, 10000) 97 ctx := testInput.Ctx 98 99 testInput.DexKeeper.SetParams(ctx, *types.DefaultParams()) 100 tokenPair := GetBuiltInTokenPair() 101 102 // SaveTokenPair 103 saveErr := testInput.DexKeeper.SaveTokenPair(ctx, tokenPair) 104 require.Nil(t, saveErr) 105 106 content := types.NewDelistProposal("delist xxb_okb", "delist asset from dex", tokenPair.Owner, tokenPair.BaseAssetSymbol, tokenPair.QuoteAssetSymbol) 107 testInput.DexKeeper.RejectedHandler(ctx, content) 108 109 } 110 111 func TestKeeper_AfterDepositPeriodPassed(t *testing.T) { 112 testInput := createTestInputWithBalance(t, 1, 10000) 113 ctx := testInput.Ctx 114 testInput.DexKeeper.SetParams(ctx, *types.DefaultParams()) 115 tokenPair := GetBuiltInTokenPair() 116 117 // SaveTokenPair 118 saveErr := testInput.DexKeeper.SaveTokenPair(ctx, tokenPair) 119 require.Nil(t, saveErr) 120 121 content := types.NewDelistProposal("delist xxb_okb", "delist asset from dex", tokenPair.Owner, tokenPair.BaseAssetSymbol, tokenPair.QuoteAssetSymbol) 122 content.Proposer = tokenPair.Owner 123 proposal := govTypes.Proposal{Content: content} 124 125 testInput.DexKeeper.AfterDepositPeriodPassed(ctx, proposal) 126 127 } 128 129 func TestKeeper_AfterSubmitProposalHandler(t *testing.T) { 130 testInput := createTestInputWithBalance(t, 1, 10000) 131 ctx := testInput.Ctx 132 content := types.NewDelistProposal("delist xxb_okb", "delist asset from dex", nil, "", "") 133 proposal := govTypes.Proposal{Content: content} 134 135 testInput.DexKeeper.AfterSubmitProposalHandler(ctx, proposal) 136 } 137 138 func TestKeeper_VoteHandler(t *testing.T) { 139 testInput := createTestInputWithBalance(t, 1, 10000) 140 ctx := testInput.Ctx 141 tokenPair := GetBuiltInTokenPair() 142 143 content := types.NewDelistProposal("delist xxb_okb", "delist asset from dex", nil, tokenPair.BaseAssetSymbol, tokenPair.QuoteAssetSymbol) 144 proposal := govTypes.Proposal{Content: content} 145 _, err := testInput.DexKeeper.VoteHandler(ctx, proposal, govTypes.Vote{}) 146 require.Nil(t, err) 147 148 // SaveTokenPair 149 saveErr := testInput.DexKeeper.SaveTokenPair(ctx, tokenPair) 150 require.Nil(t, saveErr) 151 152 lock := ordertypes.ProductLock{} 153 testInput.DexKeeper.LockTokenPair(ctx, tokenPair.Name(), &lock) 154 _, err = testInput.DexKeeper.VoteHandler(ctx, proposal, govTypes.Vote{}) 155 require.NotNil(t, err) 156 157 }