summaryrefslogtreecommitdiff
path: root/transformers
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2026-01-17 08:34:18 +0000
committerJoe Carstairs <me@joeac.net>2026-01-17 16:43:36 +0000
commit0971a7a4e847a5ae935c164d8d63c18d803ddc70 (patch)
treee177150729e6547c271e4d27dd31a5f2ca27d484 /transformers
parentfa1d9941e2d3969a1035d36c97f3363628a409c0 (diff)
BucketTransaction has date field
Diffstat (limited to 'transformers')
-rw-r--r--transformers/actualbudget_transformer/actualbudget_to_schist_transformer/src/transform_state/transform_bucket_transactions_from_category_transfers.rs61
-rw-r--r--transformers/actualbudget_transformer/actualbudget_to_schist_transformer/tests/common/bucket_transaction_matchers.rs19
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,
}
}