Skip to content

Commit

Permalink
fix review
Browse files Browse the repository at this point in the history
  • Loading branch information
BiancaIalangi committed Apr 12, 2024
1 parent 5bfaca8 commit 1077bbe
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,9 @@ fn tx_expect_error_test() {
.to(SC_PMF)
.typed(pmf_proxy::PanicMessageFeaturesProxy)
.sc_panic()
.with_result(ExpectError("sc_panic! test", 4))
.with_result(ExpectStatus(4))
.with_result(ExpectMessage("sc_panic! test"))
.with_result(ExpectError(4, "sc_panic! test"))
.run();
}

Expand All @@ -86,6 +88,8 @@ fn query_expect_error_test() {
.to(SC_PMF)
.typed(pmf_proxy::PanicMessageFeaturesProxy)
.sc_panic()
.with_result(ExpectError("sc_panic! test", 4))
.with_result(ExpectStatus(4))
.with_result(ExpectMessage("sc_panic! test"))
.with_result(ExpectError(4, "sc_panic! test"))
.run();
}
4 changes: 4 additions & 0 deletions framework/scenario/src/facade/result_handlers.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
mod expect_error;
mod expect_message;
mod expect_status;
mod returns_message;
mod returns_new_bech32_address;
mod returns_new_token_identifier;
mod returns_status;
mod with_tx_raw_response;

pub use expect_error::ExpectError;
pub use expect_message::ExpectMessage;
pub use expect_status::ExpectStatus;
pub use returns_message::ReturnsMessage;
pub use returns_new_bech32_address::ReturnsNewBech32Address;
pub use returns_new_token_identifier::ReturnsNewTokenIdentifier;
Expand Down
8 changes: 4 additions & 4 deletions framework/scenario/src/facade/result_handlers/expect_error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use crate::scenario_model::{BytesValue, CheckValue, TxExpect, TxResponse};
/// Verifies that transaction result error matches the given one.
///
/// Can only be used in tests and interactors, not available in contracts.
pub struct ExpectError<'a>(pub &'a str, pub u64);
pub struct ExpectError<'a>(pub u64, pub &'a str);

impl<'a, Env, Original> RHListItem<Env, Original> for ExpectError<'a>
where
Expand All @@ -20,12 +20,12 @@ where
Env: TxEnv<RHExpect = TxExpect>,
{
fn item_tx_expect(&self, mut prev: TxExpect) -> TxExpect {
prev.status = CheckValue::Equal(self.0.into());
let expect_message_expr = BytesValue {
value: self.0.to_string().into_bytes(),
original: ValueSubTree::Str(format!("str:{}", self.0)),
value: self.1.to_string().into_bytes(),
original: ValueSubTree::Str(format!("str:{}", self.1)),
};
prev.message = CheckValue::Equal(expect_message_expr);
prev.status = CheckValue::Equal(self.1.into());
prev
}

Expand Down
32 changes: 32 additions & 0 deletions framework/scenario/src/facade/result_handlers/expect_message.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
use multiversx_chain_scenario_format::serde_raw::ValueSubTree;
use multiversx_sc::types::{RHListItem, RHListItemExec, TxEnv};

use crate::scenario_model::{BytesValue, CheckValue, TxExpect, TxResponse};

/// Verifies that transaction result message matches the given one.
///
/// Can only be used in tests and interactors, not available in contracts.
pub struct ExpectMessage<'a>(pub &'a str);

impl<'a, Env, Original> RHListItem<Env, Original> for ExpectMessage<'a>
where
Env: TxEnv,
{
type Returns = ();
}

impl<'a, Env, Original> RHListItemExec<TxResponse, Env, Original> for ExpectMessage<'a>
where
Env: TxEnv<RHExpect = TxExpect>,
{
fn item_tx_expect(&self, mut prev: TxExpect) -> TxExpect {
let expect_message_expr = BytesValue {
value: self.0.to_string().into_bytes(),
original: ValueSubTree::Str(format!("str:{}", self.0)),
};
prev.message = CheckValue::Equal(expect_message_expr);
prev
}

fn item_process_result(self, _: &TxResponse) -> Self::Returns {}
}
27 changes: 27 additions & 0 deletions framework/scenario/src/facade/result_handlers/expect_status.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
use multiversx_sc::types::{RHListItem, RHListItemExec, TxEnv};

use crate::scenario_model::{CheckValue, TxExpect, TxResponse};

/// Verifies that transaction result status matches the given one.
///
/// Can only be used in tests and interactors, not available in contracts.
pub struct ExpectStatus(pub u64);

impl<Env, Original> RHListItem<Env, Original> for ExpectStatus
where
Env: TxEnv,
{
type Returns = ();
}

impl<Env, Original> RHListItemExec<TxResponse, Env, Original> for ExpectStatus
where
Env: TxEnv<RHExpect = TxExpect>,
{
fn item_tx_expect(&self, mut prev: TxExpect) -> TxExpect {
prev.status = CheckValue::Equal(self.0.into());
prev
}

fn item_process_result(self, _: &TxResponse) -> Self::Returns {}
}

0 comments on commit 1077bbe

Please sign in to comment.