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  }