From 4967cbabfc2fddc903dfaa17b11b2baa006fb218 Mon Sep 17 00:00:00 2001 From: Joe Carstairs Date: Sun, 17 Nov 2024 16:37:38 +0000 Subject: actualbudget queries integration tests --- .../tests/actualbudget_accounts.rs | 32 +++++++++++++++++++++ .../tests/actualbudget_categories.rs | 23 +++++++++++++++ .../tests/actualbudget_transactions.rs | 29 +++++++++++++++++++ .../tests/actualbudget_zero_budgets.rs | 16 +++++++++++ rust/actualbudget_queries/tests/common.rs | 1 + .../tests/resources/actualbudget_test_db.sqlite | Bin 0 -> 528384 bytes .../resources/actualbudget_test_db_metadata.json | 1 + 7 files changed, 102 insertions(+) create mode 100644 rust/actualbudget_queries/tests/actualbudget_accounts.rs create mode 100644 rust/actualbudget_queries/tests/actualbudget_categories.rs create mode 100644 rust/actualbudget_queries/tests/actualbudget_transactions.rs create mode 100644 rust/actualbudget_queries/tests/actualbudget_zero_budgets.rs create mode 100644 rust/actualbudget_queries/tests/common.rs create mode 100644 rust/actualbudget_queries/tests/resources/actualbudget_test_db.sqlite create mode 100644 rust/actualbudget_queries/tests/resources/actualbudget_test_db_metadata.json (limited to 'rust/actualbudget_queries/tests') diff --git a/rust/actualbudget_queries/tests/actualbudget_accounts.rs b/rust/actualbudget_queries/tests/actualbudget_accounts.rs new file mode 100644 index 0000000..a761c4f --- /dev/null +++ b/rust/actualbudget_queries/tests/actualbudget_accounts.rs @@ -0,0 +1,32 @@ +mod common; + +use actualbudget_queries::actualbudget_accounts::{get_all_actualbudget_accounts, get_category_transfers_account}; +use common::DB_URL; +use diesel::{Connection, SqliteConnection}; + +#[test] +fn given_test_database_when_get_all_accounts_then_return_accounts() { + let connection = &mut SqliteConnection::establish(DB_URL).unwrap(); + + let accounts = get_all_actualbudget_accounts(connection); + + assert!(accounts.is_ok()); + let accounts = accounts.unwrap(); + assert_eq!(3, accounts.len()); + assert!(accounts.iter().any(|a| a.name == "My bank account")); + assert!(accounts.iter().any(|a| a.name == "My cash account")); + assert!(accounts.iter().any(|a| a.name == "Category transfers")); +} + +#[test] +fn given_test_database_when_get_category_transfer_account_then_return_category_transfer_account() { + let connection = &mut SqliteConnection::establish(DB_URL).unwrap(); + + let account = get_category_transfers_account(connection); + + assert!(account.is_ok()); + let account = account.unwrap(); + assert!(account.is_some()); + let account = account.unwrap(); + assert!(account.name == "Category transfers"); +} diff --git a/rust/actualbudget_queries/tests/actualbudget_categories.rs b/rust/actualbudget_queries/tests/actualbudget_categories.rs new file mode 100644 index 0000000..5cc619f --- /dev/null +++ b/rust/actualbudget_queries/tests/actualbudget_categories.rs @@ -0,0 +1,23 @@ +mod common; + +use actualbudget_queries::actualbudget_categories::get_all_actualbudget_categories; +use common::DB_URL; +use diesel::{Connection, SqliteConnection}; + +#[test] +fn given_test_database_when_get_all_categories_then_return_categories() { + let connection = &mut SqliteConnection::establish(DB_URL).unwrap(); + + let categories = get_all_actualbudget_categories(connection); + + assert!(categories.is_ok()); + let categories = categories.unwrap(); + assert_eq!(7, categories.len()); + assert!(categories.iter().any(|a| a.name == "Food")); + assert!(categories.iter().any(|a| a.name == "General")); + assert!(categories.iter().any(|a| a.name == "Bills")); + assert!(categories.iter().any(|a| a.name == "Bills (Flexible)")); + assert!(categories.iter().any(|a| a.name == "Savings")); + assert!(categories.iter().any(|a| a.name == "Starting Balances")); + assert!(categories.iter().any(|a| a.name == "Income")); +} diff --git a/rust/actualbudget_queries/tests/actualbudget_transactions.rs b/rust/actualbudget_queries/tests/actualbudget_transactions.rs new file mode 100644 index 0000000..0321d73 --- /dev/null +++ b/rust/actualbudget_queries/tests/actualbudget_transactions.rs @@ -0,0 +1,29 @@ +mod common; + +use actualbudget_queries::actualbudget_transactions::{get_all_actualbudget_transactions, get_first_actualbudget_transaction_date}; +use common::DB_URL; +use diesel::{Connection, SqliteConnection}; + +#[test] +fn given_test_database_when_get_all_transactions_then_return_transactions() { + let connection = &mut SqliteConnection::establish(DB_URL).unwrap(); + + let transactions = get_all_actualbudget_transactions(connection); + + assert!(transactions.is_ok()); + let transactions = transactions.unwrap(); + assert_eq!(15, transactions.len()); +} + +#[test] +fn given_test_database_when_get_first_transaction_date_then_return_01_aug_2024() { + let connection = &mut SqliteConnection::establish(DB_URL).unwrap(); + + let date = get_first_actualbudget_transaction_date(connection); + + assert!(date.is_ok()); + let date = date.unwrap(); + assert_eq!("01", date.day()); + assert_eq!("08", date.month()); + assert_eq!("2024", date.year()); +} diff --git a/rust/actualbudget_queries/tests/actualbudget_zero_budgets.rs b/rust/actualbudget_queries/tests/actualbudget_zero_budgets.rs new file mode 100644 index 0000000..c4e79be --- /dev/null +++ b/rust/actualbudget_queries/tests/actualbudget_zero_budgets.rs @@ -0,0 +1,16 @@ +mod common; + +use actualbudget_queries::actualbudget_zero_budgets::get_all_actualbudget_zero_budgets; +use common::DB_URL; +use diesel::{Connection, SqliteConnection}; + +#[test] +fn given_test_database_when_get_all_zero_budgets_then_return_zero_budgets() { + let connection = &mut SqliteConnection::establish(DB_URL).unwrap(); + + let zero_budgets = get_all_actualbudget_zero_budgets(connection); + + assert!(zero_budgets.is_ok()); + let zero_budgets = zero_budgets.unwrap(); + assert_eq!(25, zero_budgets.len()); +} diff --git a/rust/actualbudget_queries/tests/common.rs b/rust/actualbudget_queries/tests/common.rs new file mode 100644 index 0000000..ff778a8 --- /dev/null +++ b/rust/actualbudget_queries/tests/common.rs @@ -0,0 +1 @@ +pub const DB_URL: &str = "tests/resources/actualbudget_test_db.sqlite"; diff --git a/rust/actualbudget_queries/tests/resources/actualbudget_test_db.sqlite b/rust/actualbudget_queries/tests/resources/actualbudget_test_db.sqlite new file mode 100644 index 0000000..e22762f Binary files /dev/null and b/rust/actualbudget_queries/tests/resources/actualbudget_test_db.sqlite differ diff --git a/rust/actualbudget_queries/tests/resources/actualbudget_test_db_metadata.json b/rust/actualbudget_queries/tests/resources/actualbudget_test_db_metadata.json new file mode 100644 index 0000000..c323ad6 --- /dev/null +++ b/rust/actualbudget_queries/tests/resources/actualbudget_test_db_metadata.json @@ -0,0 +1 @@ +{"id":"My-Finances-1-36ec11a","budgetName":"My Finances 1","userId":"fec9ba17-c260-4f55-8d44-676ef0ec5da9","lastScheduleRun":"2024-11-17","resetClock":true} \ No newline at end of file -- cgit v1.2.3