diff options
| author | Joe Carstairs <me@joeac.net> | 2024-11-30 22:50:17 +0000 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2024-11-30 22:51:25 +0000 |
| commit | 48973ceda54950c4da11b131108f642a5df48dce (patch) | |
| tree | 62fa393f8b20967f6bbe7fb75cef87fbbee14f90 /rust/actualbudget_to_schist_transformer/tests/common | |
| parent | 283475af457c71db280fe7732218450a3163614b (diff) | |
Integration test for AB transformer
Diffstat (limited to 'rust/actualbudget_to_schist_transformer/tests/common')
10 files changed, 132 insertions, 0 deletions
diff --git a/rust/actualbudget_to_schist_transformer/tests/common/account_matchers.rs b/rust/actualbudget_to_schist_transformer/tests/common/account_matchers.rs new file mode 100644 index 0000000..599f31f --- /dev/null +++ b/rust/actualbudget_to_schist_transformer/tests/common/account_matchers.rs @@ -0,0 +1,32 @@ +use schist_models::account::Account; + +pub fn get_account_matchers() -> Vec<Box<dyn Fn(&Account) -> bool>> { + vec![ + Box::new(|a| matches_bank_account(a)), + Box::new(|a| matches_cash_account(a)), + ] +} + +fn matches_bank_account(account: &Account) -> bool { + match account { + Account { + name, + opening_balance: 0, + opening_date, + .. + } => name == "My bank account" && *opening_date == "2024-08-01".parse().unwrap(), + _ => false, + } +} + +fn matches_cash_account(account: &Account) -> bool { + match account { + Account { + name, + opening_balance: 0, + opening_date, + .. + } => name == "My cash account" && *opening_date == "2024-08-01".parse().unwrap(), + _ => false, + } +} 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 new file mode 100644 index 0000000..c881ada --- /dev/null +++ b/rust/actualbudget_to_schist_transformer/tests/common/account_transfer_matchers.rs @@ -0,0 +1,6 @@ +use schist_models::account_transfer::AccountTransfer; + +pub fn get_account_transfer_matchers( +) -> Vec<Box<dyn Fn(&AccountTransfer) -> bool>> { + todo!() +} diff --git a/rust/actualbudget_to_schist_transformer/tests/common/budget_drip_matchers.rs b/rust/actualbudget_to_schist_transformer/tests/common/budget_drip_matchers.rs new file mode 100644 index 0000000..ae86102 --- /dev/null +++ b/rust/actualbudget_to_schist_transformer/tests/common/budget_drip_matchers.rs @@ -0,0 +1,6 @@ +use schist_models::budget_drip::BudgetDrip; + +pub fn get_budget_drip_matchers( +) -> Vec<Box<dyn Fn(&BudgetDrip) -> bool>> { + todo!() +} diff --git a/rust/actualbudget_to_schist_transformer/tests/common/category_matchers.rs b/rust/actualbudget_to_schist_transformer/tests/common/category_matchers.rs new file mode 100644 index 0000000..8a76259 --- /dev/null +++ b/rust/actualbudget_to_schist_transformer/tests/common/category_matchers.rs @@ -0,0 +1,6 @@ +use schist_models::category::Category; + +pub fn get_category_matchers( +) -> Vec<Box<dyn Fn(&Category) -> bool>> { + todo!() +} 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 new file mode 100644 index 0000000..c7f5c87 --- /dev/null +++ b/rust/actualbudget_to_schist_transformer/tests/common/category_transfer_matchers.rs @@ -0,0 +1,6 @@ +use schist_models::category_transfer::CategoryTransfer; + +pub fn get_category_transfer_matchers( +) -> Vec<Box<dyn Fn(&CategoryTransfer) -> bool>> { + todo!() +} diff --git a/rust/actualbudget_to_schist_transformer/tests/common/db_url.rs b/rust/actualbudget_to_schist_transformer/tests/common/db_url.rs new file mode 100644 index 0000000..9cd8e39 --- /dev/null +++ b/rust/actualbudget_to_schist_transformer/tests/common/db_url.rs @@ -0,0 +1,2 @@ +pub const TEST_IN_DB_URL: &str = "tests/resources/actualbudget_test_db.sqlite"; +pub const TEST_OUT_DB_URL: &str = "tests/resources/.schist_test_out_db.sqlite"; diff --git a/rust/actualbudget_to_schist_transformer/tests/common/mod.rs b/rust/actualbudget_to_schist_transformer/tests/common/mod.rs new file mode 100644 index 0000000..2ea37d4 --- /dev/null +++ b/rust/actualbudget_to_schist_transformer/tests/common/mod.rs @@ -0,0 +1,20 @@ +mod account_matchers; +mod account_transfer_matchers; +mod budget_drip_matchers; +mod category_matchers; +mod category_transfer_matchers; +mod db_url; +mod test_context; +mod transaction_matchers; +mod transaction_categorisation_matchers; + +pub use account_matchers::get_account_matchers; +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; +pub use category_transfer_matchers::get_category_transfer_matchers; +pub use db_url::TEST_IN_DB_URL; +pub use db_url::TEST_OUT_DB_URL; +pub use test_context::TestContext; +pub use transaction_matchers::get_transaction_matchers; +pub use transaction_categorisation_matchers::get_transaction_categorisation_matchers; diff --git a/rust/actualbudget_to_schist_transformer/tests/common/test_context.rs b/rust/actualbudget_to_schist_transformer/tests/common/test_context.rs new file mode 100644 index 0000000..e59c5f8 --- /dev/null +++ b/rust/actualbudget_to_schist_transformer/tests/common/test_context.rs @@ -0,0 +1,42 @@ +use anyhow::Context; +use diesel::{Connection, SqliteConnection}; +use diesel_migrations::MigrationHarness; +use schist_queries::clear::clear; +use schist_models::migrations::MIGRATIONS; + +use super::{TEST_IN_DB_URL, TEST_OUT_DB_URL}; + +pub struct TestContext { +} + +impl TestContext { + pub fn new() -> Self { + let _in_connection = &mut SqliteConnection + ::establish(&TEST_IN_DB_URL) + .with_context(|| format!("failed to establish connection to in database at {}", TEST_IN_DB_URL)) + .unwrap(); + + let out_connection = &mut SqliteConnection + ::establish(&TEST_OUT_DB_URL) + .with_context(|| format!("failed to establish connection to out database at {}", TEST_OUT_DB_URL)) + .unwrap(); + + out_connection + .run_pending_migrations(MIGRATIONS) + .expect("failed to run migrations on out database"); + + clear(out_connection) + .expect("failed to clear database"); + + Self { + } + } +} + +impl Drop for TestContext { + fn drop(&mut self) { + std::fs::remove_file(&TEST_OUT_DB_URL) + .with_context(|| format!("failed to delete out database at {}", TEST_OUT_DB_URL)) + .unwrap(); + } +} diff --git a/rust/actualbudget_to_schist_transformer/tests/common/transaction_categorisation_matchers.rs b/rust/actualbudget_to_schist_transformer/tests/common/transaction_categorisation_matchers.rs new file mode 100644 index 0000000..20846e2 --- /dev/null +++ b/rust/actualbudget_to_schist_transformer/tests/common/transaction_categorisation_matchers.rs @@ -0,0 +1,6 @@ +use schist_models::transaction_categorisation::TransactionCategorisation; + +pub fn get_transaction_categorisation_matchers( +) -> Vec<Box<dyn Fn(&TransactionCategorisation) -> bool>> { + todo!() +} diff --git a/rust/actualbudget_to_schist_transformer/tests/common/transaction_matchers.rs b/rust/actualbudget_to_schist_transformer/tests/common/transaction_matchers.rs new file mode 100644 index 0000000..3f126fd --- /dev/null +++ b/rust/actualbudget_to_schist_transformer/tests/common/transaction_matchers.rs @@ -0,0 +1,6 @@ +use schist_models::transaction::Transaction; + +pub fn get_transaction_matchers( +) -> Vec<Box<dyn Fn(&Transaction) -> bool>> { + todo!() +} |
