summaryrefslogtreecommitdiff
path: root/backend/core/tests/queries
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2024-11-09 00:41:57 +0000
committerJoe Carstairs <me@joeac.net>2024-11-09 00:41:57 +0000
commit6a0ae1fd4b8ff6fda6a5f0f8e85917d39ad23c7e (patch)
treeb2dd0c0443c6ed7b7fc74aab8e7eac4b94040af2 /backend/core/tests/queries
parent5fced470220a9355a5b7ba0bb2858e1733b706dd (diff)
Test sum_transaction_categorisation_quantity_per_category_id
Diffstat (limited to 'backend/core/tests/queries')
-rw-r--r--backend/core/tests/queries/transaction_categorisations.rs63
1 files changed, 49 insertions, 14 deletions
diff --git a/backend/core/tests/queries/transaction_categorisations.rs b/backend/core/tests/queries/transaction_categorisations.rs
index 7e0e742..123ee6e 100644
--- a/backend/core/tests/queries/transaction_categorisations.rs
+++ b/backend/core/tests/queries/transaction_categorisations.rs
@@ -1,25 +1,36 @@
-use budgeting_app_core::queries;
+use budgeting_app_core::{models::{account::Account, category::Category, transaction::Transaction}, queries};
use diesel::{Connection, SqliteConnection};
use crate::common::{fakes::{account::make_fake_account, category::make_fake_category, transaction::make_fake_transaction_builder, transaction_categorisation::make_fake_transaction_categorisation_builder}, test_context::TestContext};
-fn insert_prerequisite_data(connection: &mut SqliteConnection) {
- let accounts = [make_fake_account(0)];
- let categories = [make_fake_category(0)];
- let transactions = [
+fn given_accounts(connection: &mut SqliteConnection) -> Vec<Account> {
+ let accounts = vec![make_fake_account(0)];
+ let _ = queries::accounts::insert_accounts(&accounts, connection);
+ accounts
+}
+
+fn given_categories(connection: &mut SqliteConnection) -> Vec<Category> {
+ let categories = vec![make_fake_category(0), make_fake_category(1)];
+ let _ = queries::categories::insert_categories(&categories, connection);
+ categories
+}
+
+fn given_transactions(connection: &mut SqliteConnection) -> Vec<Transaction> {
+ let transactions = vec![
make_fake_transaction_builder(0).account_id(0).build().unwrap(),
make_fake_transaction_builder(1).account_id(0).build().unwrap(),
];
- let _ = queries::accounts::insert_accounts(&accounts, connection);
- let _ = queries::categories::insert_categories(&categories, connection);
let _ = queries::transactions::insert_transactions(&transactions, connection);
+ transactions
}
#[test]
fn when_insert_transaction_categorisations_then_returns_num_transaction_categorisations() {
let context = TestContext::new();
let connection = &mut SqliteConnection::establish(&context.db_url).unwrap();
- insert_prerequisite_data(connection);
+ given_accounts(connection);
+ given_categories(connection);
+ given_transactions(connection);
let transaction_categorisations = [
make_fake_transaction_categorisation_builder(0).category_id(0).build().unwrap(),
make_fake_transaction_categorisation_builder(1).category_id(0).build().unwrap(),
@@ -34,7 +45,9 @@ fn when_insert_transaction_categorisations_then_returns_num_transaction_categori
fn given_transaction_categorisations_when_get_all_transaction_categorisations_then_return_transaction_categorisations() {
let context = TestContext::new();
let connection = &mut SqliteConnection::establish(&context.db_url).unwrap();
- insert_prerequisite_data(connection);
+ given_accounts(connection);
+ given_categories(connection);
+ given_transactions(connection);
let transaction_categorisations = [
make_fake_transaction_categorisation_builder(0).category_id(0).build().unwrap(),
make_fake_transaction_categorisation_builder(1).category_id(0).build().unwrap(),
@@ -56,7 +69,9 @@ fn given_transaction_categorisations_when_get_all_transaction_categorisations_th
fn given_transaction_categorisations_when_delete_all_transaction_categorisations_then_return_num_of_transaction_categorisations() {
let context = TestContext::new();
let connection = &mut SqliteConnection::establish(&context.db_url).unwrap();
- insert_prerequisite_data(connection);
+ given_accounts(connection);
+ given_categories(connection);
+ given_transactions(connection);
let transaction_categorisations = [
make_fake_transaction_categorisation_builder(0).category_id(0).build().unwrap(),
make_fake_transaction_categorisation_builder(1).category_id(0).build().unwrap(),
@@ -72,7 +87,9 @@ fn given_transaction_categorisations_when_delete_all_transaction_categorisations
fn given_deleted_transaction_categorisations_when_get_all_transaction_categorisations_then_return_empty() {
let context = TestContext::new();
let connection = &mut SqliteConnection::establish(&context.db_url).unwrap();
- insert_prerequisite_data(connection);
+ given_accounts(connection);
+ given_categories(connection);
+ given_transactions(connection);
let transaction_categorisations = [
make_fake_transaction_categorisation_builder(0).category_id(0).build().unwrap(),
make_fake_transaction_categorisation_builder(1).category_id(0).build().unwrap(),
@@ -85,8 +102,26 @@ fn given_deleted_transaction_categorisations_when_get_all_transaction_categorisa
assert_eq!(transaction_categorisations_returned.len(), 0);
}
-
#[test]
-fn todo() {
- todo!("test sum_quantity_per_category_id");
+fn given_transaction_categorisations_when_sum_quantity_per_category_id_then_returns_sum_quantity_per_category_id() {
+ let context = TestContext::new();
+ let connection = &mut SqliteConnection::establish(&context.db_url).unwrap();
+ given_accounts(connection);
+ let categories = given_categories(connection);
+ given_transactions(connection);
+ let transaction_categorisations = [
+ make_fake_transaction_categorisation_builder(0).category_id(0).quantity(1).build().unwrap(),
+ make_fake_transaction_categorisation_builder(1).category_id(0).quantity(2).build().unwrap(),
+ make_fake_transaction_categorisation_builder(2).category_id(1).quantity(4).build().unwrap(),
+ ];
+ let _ = queries::transaction_categorisations::insert_transaction_categorisations(&transaction_categorisations, connection);
+
+ let sums = queries::transaction_categorisations::sum_transaction_categorisation_quantity_per_category_id(connection);
+
+ assert!(sums.is_ok());
+ let mut sums = sums.unwrap();
+ sums.sort_by_key(|sum| sum.0);
+ assert_eq!(categories.len(), sums.len());
+ assert_eq!(3, sums[0].1);
+ assert_eq!(4, sums[1].1);
}