//! See [`MuralPayMock`]. use std::fmt::{self, Debug}; use crate::{ Account, AccountId, BankDetailsResponse, Counterparty, CounterpartyId, CreateCounterparty, CreatePayout, FiatAndRailCode, FiatFeeRequest, FiatPayoutFee, MuralError, Organization, OrganizationId, PayoutMethod, PayoutMethodDetails, PayoutMethodId, PayoutRequest, PayoutRequestId, PayoutStatusFilter, SearchParams, SearchRequest, SearchResponse, TokenFeeRequest, TokenPayoutFee, TransferError, UpdateCounterparty, }; macro_rules! impl_mock { ( $(fn $fn:ident ( $( $ty:ty ),* ) -> $ret:ty);* $(;)? ) => { /// Mock data returned by [`crate::MuralPay`]. pub struct MuralPayMock { $( pub $fn: Box $ret + Send + Sync>, )* } impl Default for MuralPayMock { fn default() -> Self { Self { $( $fn: Box::new(|$(_: $ty),*| panic!("missing mock for `{}`", stringify!($fn))), )* } } } }; } impl_mock! { fn get_all_accounts() -> Result, MuralError>; fn get_account(AccountId) -> Result; fn create_account(&str, Option<&str>) -> Result; fn search_payout_requests(Option, Option>) -> Result, MuralError>; fn get_payout_request(PayoutRequestId) -> Result; fn get_fees_for_token_amount(&[TokenFeeRequest]) -> Result, MuralError>; fn get_fees_for_fiat_amount(&[FiatFeeRequest]) -> Result, MuralError>; fn create_payout_request(AccountId, Option<&str>, &[CreatePayout]) -> Result; fn execute_payout_request(PayoutRequestId) -> Result; fn cancel_payout_request(PayoutRequestId) -> Result; fn get_bank_details(&[FiatAndRailCode]) -> Result; fn search_payout_methods(CounterpartyId, Option>) -> Result, MuralError>; fn get_payout_method(CounterpartyId, PayoutMethodId) -> Result; fn create_payout_method(CounterpartyId, &str, &PayoutMethodDetails) -> Result; fn delete_payout_method(CounterpartyId, PayoutMethodId) -> Result<(), MuralError>; fn search_organizations(SearchRequest) -> Result, MuralError>; fn get_organization(OrganizationId) -> Result; fn search_counterparties(Option>) -> Result, MuralError>; fn get_counterparty(CounterpartyId) -> Result; fn create_counterparty(&CreateCounterparty) -> Result; fn update_counterparty(CounterpartyId, &UpdateCounterparty) -> Result; } impl Debug for MuralPayMock { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.debug_struct("MuralPayMock").finish_non_exhaustive() } }