summaryrefslogtreecommitdiff
path: root/rust/actualbudget_to_schist_transformer/tests/common
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2024-11-30 22:50:17 +0000
committerJoe Carstairs <me@joeac.net>2024-11-30 22:51:25 +0000
commit48973ceda54950c4da11b131108f642a5df48dce (patch)
tree62fa393f8b20967f6bbe7fb75cef87fbbee14f90 /rust/actualbudget_to_schist_transformer/tests/common
parent283475af457c71db280fe7732218450a3163614b (diff)
Integration test for AB transformer
Diffstat (limited to 'rust/actualbudget_to_schist_transformer/tests/common')
-rw-r--r--rust/actualbudget_to_schist_transformer/tests/common/account_matchers.rs32
-rw-r--r--rust/actualbudget_to_schist_transformer/tests/common/account_transfer_matchers.rs6
-rw-r--r--rust/actualbudget_to_schist_transformer/tests/common/budget_drip_matchers.rs6
-rw-r--r--rust/actualbudget_to_schist_transformer/tests/common/category_matchers.rs6
-rw-r--r--rust/actualbudget_to_schist_transformer/tests/common/category_transfer_matchers.rs6
-rw-r--r--rust/actualbudget_to_schist_transformer/tests/common/db_url.rs2
-rw-r--r--rust/actualbudget_to_schist_transformer/tests/common/mod.rs20
-rw-r--r--rust/actualbudget_to_schist_transformer/tests/common/test_context.rs42
-rw-r--r--rust/actualbudget_to_schist_transformer/tests/common/transaction_categorisation_matchers.rs6
-rw-r--r--rust/actualbudget_to_schist_transformer/tests/common/transaction_matchers.rs6
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!()
+}