From 1ae19eb3315c40e3f9062592c27fa76c11cf626c Mon Sep 17 00:00:00 2001 From: Joe Carstairs Date: Sun, 17 Nov 2024 09:23:28 +0000 Subject: Renames workspace folder --- rust/core/tests/common/fakes/account.rs | 10 +++++ rust/core/tests/common/fakes/budget_update.rs | 16 ++++++++ rust/core/tests/common/fakes/category.rs | 13 +++++++ rust/core/tests/common/fakes/category_transfer.rs | 16 ++++++++ rust/core/tests/common/fakes/mod.rs | 6 +++ rust/core/tests/common/fakes/transaction.rs | 17 +++++++++ .../common/fakes/transaction_categorisation.rs | 16 ++++++++ rust/core/tests/common/mod.rs | 2 + rust/core/tests/common/test_context.rs | 43 ++++++++++++++++++++++ 9 files changed, 139 insertions(+) create mode 100644 rust/core/tests/common/fakes/account.rs create mode 100644 rust/core/tests/common/fakes/budget_update.rs create mode 100644 rust/core/tests/common/fakes/category.rs create mode 100644 rust/core/tests/common/fakes/category_transfer.rs create mode 100644 rust/core/tests/common/fakes/mod.rs create mode 100644 rust/core/tests/common/fakes/transaction.rs create mode 100644 rust/core/tests/common/fakes/transaction_categorisation.rs create mode 100644 rust/core/tests/common/mod.rs create mode 100644 rust/core/tests/common/test_context.rs (limited to 'rust/core/tests/common') diff --git a/rust/core/tests/common/fakes/account.rs b/rust/core/tests/common/fakes/account.rs new file mode 100644 index 0000000..38422bf --- /dev/null +++ b/rust/core/tests/common/fakes/account.rs @@ -0,0 +1,10 @@ +use budgeting_app_core::{models::{account::Account, datetime_utc::DatetimeUtc}, traits::nowlike::Nowlike}; + +pub fn make_fake_account(id: i32) -> Account { + Account { + id, + name: String::from("Joe Bloggs"), + opening_balance: 0, + opening_date: DatetimeUtc::now(), + } +} diff --git a/rust/core/tests/common/fakes/budget_update.rs b/rust/core/tests/common/fakes/budget_update.rs new file mode 100644 index 0000000..f27360f --- /dev/null +++ b/rust/core/tests/common/fakes/budget_update.rs @@ -0,0 +1,16 @@ +use budgeting_app_core::{models::{budget_update::{BudgetUpdate, BudgetUpdateBuilder}, date_utc::DateUtc}, traits::nowlike::Nowlike}; + +pub fn make_fake_budget_update(id: i32) -> BudgetUpdate { + make_fake_budget_update_builder(id).build().unwrap() +} + +pub fn make_fake_budget_update_builder(id: i32) -> BudgetUpdateBuilder { + let mut builder = BudgetUpdateBuilder::default(); + builder + .id(id) + .category_id(0) + .date(DateUtc::now()) + .new_budget(0) + .new_period(0); + builder +} diff --git a/rust/core/tests/common/fakes/category.rs b/rust/core/tests/common/fakes/category.rs new file mode 100644 index 0000000..27a027e --- /dev/null +++ b/rust/core/tests/common/fakes/category.rs @@ -0,0 +1,13 @@ +use budgeting_app_core::models::category::{Category, CategoryBuilder}; + +pub fn make_fake_category(id: i32) -> Category { + make_fake_category_builder(id).build().unwrap() +} + +pub fn make_fake_category_builder(id: i32) -> CategoryBuilder { + let mut builder = CategoryBuilder::default(); + builder + .id(id) + .name(String::from("Fake category")); + builder +} diff --git a/rust/core/tests/common/fakes/category_transfer.rs b/rust/core/tests/common/fakes/category_transfer.rs new file mode 100644 index 0000000..66496f3 --- /dev/null +++ b/rust/core/tests/common/fakes/category_transfer.rs @@ -0,0 +1,16 @@ +use budgeting_app_core::models::category_transfer::{CategoryTransfer, CategoryTransferBuilder}; + +pub fn make_fake_category_transfer(id: i32) -> CategoryTransfer { + make_fake_category_transfer_builder(id).build().unwrap() +} + +pub fn make_fake_category_transfer_builder(id: i32) -> CategoryTransferBuilder { + let mut builder = CategoryTransferBuilder::default(); + builder + .id(id) + .description(String::from("Fake category transfer")) + .quantity(0) + .from_category_id(0) + .to_category_id(1); + builder +} diff --git a/rust/core/tests/common/fakes/mod.rs b/rust/core/tests/common/fakes/mod.rs new file mode 100644 index 0000000..68f5209 --- /dev/null +++ b/rust/core/tests/common/fakes/mod.rs @@ -0,0 +1,6 @@ +pub mod account; +pub mod budget_update; +pub mod category; +pub mod category_transfer; +pub mod transaction; +pub mod transaction_categorisation; diff --git a/rust/core/tests/common/fakes/transaction.rs b/rust/core/tests/common/fakes/transaction.rs new file mode 100644 index 0000000..88a9a71 --- /dev/null +++ b/rust/core/tests/common/fakes/transaction.rs @@ -0,0 +1,17 @@ +use budgeting_app_core::{models::{datetime_utc::DatetimeUtc, transaction::{Transaction, TransactionBuilder}}, traits::nowlike::Nowlike}; + +pub fn make_fake_transaction(id: i32) -> Transaction { + make_fake_transaction_builder(id).build().unwrap() +} + +pub fn make_fake_transaction_builder(id: i32) -> TransactionBuilder { + let mut builder = TransactionBuilder::default(); + builder + .id(id) + .description(String::from("Fake category transfer")) + .payee(String::from("Fake payee")) + .quantity(0) + .date(DatetimeUtc::now()) + .account_id(0); + builder +} diff --git a/rust/core/tests/common/fakes/transaction_categorisation.rs b/rust/core/tests/common/fakes/transaction_categorisation.rs new file mode 100644 index 0000000..9ddd684 --- /dev/null +++ b/rust/core/tests/common/fakes/transaction_categorisation.rs @@ -0,0 +1,16 @@ +use budgeting_app_core::models::transaction_categorisation::{TransactionCategorisation, TransactionCategorisationBuilder}; + +pub fn make_fake_transaction_categorisation(id: i32) -> TransactionCategorisation { + make_fake_transaction_categorisation_builder(id).build().unwrap() +} + +pub fn make_fake_transaction_categorisation_builder(id: i32) -> TransactionCategorisationBuilder { + let mut builder = TransactionCategorisationBuilder::default(); + builder + .id(id) + .description(String::from("Fake category transfer")) + .quantity(0) + .transaction_id(0) + .category_id(0); + builder +} diff --git a/rust/core/tests/common/mod.rs b/rust/core/tests/common/mod.rs new file mode 100644 index 0000000..6681d3d --- /dev/null +++ b/rust/core/tests/common/mod.rs @@ -0,0 +1,2 @@ +pub mod fakes; +pub mod test_context; diff --git a/rust/core/tests/common/test_context.rs b/rust/core/tests/common/test_context.rs new file mode 100644 index 0000000..f6142b0 --- /dev/null +++ b/rust/core/tests/common/test_context.rs @@ -0,0 +1,43 @@ +use std::sync::atomic::{AtomicU64, Ordering}; + +use budgeting_app_core::{queries::clear::clear, MIGRATIONS}; +use diesel::{Connection, SqliteConnection}; +use diesel_migrations::MigrationHarness; + +pub struct TestContext { + pub db_url: String, +} + +static ID_COUNTER: AtomicU64 = AtomicU64::new(0); + +impl TestContext { + pub fn new() -> Self { + let db_url = Self::next_id() + ".sqlite"; + + let connection = &mut SqliteConnection + ::establish(&db_url) + .expect("failed to connect to database"); + + connection + .run_pending_migrations(MIGRATIONS) + .expect("failed to run migrations"); + + clear(connection) + .expect("failed to clear database"); + + Self { + db_url, + } + } + + fn next_id() -> String { + ID_COUNTER.fetch_add(1, Ordering::Relaxed).to_string() + } +} + +impl Drop for TestContext { + fn drop(&mut self) { + std::fs::remove_file(&self.db_url) + .expect(format!("failed to delete database {}", self.db_url).as_str()); + } +} -- cgit v1.2.3