summaryrefslogtreecommitdiff
path: root/backend/core/tests/common
diff options
context:
space:
mode:
Diffstat (limited to 'backend/core/tests/common')
-rw-r--r--backend/core/tests/common/fakes/account.rs10
-rw-r--r--backend/core/tests/common/fakes/budget_update.rs16
-rw-r--r--backend/core/tests/common/fakes/category.rs13
-rw-r--r--backend/core/tests/common/fakes/category_transfer.rs16
-rw-r--r--backend/core/tests/common/fakes/mod.rs6
-rw-r--r--backend/core/tests/common/fakes/transaction.rs17
-rw-r--r--backend/core/tests/common/fakes/transaction_categorisation.rs16
-rw-r--r--backend/core/tests/common/mod.rs2
-rw-r--r--backend/core/tests/common/test_context.rs43
9 files changed, 139 insertions, 0 deletions
diff --git a/backend/core/tests/common/fakes/account.rs b/backend/core/tests/common/fakes/account.rs
new file mode 100644
index 0000000..e915aed
--- /dev/null
+++ b/backend/core/tests/common/fakes/account.rs
@@ -0,0 +1,10 @@
+use budgeting_app_core::models::{account::Account, date_time_utc::DateTimeUtc};
+
+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/backend/core/tests/common/fakes/budget_update.rs b/backend/core/tests/common/fakes/budget_update.rs
new file mode 100644
index 0000000..e7ee9b9
--- /dev/null
+++ b/backend/core/tests/common/fakes/budget_update.rs
@@ -0,0 +1,16 @@
+use budgeting_app_core::models::{budget_update::{BudgetUpdate, BudgetUpdateBuilder}, date_time_utc::DateTimeUtc};
+
+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(DateTimeUtc::now())
+ .new_budget(0)
+ .new_period(0);
+ builder
+}
diff --git a/backend/core/tests/common/fakes/category.rs b/backend/core/tests/common/fakes/category.rs
new file mode 100644
index 0000000..27a027e
--- /dev/null
+++ b/backend/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/backend/core/tests/common/fakes/category_transfer.rs b/backend/core/tests/common/fakes/category_transfer.rs
new file mode 100644
index 0000000..66496f3
--- /dev/null
+++ b/backend/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/backend/core/tests/common/fakes/mod.rs b/backend/core/tests/common/fakes/mod.rs
new file mode 100644
index 0000000..68f5209
--- /dev/null
+++ b/backend/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/backend/core/tests/common/fakes/transaction.rs b/backend/core/tests/common/fakes/transaction.rs
new file mode 100644
index 0000000..d113ce5
--- /dev/null
+++ b/backend/core/tests/common/fakes/transaction.rs
@@ -0,0 +1,17 @@
+use budgeting_app_core::models::{date_time_utc::DateTimeUtc, transaction::{Transaction, TransactionBuilder}};
+
+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/backend/core/tests/common/fakes/transaction_categorisation.rs b/backend/core/tests/common/fakes/transaction_categorisation.rs
new file mode 100644
index 0000000..9ddd684
--- /dev/null
+++ b/backend/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/backend/core/tests/common/mod.rs b/backend/core/tests/common/mod.rs
new file mode 100644
index 0000000..6681d3d
--- /dev/null
+++ b/backend/core/tests/common/mod.rs
@@ -0,0 +1,2 @@
+pub mod fakes;
+pub mod test_context;
diff --git a/backend/core/tests/common/test_context.rs b/backend/core/tests/common/test_context.rs
new file mode 100644
index 0000000..f6142b0
--- /dev/null
+++ b/backend/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());
+ }
+}