diff options
| author | Joe Carstairs <me@joeac.net> | 2026-01-17 08:34:18 +0000 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2026-01-17 16:43:36 +0000 |
| commit | 0971a7a4e847a5ae935c164d8d63c18d803ddc70 (patch) | |
| tree | e177150729e6547c271e4d27dd31a5f2ca27d484 /transformers/actualbudget_transformer | |
| parent | fa1d9941e2d3969a1035d36c97f3363628a409c0 (diff) | |
BucketTransaction has date field
Diffstat (limited to 'transformers/actualbudget_transformer')
2 files changed, 78 insertions, 2 deletions
diff --git a/transformers/actualbudget_transformer/actualbudget_to_schist_transformer/src/transform_state/transform_bucket_transactions_from_category_transfers.rs b/transformers/actualbudget_transformer/actualbudget_to_schist_transformer/src/transform_state/transform_bucket_transactions_from_category_transfers.rs index 952405e..c5a8cf6 100644 --- a/transformers/actualbudget_transformer/actualbudget_to_schist_transformer/src/transform_state/transform_bucket_transactions_from_category_transfers.rs +++ b/transformers/actualbudget_transformer/actualbudget_to_schist_transformer/src/transform_state/transform_bucket_transactions_from_category_transfers.rs @@ -2,6 +2,8 @@ use actualbudget_models::ActualbudgetTransaction; use anyhow::{bail, Context, Result}; use schist_models::BucketTransaction; +use crate::transform_state::transform_date; + use super::{is_category_transfer, transform_id}; pub fn transform_bucket_transactions_from_category_transfers( @@ -105,6 +107,7 @@ fn transform_category_transfer_without_context( } let quantity: i32 = deposit.amount.try_into().unwrap(); + let date = transform_date(&actualbudget_parent_category_transfer.date)?; Ok(vec![ BucketTransaction { @@ -123,6 +126,7 @@ fn transform_category_transfer_without_context( .clone() .unwrap_or_else(String::new), amount: quantity, + date, bucket_id: deposit_id, }, ]) @@ -130,9 +134,20 @@ fn transform_category_transfer_without_context( #[cfg(test)] mod test { +<<<<<<< HEAD use actualbudget_fakes::actualbudget_transaction::make_fake_actualbudget_transaction_builder; use actualbudget_models::{ActualbudgetTransaction, ActualbudgetTransactionBuilder}; use schist_models::BucketTransaction; +======= + use actualbudget_fakes::{ + actualbudget_account::make_fake_actualbudget_account, + actualbudget_transaction::make_fake_actualbudget_transaction_builder, + }; + use actualbudget_models::{ + ActualbudgetDate, ActualbudgetTransaction, ActualbudgetTransactionBuilder, + }; + use schist_models::{bucket_transaction::BucketTransaction, date_utc::DateUtc}; +>>>>>>> 44b35a0 (BucketTransaction has date field) use crate::transform_state::transform_id::transform_id; @@ -141,9 +156,18 @@ mod test { #[test] fn when_one_category_transfer_then_transforms() { let actualbudget_transactions = [ +<<<<<<< HEAD make_fake_parent_transaction("0"), make_fake_child_withdrawal("1", "0"), make_fake_child_deposit("2", "0"), +======= + make_fake_parent_transaction_builder("0") + .date(ActualbudgetDate::from_ymd(2026, 01, 16)) + .build() + .unwrap(), + make_fake_from_child_transaction("1", "0"), + make_fake_to_child_transaction("2", "0"), +>>>>>>> 44b35a0 (BucketTransaction has date field) ]; let result = @@ -157,18 +181,31 @@ mod test { assert_eq!(-100, bucket_withdrawal.amount); assert_eq!("I was a parent transaction", bucket_withdrawal.description); assert_eq!(transform_id("0"), bucket_withdrawal.bucket_id); + assert_eq!( + DateUtc::from_ymd(2026, 1, 16).unwrap(), + bucket_withdrawal.date + ); let bucket_deposit = bucket_transactions.iter().find(|bt| bt.amount > 0).unwrap(); assert_eq!(100, bucket_deposit.amount); assert_eq!("I was a parent transaction", bucket_deposit.description); assert_eq!(transform_id("1"), bucket_deposit.bucket_id); + assert_eq!(DateUtc::from_ymd(2026, 1, 16).unwrap(), bucket_deposit.date); } #[test] fn when_many_transactions_then_transforms() { let actualbudget_transactions = [ +<<<<<<< HEAD make_fake_parent_transaction("0"), make_fake_child_withdrawal_builder("1", 100, "0") +======= + make_fake_parent_transaction_builder("0") + .date(ActualbudgetDate::from_ymd(2026, 1, 16)) + .build() + .unwrap(), + make_fake_from_child_transaction_builder("1", 100, "0") +>>>>>>> 44b35a0 (BucketTransaction has date field) .category_id(Some(String::from("0"))) .build() .unwrap(), @@ -176,8 +213,16 @@ mod test { .category_id(Some(String::from("1"))) .build() .unwrap(), +<<<<<<< HEAD make_fake_parent_transaction("3"), make_fake_child_withdrawal_builder("4", 200, "3") +======= + make_fake_parent_transaction_builder("3") + .date(ActualbudgetDate::from_ymd(2026, 1, 21)) + .build() + .unwrap(), + make_fake_from_child_transaction_builder("4", 200, "3") +>>>>>>> 44b35a0 (BucketTransaction has date field) .category_id(Some(String::from("1"))) .build() .unwrap(), @@ -209,6 +254,10 @@ mod test { assert_eq!(1, bucket_withdrawal_0.len()); let bucket_withdrawal_0 = bucket_withdrawal_0.get(0).unwrap(); assert_eq!(transform_id("0"), bucket_withdrawal_0.bucket_id); + assert_eq!( + DateUtc::from_ymd(2026, 1, 16).unwrap(), + bucket_withdrawal_0.date + ); let bucket_deposit_0: Vec<&BucketTransaction> = bucket_transactions .iter() @@ -217,6 +266,10 @@ mod test { assert_eq!(1, bucket_deposit_0.len()); let bucket_deposit_0 = bucket_deposit_0.get(0).unwrap(); assert_eq!(transform_id("1"), bucket_deposit_0.bucket_id); + assert_eq!( + DateUtc::from_ymd(2026, 1, 16).unwrap(), + bucket_deposit_0.date + ); let bucket_withdrawal_1: Vec<&BucketTransaction> = bucket_transactions .iter() @@ -225,6 +278,10 @@ mod test { assert_eq!(1, bucket_withdrawal_1.len()); let bucket_withdrawal_1 = bucket_withdrawal_1.get(0).unwrap(); assert_eq!(transform_id("1"), bucket_withdrawal_1.bucket_id); + assert_eq!( + DateUtc::from_ymd(2026, 1, 21).unwrap(), + bucket_withdrawal_1.date + ); let bucket_deposit_1: Vec<&BucketTransaction> = bucket_transactions .iter() @@ -233,6 +290,10 @@ mod test { assert_eq!(1, bucket_deposit_1.len()); let bucket_deposit_1 = bucket_deposit_1.get(0).unwrap(); assert_eq!(transform_id("0"), bucket_deposit_1.bucket_id); + assert_eq!( + DateUtc::from_ymd(2026, 1, 21).unwrap(), + bucket_deposit_1.date + ); } #[test] diff --git a/transformers/actualbudget_transformer/actualbudget_to_schist_transformer/tests/common/bucket_transaction_matchers.rs b/transformers/actualbudget_transformer/actualbudget_to_schist_transformer/tests/common/bucket_transaction_matchers.rs index decc189..20b8383 100644 --- a/transformers/actualbudget_transformer/actualbudget_to_schist_transformer/tests/common/bucket_transaction_matchers.rs +++ b/transformers/actualbudget_transformer/actualbudget_to_schist_transformer/tests/common/bucket_transaction_matchers.rs @@ -1,4 +1,5 @@ use schist_models::{Bucket, BucketTransaction}; +use schist_traits::dateable::Dateable; use super::bucket_names::{BUCKET_NAME_GENERAL, BUCKET_NAME_SAVINGS}; @@ -24,8 +25,15 @@ fn matches_withdrawal_120_savings_23_oct_2024( id: _id, description, amount: -120_00, + date, bucket_id, - } => *bucket_id == savings_bucket.id && description.as_str() == "", + } => { + *bucket_id == savings_bucket.id + && description.as_str() == "" + && date.year() == 2024 + && date.month() == 10 + && date.day() == 23 + } _ => false, } } @@ -44,8 +52,15 @@ fn matches_deposit_120_general_23_oct_2024( id: _id, description, amount: 120_00, + date, bucket_id, - } => *bucket_id == general_bucket.id && description.as_str() == "", + } => { + *bucket_id == general_bucket.id + && description.as_str() == "" + && date.year() == 2024 + && date.month() == 10 + && date.day() == 23 + } _ => false, } } |
