summaryrefslogtreecommitdiff
path: root/rust/actualbudget_to_schist_transformer
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2024-12-06 14:03:05 +0000
committerJoe Carstairs <me@joeac.net>2024-12-06 14:41:50 +0000
commitb87f6e7a90c371bb51e5f2bb93b2a2b79ffeff10 (patch)
treeeaf310ce7513c335343935cde3e17ef8e8a6c60f /rust/actualbudget_to_schist_transformer
parent69a6c9d9f7eaed9e1ddfd8819bf52e64d1368854 (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.rs38
-rw-r--r--rust/actualbudget_to_schist_transformer/tests/run.rs4
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,
);