github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/dex/proposal_handler_test.go (about) 1 //go:build ignore 2 3 package dex 4 5 import ( 6 "testing" 7 8 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 9 10 abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types" 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 TestProposal_NewProposalHandler(t *testing.T) { 18 19 fakeTokenKeeper := newMockTokenKeeper() 20 fakeSupplyKeeper := newMockSupplyKeeper() 21 22 mApp, mDexKeeper, err := newMockApp(fakeTokenKeeper, fakeSupplyKeeper, 10) 23 require.True(t, err == nil) 24 25 mApp.BeginBlock(abci.RequestBeginBlock{Header: abci.Header{Height: 2}}) 26 ctx := mApp.BaseApp.NewContext(false, abci.Header{}) 27 28 proposalHandler := NewProposalHandler(mDexKeeper.Keeper) 29 30 params := types.DefaultParams() 31 require.NotNil(t, params.String()) 32 mDexKeeper.SetParams(ctx, *params) 33 tokenPair := GetBuiltInTokenPair() 34 35 content := types.NewDelistProposal("delist xxb_okb", "delist asset from dex", 36 tokenPair.Owner, tokenPair.BaseAssetSymbol, tokenPair.QuoteAssetSymbol) 37 content.Proposer = tokenPair.Owner 38 proposal := govTypes.Proposal{Content: content} 39 40 // error case : fail to handle proposal because product(token pair) not exist 41 err = proposalHandler(ctx, &proposal) 42 require.Error(t, err) 43 44 // error case : fail to handle proposal because proposal not exist 45 err = proposalHandler(ctx, &govTypes.Proposal{}) 46 require.Error(t, err) 47 48 // save wrong tokenpair 49 tokenPair.Deposits = sdk.NewDecCoin("xxb", sdk.NewInt(50)) 50 saveErr := mApp.dexKeeper.SaveTokenPair(ctx, tokenPair) 51 require.Nil(t, saveErr) 52 53 // error case : fail to withdraw deposits because deposits is not fibo 54 err = proposalHandler(ctx, &proposal) 55 require.Error(t, err) 56 57 // save right tokenpair 58 tokenPair.Deposits = sdk.NewDecCoin(sdk.DefaultBondDenom, sdk.NewInt(50)) 59 saveErr = mApp.dexKeeper.SaveTokenPair(ctx, tokenPair) 60 require.Nil(t, saveErr) 61 62 // successful case : withdraw successfully 63 err = proposalHandler(ctx, &proposal) 64 require.Nil(t, err) 65 66 lock := ordertypes.ProductLock{} 67 mDexKeeper.LockTokenPair(ctx, ordertypes.TestTokenPair, &lock) 68 err = proposalHandler(ctx, &proposal) 69 require.Error(t, err) 70 71 }