github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/order/match/periodicauction/impl_test.go (about)

     1  //go:build ignore
     2  
     3  package periodicauction
     4  
     5  import (
     6  	"testing"
     7  
     8  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     9  	"github.com/fibonacci-chain/fbc/x/dex"
    10  	orderkeeper "github.com/fibonacci-chain/fbc/x/order/keeper"
    11  	"github.com/fibonacci-chain/fbc/x/order/types"
    12  	"github.com/stretchr/testify/require"
    13  )
    14  
    15  func TestPaEngine_Run(t *testing.T) {
    16  	testInput := orderkeeper.CreateTestInput(t)
    17  	keeper := testInput.OrderKeeper
    18  	ctx := testInput.Ctx
    19  	tokenPair := dex.GetBuiltInTokenPair()
    20  	err := testInput.DexKeeper.SaveTokenPair(ctx, tokenPair)
    21  	require.Nil(t, err)
    22  
    23  	var startHeight int64 = 10
    24  
    25  	// mock orders
    26  	orders := []*types.Order{
    27  		types.MockOrder(types.FormatOrderID(startHeight, 1), types.TestTokenPair, types.BuyOrder, "10.0", "1.0"),
    28  		types.MockOrder(types.FormatOrderID(startHeight, 2), types.TestTokenPair, types.SellOrder, "10.0", "0.5"),
    29  		types.MockOrder(types.FormatOrderID(startHeight, 3), types.TestTokenPair, types.SellOrder, "10.0", "2.5"),
    30  	}
    31  	orders[0].Sender = testInput.TestAddrs[0]
    32  	orders[1].Sender = testInput.TestAddrs[1]
    33  	orders[2].Sender = testInput.TestAddrs[1]
    34  	for i := 0; i < 3; i++ {
    35  		err := keeper.PlaceOrder(ctx, orders[i])
    36  		require.NoError(t, err)
    37  	}
    38  
    39  	engine := &PaEngine{}
    40  	engine.Run(ctx, keeper)
    41  
    42  	// check order status
    43  	order0 := keeper.GetOrder(ctx, orders[0].OrderID)
    44  	order1 := keeper.GetOrder(ctx, orders[1].OrderID)
    45  	order2 := keeper.GetOrder(ctx, orders[2].OrderID)
    46  	require.EqualValues(t, types.OrderStatusFilled, order0.Status)
    47  	require.EqualValues(t, types.OrderStatusFilled, order1.Status)
    48  	require.EqualValues(t, types.OrderStatusOpen, order2.Status)
    49  	require.EqualValues(t, sdk.MustNewDecFromStr("2"), order2.RemainQuantity)
    50  }