Skip to content

Commit 83ba32b

Browse files
committed
mock SubmitOrders by DoAndReturn
1 parent 16b3096 commit 83ba32b

File tree

1 file changed

+54
-19
lines changed

1 file changed

+54
-19
lines changed

pkg/strategy/grid2/strategy_test.go

+54-19
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,23 @@ func init() {
2222
registerMetrics()
2323
}
2424

25+
func equalOrdersIgnoreClientOrderID(a, b types.SubmitOrder) bool {
26+
return a.Symbol == b.Symbol &&
27+
a.Side == b.Side &&
28+
a.Type == b.Type &&
29+
a.Quantity == b.Quantity &&
30+
a.Price == b.Price &&
31+
a.AveragePrice == b.AveragePrice &&
32+
a.StopPrice == b.StopPrice &&
33+
a.Market == b.Market &&
34+
a.TimeInForce == b.TimeInForce &&
35+
a.GroupID == b.GroupID &&
36+
a.MarginSideEffect == b.MarginSideEffect &&
37+
a.ReduceOnly == b.ReduceOnly &&
38+
a.ClosePosition == b.ClosePosition &&
39+
a.Tag == b.Tag
40+
}
41+
2542
func TestStrategy_checkRequiredInvestmentByQuantity(t *testing.T) {
2643
s := &Strategy{
2744
logger: logrus.NewEntry(logrus.New()),
@@ -605,9 +622,12 @@ func TestStrategy_handleOrderFilled(t *testing.T) {
605622
}
606623

607624
orderExecutor := gridmocks.NewMockOrderExecutor(mockCtrl)
608-
orderExecutor.EXPECT().SubmitOrders(ctx, expectedSubmitOrder).Return([]types.Order{
609-
{SubmitOrder: expectedSubmitOrder},
610-
}, nil)
625+
orderExecutor.EXPECT().SubmitOrders(ctx, gomock.Any()).DoAndReturn(func(ctx context.Context, order types.SubmitOrder) (types.OrderSlice, error) {
626+
assert.True(t, equalOrdersIgnoreClientOrderID(expectedSubmitOrder, order), "%+v is not equal to %+v", order, expectedSubmitOrder)
627+
return []types.Order{
628+
{SubmitOrder: expectedSubmitOrder},
629+
}, nil
630+
})
611631
s.orderExecutor = orderExecutor
612632

613633
s.handleOrderFilled(types.Order{
@@ -670,9 +690,12 @@ func TestStrategy_handleOrderFilled(t *testing.T) {
670690
}
671691

672692
orderExecutor := gridmocks.NewMockOrderExecutor(mockCtrl)
673-
orderExecutor.EXPECT().SubmitOrders(ctx, expectedSubmitOrder).Return([]types.Order{
674-
{SubmitOrder: expectedSubmitOrder},
675-
}, nil)
693+
orderExecutor.EXPECT().SubmitOrders(ctx, gomock.Any()).DoAndReturn(func(ctx context.Context, order types.SubmitOrder) (types.OrderSlice, error) {
694+
assert.True(t, equalOrdersIgnoreClientOrderID(expectedSubmitOrder, order), "%+v is not equal to %+v", order, expectedSubmitOrder)
695+
return []types.Order{
696+
{SubmitOrder: expectedSubmitOrder},
697+
}, nil
698+
})
676699
s.orderExecutor = orderExecutor
677700

678701
s.handleOrderFilled(types.Order{
@@ -755,9 +778,12 @@ func TestStrategy_handleOrderFilled(t *testing.T) {
755778
Market: s.Market,
756779
Tag: orderTag,
757780
}
758-
orderExecutor.EXPECT().SubmitOrders(ctx, expectedSubmitOrder).Return([]types.Order{
759-
{SubmitOrder: expectedSubmitOrder},
760-
}, nil)
781+
orderExecutor.EXPECT().SubmitOrders(ctx, gomock.Any()).DoAndReturn(func(ctx context.Context, order types.SubmitOrder) (types.OrderSlice, error) {
782+
assert.True(t, equalOrdersIgnoreClientOrderID(expectedSubmitOrder, order), "%+v is not equal to %+v", order, expectedSubmitOrder)
783+
return []types.Order{
784+
{SubmitOrder: expectedSubmitOrder},
785+
}, nil
786+
})
761787

762788
expectedSubmitOrder2 := types.SubmitOrder{
763789
Symbol: "BTCUSDT",
@@ -769,9 +795,12 @@ func TestStrategy_handleOrderFilled(t *testing.T) {
769795
Market: s.Market,
770796
Tag: orderTag,
771797
}
772-
orderExecutor.EXPECT().SubmitOrders(ctx, expectedSubmitOrder2).Return([]types.Order{
773-
{SubmitOrder: expectedSubmitOrder2},
774-
}, nil)
798+
orderExecutor.EXPECT().SubmitOrders(ctx, gomock.Any()).DoAndReturn(func(ctx context.Context, order types.SubmitOrder) (types.OrderSlice, error) {
799+
assert.True(t, equalOrdersIgnoreClientOrderID(expectedSubmitOrder2, order), "%+v is not equal to %+v", order, expectedSubmitOrder2)
800+
return []types.Order{
801+
{SubmitOrder: expectedSubmitOrder2},
802+
}, nil
803+
})
775804

776805
s.orderExecutor = orderExecutor
777806

@@ -863,9 +892,12 @@ func TestStrategy_handleOrderFilled(t *testing.T) {
863892
}
864893

865894
orderExecutor := gridmocks.NewMockOrderExecutor(mockCtrl)
866-
orderExecutor.EXPECT().SubmitOrders(ctx, expectedSubmitOrder).Return([]types.Order{
867-
{SubmitOrder: expectedSubmitOrder},
868-
}, nil)
895+
orderExecutor.EXPECT().SubmitOrders(ctx, gomock.Any()).DoAndReturn(func(ctx context.Context, order types.SubmitOrder) (types.OrderSlice, error) {
896+
assert.True(t, equalOrdersIgnoreClientOrderID(expectedSubmitOrder, order), "%+v is not equal to %+v", order, expectedSubmitOrder)
897+
return []types.Order{
898+
{SubmitOrder: expectedSubmitOrder},
899+
}, nil
900+
})
869901

870902
expectedSubmitOrder2 := types.SubmitOrder{
871903
Symbol: "BTCUSDT",
@@ -878,9 +910,12 @@ func TestStrategy_handleOrderFilled(t *testing.T) {
878910
Tag: orderTag,
879911
}
880912

881-
orderExecutor.EXPECT().SubmitOrders(ctx, expectedSubmitOrder2).Return([]types.Order{
882-
{SubmitOrder: expectedSubmitOrder2},
883-
}, nil)
913+
orderExecutor.EXPECT().SubmitOrders(ctx, gomock.Any()).DoAndReturn(func(ctx context.Context, order types.SubmitOrder) (types.OrderSlice, error) {
914+
assert.True(t, equalOrdersIgnoreClientOrderID(expectedSubmitOrder2, order), "%+v is not equal to %+v", order, expectedSubmitOrder2)
915+
return []types.Order{
916+
{SubmitOrder: expectedSubmitOrder2},
917+
}, nil
918+
})
884919
s.orderExecutor = orderExecutor
885920

886921
s.handleOrderFilled(types.Order{
@@ -1142,4 +1177,4 @@ func Test_buildPinOrderMap(t *testing.T) {
11421177
_, err := s.buildPinOrderMap(s.grid, openOrders)
11431178
assert.Error(err)
11441179
})
1145-
}
1180+
}

0 commit comments

Comments
 (0)