diff options
Diffstat (limited to 'rust/actualbudget_to_schist_transformer/tests/common')
| -rw-r--r-- | rust/actualbudget_to_schist_transformer/tests/common/account_transfer_matchers.rs | 48 | ||||
| -rw-r--r-- | rust/actualbudget_to_schist_transformer/tests/common/mod.rs | 2 |
2 files changed, 47 insertions, 3 deletions
diff --git a/rust/actualbudget_to_schist_transformer/tests/common/account_transfer_matchers.rs b/rust/actualbudget_to_schist_transformer/tests/common/account_transfer_matchers.rs index c881ada..1442ee4 100644 --- a/rust/actualbudget_to_schist_transformer/tests/common/account_transfer_matchers.rs +++ b/rust/actualbudget_to_schist_transformer/tests/common/account_transfer_matchers.rs @@ -1,6 +1,48 @@ -use schist_models::account_transfer::AccountTransfer; +use anyhow::Context; +use schist_models::{account::Account, account_transfer::AccountTransfer, date_utc::DateUtc}; + +use super::ACCOUNT_NAMES_DICT; pub fn get_account_transfer_matchers( -) -> Vec<Box<dyn Fn(&AccountTransfer) -> bool>> { - todo!() +) -> Vec<Box<dyn Fn(&AccountTransfer, &[Account]) -> bool>> { + vec![ + Box::new(|at, a| matches_cash_withdrawal_10_sept_2024(at, a)), + ] +} + +fn matches_cash_withdrawal_10_sept_2024( + account_transfer: &AccountTransfer, + accounts: &[Account], +) -> bool { + let bank_account = accounts + .iter() + .filter(|a| a.name == ACCOUNT_NAMES_DICT.bank_account) + .next() + .with_context(|| "failed to find bank account") + .unwrap(); + println!("bank account: {:?}", bank_account); + + let cash_account = accounts + .iter() + .filter(|a| a.name == ACCOUNT_NAMES_DICT.cash_account) + .next() + .with_context(|| "failed to find cash account") + .unwrap(); + println!("cash account: {:?}", cash_account); + + println!("to: {}, from: {}", account_transfer.to_account_id, account_transfer.from_account_id); + match account_transfer { + AccountTransfer { + id: _id, + date, + description, + quantity: 80_00, + from_account_id, + to_account_id, + } => *date == "2024-09-10".parse().unwrap() + && *description == "" + && *from_account_id == bank_account.id + && *to_account_id == cash_account.id, + _ => false, + } } diff --git a/rust/actualbudget_to_schist_transformer/tests/common/mod.rs b/rust/actualbudget_to_schist_transformer/tests/common/mod.rs index 2ea37d4..66cc60c 100644 --- a/rust/actualbudget_to_schist_transformer/tests/common/mod.rs +++ b/rust/actualbudget_to_schist_transformer/tests/common/mod.rs @@ -1,4 +1,5 @@ mod account_matchers; +mod account_names; mod account_transfer_matchers; mod budget_drip_matchers; mod category_matchers; @@ -9,6 +10,7 @@ mod transaction_matchers; mod transaction_categorisation_matchers; pub use account_matchers::get_account_matchers; +pub use account_names::ACCOUNT_NAMES_DICT; pub use account_transfer_matchers::get_account_transfer_matchers; pub use budget_drip_matchers::get_budget_drip_matchers; pub use category_matchers::get_category_matchers; |
