github.com/gravity-devs/liquidity@v1.5.3/x/liquidity/keeper/common_test.go (about)

     1  package keeper_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	sdk "github.com/cosmos/cosmos-sdk/types"
     7  
     8  	"github.com/gravity-devs/liquidity/app"
     9  	"github.com/gravity-devs/liquidity/x/liquidity"
    10  	"github.com/gravity-devs/liquidity/x/liquidity/types"
    11  )
    12  
    13  // createTestInput Returns a simapp with custom LiquidityKeeper
    14  // to avoid messing with the hooks.
    15  func createTestInput() (*app.LiquidityApp, sdk.Context) {
    16  	return app.CreateTestInput()
    17  }
    18  
    19  func createLiquidity(t *testing.T, ctx sdk.Context, simapp *app.LiquidityApp) (
    20  	[]sdk.AccAddress, []types.Pool, []types.PoolBatch,
    21  	[]types.DepositMsgState, []types.WithdrawMsgState) {
    22  	simapp.LiquidityKeeper.SetParams(ctx, types.DefaultParams())
    23  
    24  	// define test denom X, Y for Liquidity Pool
    25  	denomX, denomY := types.AlphabeticalDenomPair(DenomX, DenomY)
    26  	denomA, denomB := types.AlphabeticalDenomPair("denomA", "denomB")
    27  
    28  	X := sdk.NewInt(1000000000)
    29  	Y := sdk.NewInt(500000000)
    30  	A := sdk.NewInt(500000000)
    31  	B := sdk.NewInt(1000000000)
    32  
    33  	addrs := app.AddTestAddrsIncremental(simapp, ctx, 20, sdk.NewInt(10000))
    34  	poolID := app.TestCreatePool(t, simapp, ctx, X, Y, denomX, denomY, addrs[0])
    35  	app.TestCreatePool(t, simapp, ctx, A, B, denomA, denomB, addrs[1])
    36  
    37  	app.TestDepositPool(t, simapp, ctx, X.QuoRaw(10), Y, addrs[1:2], poolID, false)
    38  	app.TestDepositPool(t, simapp, ctx, X.QuoRaw(10), Y, addrs[1:2], poolID, false)
    39  	app.TestDepositPool(t, simapp, ctx, X.QuoRaw(10), Y, addrs[1:2], poolID, false)
    40  	app.TestDepositPool(t, simapp, ctx, X, Y.QuoRaw(10), addrs[2:3], poolID, false)
    41  	app.TestDepositPool(t, simapp, ctx, X, Y.QuoRaw(10), addrs[2:3], poolID, false)
    42  	app.TestDepositPool(t, simapp, ctx, X, Y.QuoRaw(10), addrs[2:3], poolID, false)
    43  
    44  	liquidity.EndBlocker(ctx, simapp.LiquidityKeeper)
    45  
    46  	price, _ := sdk.NewDecFromStr("1.1")
    47  	priceY, _ := sdk.NewDecFromStr("1.2")
    48  	xOfferCoins := []sdk.Coin{sdk.NewCoin(denomX, sdk.NewInt(10000))}
    49  	yOfferCoins := []sdk.Coin{sdk.NewCoin(denomY, sdk.NewInt(5000))}
    50  	xOrderPrices := []sdk.Dec{price}
    51  	yOrderPrices := []sdk.Dec{priceY}
    52  	xOrderAddrs := addrs[1:2]
    53  	yOrderAddrs := addrs[2:3]
    54  
    55  	// next block
    56  	ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1)
    57  	liquidity.BeginBlocker(ctx, simapp.LiquidityKeeper)
    58  
    59  	app.TestDepositPool(t, simapp, ctx, X.QuoRaw(10), Y, addrs[1:2], poolID, false)
    60  	app.TestDepositPool(t, simapp, ctx, X.QuoRaw(10), Y, addrs[1:2], poolID, false)
    61  	app.TestDepositPool(t, simapp, ctx, X, Y.QuoRaw(10), addrs[2:3], poolID, false)
    62  	app.TestDepositPool(t, simapp, ctx, X, Y.QuoRaw(10), addrs[2:3], poolID, false)
    63  	app.TestWithdrawPool(t, simapp, ctx, sdk.NewInt(50), addrs[1:2], poolID, false)
    64  	app.TestWithdrawPool(t, simapp, ctx, sdk.NewInt(500), addrs[1:2], poolID, false)
    65  	app.TestWithdrawPool(t, simapp, ctx, sdk.NewInt(50), addrs[2:3], poolID, false)
    66  	app.TestWithdrawPool(t, simapp, ctx, sdk.NewInt(500), addrs[2:3], poolID, false)
    67  
    68  	app.TestSwapPool(t, simapp, ctx, xOfferCoins, xOrderPrices, xOrderAddrs, poolID, false)
    69  	app.TestSwapPool(t, simapp, ctx, xOfferCoins, xOrderPrices, xOrderAddrs, poolID, false)
    70  	app.TestSwapPool(t, simapp, ctx, xOfferCoins, xOrderPrices, xOrderAddrs, poolID, false)
    71  	app.TestSwapPool(t, simapp, ctx, yOfferCoins, yOrderPrices, yOrderAddrs, poolID, false)
    72  
    73  	pools := simapp.LiquidityKeeper.GetAllPools(ctx)
    74  	batches := simapp.LiquidityKeeper.GetAllPoolBatches(ctx)
    75  	depositMsgs := simapp.LiquidityKeeper.GetAllPoolBatchDepositMsgs(ctx, batches[0])
    76  	withdrawMsgs := simapp.LiquidityKeeper.GetAllPoolBatchWithdrawMsgStates(ctx, batches[0])
    77  	return addrs, pools, batches, depositMsgs, withdrawMsgs
    78  }
    79  
    80  func createTestPool(X, Y sdk.Coin) (*app.LiquidityApp, sdk.Context, types.Pool, sdk.AccAddress, error) {
    81  	simapp, ctx := createTestInput()
    82  	params := simapp.LiquidityKeeper.GetParams(ctx)
    83  
    84  	depositCoins := sdk.NewCoins(X, Y)
    85  	creatorAddr := app.AddRandomTestAddr(simapp, ctx, depositCoins.Add(params.PoolCreationFee...))
    86  
    87  	pool, err := simapp.LiquidityKeeper.CreatePool(ctx, types.NewMsgCreatePool(creatorAddr, types.DefaultPoolTypeID, depositCoins))
    88  	if err != nil {
    89  		return nil, sdk.Context{}, types.Pool{}, sdk.AccAddress{}, err
    90  	}
    91  
    92  	return simapp, ctx, pool, creatorAddr, nil
    93  }