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 }