From fabdc55c9cd8d271f2ededc8d06ad4184650cca6 Mon Sep 17 00:00:00 2001 From: Mariusz Klochowicz Date: Wed, 27 Oct 2021 16:42:06 +1030 Subject: [PATCH] Compare contents of whole Order instead of just Id This test uncovers the fact that liquidation price of the current Order on the maker side is stored with a higher precision than on the taker side --- daemon/tests/happy_path.rs | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/daemon/tests/happy_path.rs b/daemon/tests/happy_path.rs index 483c222..789f86e 100644 --- a/daemon/tests/happy_path.rs +++ b/daemon/tests/happy_path.rs @@ -4,7 +4,7 @@ use bdk::bitcoin::{ecdsa, Txid}; use cfd_protocol::secp256k1_zkp::{schnorrsig, Secp256k1}; use cfd_protocol::PartyParams; use daemon::maker_cfd::CfdAction; -use daemon::model::cfd::{Cfd, CfdState, Order}; +use daemon::model::cfd::{Cfd, CfdState, Order, Origin}; use daemon::model::{Price, Timestamp, Usd, WalletInfo}; use daemon::tokio_ext::FutureExt; use daemon::{ @@ -40,8 +40,7 @@ async fn taker_receives_order_from_maker_on_publication() { next_some(&mut taker.order_feed) ); - // TODO: Add assertion function so we can assert on the other order values - assert_eq!(published.id, received.id); + assert_is_same_order(&published, &received); } #[tokio::test] @@ -59,8 +58,8 @@ async fn taker_takes_order_and_maker_rejects() { taker.take_order(received.clone(), Usd::new(dec!(10))); let (taker_cfd, maker_cfd) = next_cfd(&mut taker.cfd_feed, &mut maker.cfd_feed).await; - assert_eq!(taker_cfd.order.id, received.id); - assert_eq!(maker_cfd.order.id, received.id); + assert_is_same_order(&taker_cfd.order, &received); + assert_is_same_order(&maker_cfd.order, &received); assert!(matches!( taker_cfd.state, CfdState::OutgoingOrderRequest { .. } @@ -74,12 +73,24 @@ async fn taker_takes_order_and_maker_rejects() { let (taker_cfd, maker_cfd) = next_cfd(&mut taker.cfd_feed, &mut maker.cfd_feed).await; // TODO: More elaborate Cfd assertions - assert_eq!(taker_cfd.order.id, received.id); - assert_eq!(maker_cfd.order.id, received.id); + assert_is_same_order(&taker_cfd.order, &received); + assert_is_same_order(&maker_cfd.order, &received); assert!(matches!(taker_cfd.state, CfdState::Rejected { .. })); assert!(matches!(maker_cfd.state, CfdState::Rejected { .. })); } +/// The order cannot be directly compared in tests as the origin is different, +/// therefore wrap the assertion macro in a code that unifies the 'Origin' +fn assert_is_same_order(a: &Order, b: &Order) { + // Assume the same origin + let mut a = a.clone(); + let mut b = b.clone(); + a.origin = Origin::Ours; + b.origin = Origin::Ours; + + assert_eq!(a, b); +} + fn new_dummy_order() -> maker_cfd::NewOrder { maker_cfd::NewOrder { price: Price::new(dec!(50_000)).expect("unexpected failure"),