Browse Source

Merge #523

523: Use `send` instead of `do_send` in actor tests r=klochowicz a=klochowicz

`do_send` did not inspect any errors, while Cfd actors support returning errors
if an action performed on them failed.

This matches the code used in production in HTTP requests.

Slight changes in the test were required as the test failed
otherwise (particularly, on unhandled monitoring of oracle attestation).

Co-authored-by: Mariusz Klochowicz <mariusz@klochowicz.com>
shutdown-taker-if-no-maker-present
bors[bot] 3 years ago
committed by GitHub
parent
commit
57282b0707
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 10
      daemon/tests/happy_path.rs
  2. 8
      daemon/tests/harness/mocks/mod.rs
  3. 18
      daemon/tests/harness/mod.rs

10
daemon/tests/happy_path.rs

@ -35,7 +35,7 @@ async fn taker_takes_order_and_maker_rejects() {
let (_, received) = next_order(&mut maker.order_feed, &mut taker.order_feed).await;
taker.take_order(received.clone(), Usd::new(dec!(10)));
taker.take_order(received.clone(), Usd::new(dec!(10))).await;
let (taker_cfd, maker_cfd) = next_cfd(&mut taker.cfd_feed, &mut maker.cfd_feed).await;
assert_is_same_order(&taker_cfd.order, &received);
@ -49,7 +49,7 @@ async fn taker_takes_order_and_maker_rejects() {
CfdState::IncomingOrderRequest { .. }
));
maker.reject_take_request(received.clone());
maker.reject_take_request(received.clone()).await;
let (taker_cfd, maker_cfd) = next_cfd(&mut taker.cfd_feed, &mut maker.cfd_feed).await;
// TODO: More elaborate Cfd assertions
@ -70,17 +70,19 @@ async fn taker_takes_order_and_maker_accepts_and_contract_setup() {
let (_, received) = next_order(&mut maker.order_feed, &mut taker.order_feed).await;
taker.take_order(received.clone(), Usd::new(dec!(5)));
taker.take_order(received.clone(), Usd::new(dec!(5))).await;
let (_, _) = next_cfd(&mut taker.cfd_feed, &mut maker.cfd_feed).await;
maker.mocks.mock_oracle_annoucement().await;
taker.mocks.mock_oracle_annoucement().await;
maker.accept_take_request(received.clone());
maker.mocks.mock_monitor_oracle_attestation().await;
maker.mocks.mock_party_params().await;
taker.mocks.mock_party_params().await;
maker.accept_take_request(received.clone()).await;
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);

8
daemon/tests/harness/mocks/mod.rs

@ -24,7 +24,6 @@ impl Mocks {
self.wallet.lock().await
}
#[allow(dead_code)] // will be used soon
pub async fn monitor(&mut self) -> MutexGuard<'_, monitor::MockMonitor> {
self.monitor.lock().await
}
@ -64,6 +63,13 @@ impl Mocks {
.expect_build_party_params()
.returning(|msg| wallet::build_party_params(msg));
}
pub async fn mock_monitor_oracle_attestation(&mut self) {
self.monitor()
.await
.expect_oracle_attestation()
.return_const(());
}
}
impl Default for Mocks {

18
daemon/tests/harness/mod.rs

@ -123,15 +123,19 @@ impl Maker {
.unwrap();
}
pub fn reject_take_request(&self, order: Order) {
pub async fn reject_take_request(&self, order: Order) {
self.cfd_actor_addr
.do_send(CfdAction::RejectOrder { order_id: order.id })
.send(CfdAction::RejectOrder { order_id: order.id })
.await
.unwrap()
.unwrap();
}
pub fn accept_take_request(&self, order: Order) {
pub async fn accept_take_request(&self, order: Order) {
self.cfd_actor_addr
.do_send(CfdAction::AcceptOrder { order_id: order.id })
.send(CfdAction::AcceptOrder { order_id: order.id })
.await
.unwrap()
.unwrap();
}
}
@ -193,12 +197,14 @@ impl Taker {
}
}
pub fn take_order(&self, order: Order, quantity: Usd) {
pub async fn take_order(&self, order: Order, quantity: Usd) {
self.cfd_actor_addr
.do_send(taker_cfd::TakeOffer {
.send(taker_cfd::TakeOffer {
order_id: order.id,
quantity,
})
.await
.unwrap()
.unwrap();
}
}

Loading…
Cancel
Save