diff options
Diffstat (limited to 'actualbudget_queries/tests/actualbudget_transactions.rs')
| -rw-r--r-- | actualbudget_queries/tests/actualbudget_transactions.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/actualbudget_queries/tests/actualbudget_transactions.rs b/actualbudget_queries/tests/actualbudget_transactions.rs new file mode 100644 index 0000000..c9d72a9 --- /dev/null +++ b/actualbudget_queries/tests/actualbudget_transactions.rs @@ -0,0 +1,38 @@ +pub mod common; + +use actualbudget_queries::actualbudget_transactions::{get_all_actualbudget_transactions, get_first_actualbudget_transaction_date}; +use common::{db_url::DB_URL, get_reference_data::{get_accounts, get_categories}, transaction_matchers::get_transaction_matchers}; +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 accounts = get_accounts(connection); + let categories = get_categories(connection); + + let transactions = get_all_actualbudget_transactions(connection); + + assert!(transactions.is_ok()); + let transactions = transactions.unwrap(); + let transaction_matchers = get_transaction_matchers(); + assert_eq!(transaction_matchers.len(), transactions.len()); + for transaction in transactions { + let any_match = transaction_matchers.iter().any(|transaction_matcher| + transaction_matcher(&transaction, &accounts, &categories) + ); + assert!(any_match, "no match found for transaction {:?}", transaction); + } +} + +#[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()); +} |
