Skip to content

Commit 5cf3777

Browse files
authored
Improve orders initialize and display tests (#2617)
1 parent d535c1f commit 5cf3777

File tree

9 files changed

+184
-13
lines changed

9 files changed

+184
-13
lines changed

crates/model/src/orders/limit.rs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -587,12 +587,31 @@ mod tests {
587587
use crate::{
588588
enums::{OrderSide, OrderType, TimeInForce},
589589
instruments::{CurrencyPair, stubs::*},
590-
orders::OrderTestBuilder,
590+
orders::{Order, builder::OrderTestBuilder},
591591
types::{Price, Quantity},
592592
};
593593

594594
#[rstest]
595-
fn test_initialize(audusd_sim: CurrencyPair) {
595+
fn test_initialize(_audusd_sim: CurrencyPair) {
596+
let order = OrderTestBuilder::new(OrderType::Limit)
597+
.instrument_id(_audusd_sim.id)
598+
.side(OrderSide::Buy)
599+
.price(Price::from("0.68000"))
600+
.quantity(Quantity::from(1))
601+
.build();
602+
603+
assert_eq!(order.time_in_force(), TimeInForce::Gtc);
604+
605+
assert_eq!(order.filled_qty(), Quantity::from(0));
606+
assert_eq!(order.leaves_qty(), Quantity::from(1));
607+
608+
assert_eq!(order.display_qty(), None);
609+
assert_eq!(order.trigger_instrument_id(), None);
610+
assert_eq!(order.order_list_id(), None);
611+
}
612+
613+
#[rstest]
614+
fn test_display(audusd_sim: CurrencyPair) {
596615
let order = OrderTestBuilder::new(OrderType::Limit)
597616
.instrument_id(audusd_sim.id)
598617
.side(OrderSide::Buy)

crates/model/src/orders/limit_if_touched.rs

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -590,12 +590,37 @@ mod tests {
590590
use crate::{
591591
enums::{OrderSide, OrderType, TimeInForce, TriggerType},
592592
instruments::{CurrencyPair, stubs::*},
593-
orders::builder::OrderTestBuilder,
593+
orders::{Order, builder::OrderTestBuilder},
594594
types::{Price, Quantity},
595595
};
596596

597597
#[rstest]
598-
fn test_initialize(audusd_sim: CurrencyPair) {
598+
fn test_initialize(_audusd_sim: CurrencyPair) {
599+
let order = OrderTestBuilder::new(OrderType::LimitIfTouched)
600+
.instrument_id(_audusd_sim.id)
601+
.side(OrderSide::Buy)
602+
.price(Price::from("0.68000"))
603+
.trigger_price(Price::from("0.68000"))
604+
.trigger_type(TriggerType::LastPrice)
605+
.quantity(Quantity::from(1))
606+
.build();
607+
608+
assert_eq!(order.trigger_price(), Some(Price::from("0.68000")));
609+
assert_eq!(order.price(), Some(Price::from("0.68000")));
610+
611+
assert_eq!(order.time_in_force(), TimeInForce::Gtc);
612+
613+
assert_eq!(order.is_triggered(), Some(false));
614+
assert_eq!(order.filled_qty(), Quantity::from(0));
615+
assert_eq!(order.leaves_qty(), Quantity::from(1));
616+
617+
assert_eq!(order.display_qty(), None);
618+
assert_eq!(order.trigger_instrument_id(), None);
619+
assert_eq!(order.order_list_id(), None);
620+
}
621+
622+
#[rstest]
623+
fn test_display(audusd_sim: CurrencyPair) {
599624
let order = OrderTestBuilder::new(OrderType::LimitIfTouched)
600625
.instrument_id(audusd_sim.id)
601626
.side(OrderSide::Buy)

crates/model/src/orders/market_if_touched.rs

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -561,12 +561,35 @@ mod tests {
561561
use crate::{
562562
enums::{OrderSide, OrderType, TimeInForce, TriggerType},
563563
instruments::{CurrencyPair, stubs::*},
564-
orders::builder::OrderTestBuilder,
564+
orders::{Order, builder::OrderTestBuilder},
565565
types::{Price, Quantity},
566566
};
567567

568568
#[rstest]
569-
fn test_initialize(audusd_sim: CurrencyPair) {
569+
fn test_initialize(_audusd_sim: CurrencyPair) {
570+
let order = OrderTestBuilder::new(OrderType::MarketIfTouched)
571+
.instrument_id(_audusd_sim.id)
572+
.side(OrderSide::Buy)
573+
.trigger_price(Price::from("0.68000"))
574+
.quantity(Quantity::from(1))
575+
.build();
576+
577+
assert_eq!(order.trigger_price(), Some(Price::from("0.68000")));
578+
assert_eq!(order.price(), None);
579+
580+
assert_eq!(order.time_in_force(), TimeInForce::Gtc);
581+
582+
assert_eq!(order.is_triggered(), Some(false));
583+
assert_eq!(order.filled_qty(), Quantity::from(0));
584+
assert_eq!(order.leaves_qty(), Quantity::from(1));
585+
586+
assert_eq!(order.display_qty(), None);
587+
assert_eq!(order.trigger_instrument_id(), None);
588+
assert_eq!(order.order_list_id(), None);
589+
}
590+
591+
#[rstest]
592+
fn test_display(audusd_sim: CurrencyPair) {
570593
let order = OrderTestBuilder::new(OrderType::MarketIfTouched)
571594
.instrument_id(audusd_sim.id)
572595
.side(OrderSide::Buy)

crates/model/src/orders/market_to_limit.rs

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -565,12 +565,31 @@ mod tests {
565565
use crate::{
566566
enums::{OrderSide, OrderType, TimeInForce},
567567
instruments::{CurrencyPair, stubs::*},
568-
orders::builder::OrderTestBuilder,
569-
types::Quantity,
568+
orders::{Order, builder::OrderTestBuilder},
569+
types::{Price, Quantity},
570570
};
571571

572572
#[rstest]
573-
fn test_initialize(audusd_sim: CurrencyPair) {
573+
fn test_initialize(_audusd_sim: CurrencyPair) {
574+
let order = OrderTestBuilder::new(OrderType::MarketToLimit)
575+
.instrument_id(_audusd_sim.id)
576+
.side(OrderSide::Buy)
577+
.price(Price::from("0.68000"))
578+
.quantity(Quantity::from(1))
579+
.build();
580+
581+
assert_eq!(order.price(), None);
582+
assert_eq!(order.is_triggered(), None);
583+
assert_eq!(order.time_in_force(), TimeInForce::Gtc);
584+
assert_eq!(order.is_triggered(), None);
585+
assert_eq!(order.filled_qty(), Quantity::from(0));
586+
assert_eq!(order.leaves_qty(), Quantity::from(1));
587+
assert_eq!(order.trigger_instrument_id(), None);
588+
assert_eq!(order.order_list_id(), None);
589+
}
590+
591+
#[rstest]
592+
fn test_display(audusd_sim: CurrencyPair) {
574593
let order = OrderTestBuilder::new(OrderType::MarketToLimit)
575594
.instrument_id(audusd_sim.id)
576595
.side(OrderSide::Buy)

crates/model/src/orders/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -833,7 +833,7 @@ mod tests {
833833
};
834834

835835
// TODO: WIP
836-
// fn test_initialize_market_order() {
836+
// fn test_display_market_order() {
837837
// let order = MarketOrder::default();
838838
// assert_eq!(order.events().len(), 1);
839839
// assert_eq!(

crates/model/src/orders/stop_limit.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,20 @@ mod tests {
624624
assert_eq!(order.order_list_id(), None);
625625
}
626626

627+
#[rstest]
628+
fn test_display(audusd_sim: CurrencyPair) {
629+
let order = OrderTestBuilder::new(OrderType::MarketToLimit)
630+
.instrument_id(audusd_sim.id)
631+
.side(OrderSide::Buy)
632+
.quantity(Quantity::from(1))
633+
.build();
634+
635+
assert_eq!(
636+
order.to_string(),
637+
"MarketToLimitOrder(BUY 1 AUD/USD.SIM MARKET_TO_LIMIT GTC, status=INITIALIZED, client_order_id=O-19700101-000000-001-001-1, venue_order_id=None, position_id=None, exec_algorithm_id=None, exec_spawn_id=None, tags=None)"
638+
);
639+
}
640+
627641
#[rstest]
628642
#[should_panic]
629643
fn test_display_qty_gt_quantity_err(audusd_sim: CurrencyPair) {

crates/model/src/orders/stop_market.rs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ mod tests {
582582
use crate::{
583583
enums::{OrderSide, OrderType, TimeInForce, TriggerType},
584584
instruments::{CurrencyPair, stubs::*},
585-
orders::builder::OrderTestBuilder,
585+
orders::{Order, builder::OrderTestBuilder},
586586
types::{Price, Quantity},
587587
};
588588

@@ -596,6 +596,30 @@ mod tests {
596596
.quantity(Quantity::from(1))
597597
.build();
598598

599+
assert_eq!(order.trigger_price(), Some(Price::from("0.68000")));
600+
assert_eq!(order.price(), None);
601+
602+
assert_eq!(order.time_in_force(), TimeInForce::Gtc);
603+
604+
assert_eq!(order.is_triggered(), Some(false));
605+
assert_eq!(order.filled_qty(), Quantity::from(0));
606+
assert_eq!(order.leaves_qty(), Quantity::from(1));
607+
608+
assert_eq!(order.display_qty(), None);
609+
assert_eq!(order.trigger_instrument_id(), None);
610+
assert_eq!(order.order_list_id(), None);
611+
}
612+
613+
#[rstest]
614+
fn test_display(_audusd_sim: CurrencyPair) {
615+
let order = OrderTestBuilder::new(OrderType::StopMarket)
616+
.instrument_id(_audusd_sim.id)
617+
.side(OrderSide::Buy)
618+
.trigger_price(Price::from("0.68000"))
619+
.trigger_type(TriggerType::LastPrice)
620+
.quantity(Quantity::from(1))
621+
.build();
622+
599623
assert_eq!(
600624
order.to_string(),
601625
"StopMarketOrder(BUY 1 AUD/USD.SIM STOP_MARKET GTC, status=INITIALIZED, client_order_id=O-19700101-000000-001-001-1, venue_order_id=None, position_id=None, exec_algorithm_id=None, exec_spawn_id=None, tags=None)"

crates/model/src/orders/trailing_stop_limit.rs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -619,12 +619,35 @@ mod tests {
619619
use crate::{
620620
enums::{OrderSide, OrderType, TimeInForce, TrailingOffsetType, TriggerType},
621621
instruments::{CurrencyPair, stubs::*},
622-
orders::builder::OrderTestBuilder,
622+
orders::{Order, builder::OrderTestBuilder},
623623
types::{Price, Quantity},
624624
};
625625

626626
#[rstest]
627627
fn test_initialize(_audusd_sim: CurrencyPair) {
628+
let order = OrderTestBuilder::new(OrderType::TrailingStopLimit)
629+
.instrument_id(_audusd_sim.id)
630+
.side(OrderSide::Buy)
631+
.price(Price::from("0.67500"))
632+
.limit_offset(dec!(5))
633+
.trigger_price(Price::from("0.68000"))
634+
.trailing_offset(dec!(10))
635+
.quantity(Quantity::from(1))
636+
.build();
637+
638+
assert_eq!(order.trigger_price(), Some(Price::from("0.68000")));
639+
assert_eq!(order.price(), Some(Price::from("0.67500")));
640+
assert_eq!(order.time_in_force(), TimeInForce::Gtc);
641+
assert_eq!(order.is_triggered(), Some(false));
642+
assert_eq!(order.filled_qty(), Quantity::from(0));
643+
assert_eq!(order.leaves_qty(), Quantity::from(1));
644+
assert_eq!(order.display_qty(), None);
645+
assert_eq!(order.trigger_instrument_id(), None);
646+
assert_eq!(order.order_list_id(), None);
647+
}
648+
649+
#[rstest]
650+
fn test_display(_audusd_sim: CurrencyPair) {
628651
let order = OrderTestBuilder::new(OrderType::TrailingStopLimit)
629652
.instrument_id(_audusd_sim.id)
630653
.side(OrderSide::Buy)

crates/model/src/orders/trailing_stop_market.rs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -595,12 +595,36 @@ mod tests {
595595
use crate::{
596596
enums::{OrderSide, OrderType, TimeInForce, TrailingOffsetType, TriggerType},
597597
instruments::{CurrencyPair, stubs::*},
598-
orders::builder::OrderTestBuilder,
598+
orders::{Order, builder::OrderTestBuilder},
599599
types::{Price, Quantity},
600600
};
601601

602602
#[rstest]
603603
fn test_initialize(_audusd_sim: CurrencyPair) {
604+
let order = OrderTestBuilder::new(OrderType::TrailingStopMarket)
605+
.instrument_id(_audusd_sim.id)
606+
.side(OrderSide::Buy)
607+
.trigger_price(Price::from("0.68000"))
608+
.trailing_offset(dec!(10))
609+
.quantity(Quantity::from(1))
610+
.build();
611+
612+
assert_eq!(order.trigger_price(), Some(Price::from("0.68000")));
613+
assert_eq!(order.price(), None);
614+
615+
assert_eq!(order.time_in_force(), TimeInForce::Gtc);
616+
617+
assert_eq!(order.is_triggered(), Some(false));
618+
assert_eq!(order.filled_qty(), Quantity::from(0));
619+
assert_eq!(order.leaves_qty(), Quantity::from(1));
620+
621+
assert_eq!(order.display_qty(), None);
622+
assert_eq!(order.trigger_instrument_id(), None);
623+
assert_eq!(order.order_list_id(), None);
624+
}
625+
626+
#[rstest]
627+
fn test_display(_audusd_sim: CurrencyPair) {
604628
let order = OrderTestBuilder::new(OrderType::TrailingStopMarket)
605629
.instrument_id(_audusd_sim.id)
606630
.side(OrderSide::Buy)

0 commit comments

Comments
 (0)