diff options
Diffstat (limited to 'rust')
3 files changed, 49 insertions, 5 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; diff --git a/rust/actualbudget_to_schist_transformer/tests/run.rs b/rust/actualbudget_to_schist_transformer/tests/run.rs index 3a55812..019b51a 100644 --- a/rust/actualbudget_to_schist_transformer/tests/run.rs +++ b/rust/actualbudget_to_schist_transformer/tests/run.rs @@ -20,7 +20,7 @@ fn given_test_database_when_run_then_exports_expected_schist_state() { let account_matchers = get_account_matchers(); assert_eq!(account_matchers.len(), accounts.len()); - for account in accounts { + for account in &accounts { assert!( account_matchers.iter().any(|m| m(&account)), "no match found for account {:?}", @@ -32,7 +32,7 @@ fn given_test_database_when_run_then_exports_expected_schist_state() { assert_eq!(account_transfer_matchers.len(), account_transfers.len()); for account_transfer in account_transfers { assert!( - account_transfer_matchers.iter().any(|m| m(&account_transfer)), + account_transfer_matchers.iter().any(|m| m(&account_transfer, &accounts)), "no match found for account_transfer {:?}", account_transfer, ); |
