diff options
| author | Joe Carstairs <me@joeac.net> | 2024-12-06 14:03:05 +0000 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2024-12-06 14:41:50 +0000 |
| commit | b87f6e7a90c371bb51e5f2bb93b2a2b79ffeff10 (patch) | |
| tree | eaf310ce7513c335343935cde3e17ef8e8a6c60f /rust/actualbudget_to_schist_transformer | |
| parent | 69a6c9d9f7eaed9e1ddfd8819bf52e64d1368854 (diff) | |
Tests AB category transfers transform
Diffstat (limited to 'rust/actualbudget_to_schist_transformer')
| -rw-r--r-- | rust/actualbudget_to_schist_transformer/tests/common/category_transfer_matchers.rs | 38 | ||||
| -rw-r--r-- | rust/actualbudget_to_schist_transformer/tests/run.rs | 4 |
2 files changed, 37 insertions, 5 deletions
diff --git a/rust/actualbudget_to_schist_transformer/tests/common/category_transfer_matchers.rs b/rust/actualbudget_to_schist_transformer/tests/common/category_transfer_matchers.rs index c7f5c87..6d11c8a 100644 --- a/rust/actualbudget_to_schist_transformer/tests/common/category_transfer_matchers.rs +++ b/rust/actualbudget_to_schist_transformer/tests/common/category_transfer_matchers.rs @@ -1,6 +1,38 @@ -use schist_models::category_transfer::CategoryTransfer; +use schist_models::{category::Category, category_transfer::CategoryTransfer}; + +use super::category_names::{CATEGORY_NAME_GENERAL, CATEGORY_NAME_SAVINGS}; pub fn get_category_transfer_matchers( -) -> Vec<Box<dyn Fn(&CategoryTransfer) -> bool>> { - todo!() +) -> Vec<Box<dyn Fn(&CategoryTransfer, &[Category]) -> bool>> { + vec![ + Box::new(|ct, c| matches_120_savings_to_general_23_oct_2024(ct, c)), + ] +} + +fn matches_120_savings_to_general_23_oct_2024( + category_transfer: &CategoryTransfer, + categories: &[Category], +) -> bool { + let savings_category = categories + .iter() + .find(|c| c.name == CATEGORY_NAME_SAVINGS) + .expect("failed to find savings category"); + + let general_category = categories + .iter() + .find(|c| c.name == CATEGORY_NAME_GENERAL) + .expect("failed to find general category"); + + match category_transfer { + CategoryTransfer { + id: _id, + description, + quantity: 120_00, + from_category_id, + to_category_id, + } => *from_category_id == savings_category.id + && *to_category_id == general_category.id + && description.as_str() == "", + _ => false, + } } diff --git a/rust/actualbudget_to_schist_transformer/tests/run.rs b/rust/actualbudget_to_schist_transformer/tests/run.rs index 998d8df..bf2cf39 100644 --- a/rust/actualbudget_to_schist_transformer/tests/run.rs +++ b/rust/actualbudget_to_schist_transformer/tests/run.rs @@ -45,7 +45,7 @@ fn given_test_database_when_run_then_exports_expected_schist_state() { let category_matchers = get_category_matchers(); assert_eq!(category_matchers.len(), categories.len()); - for category in categories { + for category in categories.clone() { assert!( category_matchers.iter().any(|m| m(&category)), "no match found for category {:?}", @@ -57,7 +57,7 @@ fn given_test_database_when_run_then_exports_expected_schist_state() { assert_eq!(category_transfer_matchers.len(), category_transfers.len()); for category_transfer in category_transfers { assert!( - category_transfer_matchers.iter().any(|m| m(&category_transfer)), + category_transfer_matchers.iter().any(|m| m(&category_transfer, &categories)), "no match found for category_transfer {:?}", category_transfer, ); |
