diff options
Diffstat (limited to 'backend/core/tests/queries')
| -rw-r--r-- | backend/core/tests/queries/budget_updates.rs | 212 | ||||
| -rw-r--r-- | backend/core/tests/queries/categories.rs | 15 | ||||
| -rw-r--r-- | backend/core/tests/queries/category_transfers.rs | 10 | ||||
| -rw-r--r-- | backend/core/tests/queries/transaction_categorisations.rs | 6 |
4 files changed, 226 insertions, 17 deletions
diff --git a/backend/core/tests/queries/budget_updates.rs b/backend/core/tests/queries/budget_updates.rs index 147d06f..ae580e7 100644 --- a/backend/core/tests/queries/budget_updates.rs +++ b/backend/core/tests/queries/budget_updates.rs @@ -1,18 +1,28 @@ -use budgeting_app_core::queries; +use budgeting_app_core::{models::date_utc::DateUtc, queries, traits::nowlike::Nowlike}; use diesel::{Connection, SqliteConnection}; use crate::common::{fakes::{budget_update::make_fake_budget_update_builder, category::make_fake_category}, test_context::TestContext}; +fn insert_prerequisite_data(connection: &mut SqliteConnection) { + let categories = [make_fake_category(0), make_fake_category(1)]; + let _ = queries::categories::insert_categories(&categories, connection); +} + #[test] fn when_insert_budget_updates_then_returns_num_budget_updates() { let context = TestContext::new(); let connection = &mut SqliteConnection::establish(&context.db_url).unwrap(); - let categories = [make_fake_category(0)]; + insert_prerequisite_data(connection); let budget_updates = [ - make_fake_budget_update_builder(0).category_id(0).build().unwrap(), - make_fake_budget_update_builder(1).category_id(0).build().unwrap(), + make_fake_budget_update_builder(0) + .date(DateUtc::from_ymd(2020, 12, 25).unwrap()) + .category_id(0) + .build().unwrap(), + make_fake_budget_update_builder(1) + .date(DateUtc::from_ymd(2020, 12, 26).unwrap()) + .category_id(0) + .build().unwrap(), ]; - let _ = queries::categories::insert_categories(&categories, connection); let num_budget_updates_inserted = queries::budget_updates::insert_budget_updates(&budget_updates, connection).unwrap(); @@ -20,20 +30,104 @@ fn when_insert_budget_updates_then_returns_num_budget_updates() { } #[test] +fn given_budget_update_when_insert_budget_update_same_category_and_same_date_then_return_err() { + let context = TestContext::new(); + let connection = &mut SqliteConnection::establish(&context.db_url).unwrap(); + insert_prerequisite_data(connection); + + let budget_updates_1 = [ + make_fake_budget_update_builder(0) + .category_id(0) + .date(DateUtc::from_ymd(2020, 12, 25).unwrap()) + .build().unwrap() + ]; + let _ = queries::budget_updates::insert_budget_updates(&budget_updates_1, connection); + + let budget_updates_2 = [ + make_fake_budget_update_builder(1) + .category_id(0) + .date(DateUtc::from_ymd(2020, 12, 25).unwrap()) + .build().unwrap() + ]; + let result = queries::budget_updates::insert_budget_updates(&budget_updates_2, connection); + + assert!(result.is_err()); +} + +#[test] +fn given_budget_update_when_insert_budget_update_different_category_and_same_date_then_return_num_budget_updates_inserted() { + let context = TestContext::new(); + let connection = &mut SqliteConnection::establish(&context.db_url).unwrap(); + insert_prerequisite_data(connection); + + let budget_updates_1 = [ + make_fake_budget_update_builder(0) + .category_id(0) + .date(DateUtc::from_ymd(2020, 12, 25).unwrap()) + .build().unwrap() + ]; + let _ = queries::budget_updates::insert_budget_updates(&budget_updates_1, connection); + + let budget_updates_2 = [ + make_fake_budget_update_builder(1) + .category_id(1) + .date(DateUtc::from_ymd(2020, 12, 25).unwrap()) + .build().unwrap() + ]; + let result = queries::budget_updates::insert_budget_updates(&budget_updates_2, connection); + + assert!(result.is_ok()); + assert_eq!(result.unwrap(), 1); +} + +#[test] +fn given_budget_update_when_insert_budget_update_same_category_and_different_date_then_return_num_budget_updates_inserted() { + let context = TestContext::new(); + let connection = &mut SqliteConnection::establish(&context.db_url).unwrap(); + insert_prerequisite_data(connection); + + let budget_updates_1 = [ + make_fake_budget_update_builder(0) + .category_id(0) + .date(DateUtc::from_ymd(2020, 12, 25).unwrap()) + .build().unwrap() + ]; + let _ = queries::budget_updates::insert_budget_updates(&budget_updates_1, connection); + + let budget_updates_2 = [ + make_fake_budget_update_builder(1) + .category_id(0) + .date(DateUtc::from_ymd(2020, 12, 26).unwrap()) + .build().unwrap() + ]; + let result = queries::budget_updates::insert_budget_updates(&budget_updates_2, connection); + + assert!(result.is_ok()); + assert_eq!(result.unwrap(), 1); +} + +#[test] fn given_budget_updates_when_get_all_budget_updates_then_return_budget_updates() { let context = TestContext::new(); let connection = &mut SqliteConnection::establish(&context.db_url).unwrap(); - let categories = [make_fake_category(0)]; + insert_prerequisite_data(connection); let budget_updates = [ - make_fake_budget_update_builder(0).category_id(0).build().unwrap(), - make_fake_budget_update_builder(1).category_id(0).build().unwrap(), + make_fake_budget_update_builder(0) + .date(DateUtc::from_ymd(2020, 12, 25).unwrap()) + .category_id(0) + .build().unwrap(), + make_fake_budget_update_builder(1) + .date(DateUtc::from_ymd(2020, 12, 26).unwrap()) + .category_id(0) + .build().unwrap(), ]; - let _ = queries::categories::insert_categories(&categories, connection); let _ = queries::budget_updates::insert_budget_updates(&budget_updates, connection).unwrap(); let budget_updates_in_db = queries::budget_updates::get_all_budget_updates(connection).unwrap(); assert_eq!(budget_updates_in_db.len(), budget_updates.len()); + assert_eq!(budget_updates_in_db[0], budget_updates[0]); + assert_eq!(budget_updates_in_db[1], budget_updates[1]); for budget_update in &budget_updates { assert!(budget_updates_in_db.iter().any(|budget_update_in_db| budget_update_in_db.eq(&budget_update))); } @@ -46,12 +140,17 @@ fn given_budget_updates_when_get_all_budget_updates_then_return_budget_updates() fn given_budget_updates_when_delete_all_budget_updates_then_return_num_of_budget_updates() { let context = TestContext::new(); let connection = &mut SqliteConnection::establish(&context.db_url).unwrap(); - let categories = [make_fake_category(0)]; + insert_prerequisite_data(connection); let budget_updates = [ - make_fake_budget_update_builder(0).category_id(0).build().unwrap(), - make_fake_budget_update_builder(1).category_id(0).build().unwrap(), + make_fake_budget_update_builder(0) + .date(DateUtc::from_ymd(2020, 12, 25).unwrap()) + .category_id(0) + .build().unwrap(), + make_fake_budget_update_builder(1) + .date(DateUtc::from_ymd(2020, 12, 26).unwrap()) + .category_id(0) + .build().unwrap(), ]; - let _ = queries::categories::insert_categories(&categories, connection); let _ = queries::budget_updates::insert_budget_updates(&budget_updates, connection).unwrap(); let num_budget_updates_deleted = queries::budget_updates::delete_all_budget_updates(connection).unwrap(); @@ -63,12 +162,17 @@ fn given_budget_updates_when_delete_all_budget_updates_then_return_num_of_budget fn given_deleted_budget_updates_when_get_all_budget_updates_then_return_empty() { let context = TestContext::new(); let connection = &mut SqliteConnection::establish(&context.db_url).unwrap(); - let categories = [make_fake_category(0)]; + insert_prerequisite_data(connection); let budget_updates = [ - make_fake_budget_update_builder(0).category_id(0).build().unwrap(), - make_fake_budget_update_builder(1).category_id(0).build().unwrap(), + make_fake_budget_update_builder(0) + .date(DateUtc::from_ymd(2020, 12, 25).unwrap()) + .category_id(0) + .build().unwrap(), + make_fake_budget_update_builder(1) + .date(DateUtc::from_ymd(2020, 12, 26).unwrap()) + .category_id(0) + .build().unwrap(), ]; - let _ = queries::categories::insert_categories(&categories, connection); let _ = queries::budget_updates::insert_budget_updates(&budget_updates, connection).unwrap(); let _ = queries::budget_updates::delete_all_budget_updates(connection).unwrap(); @@ -76,3 +180,77 @@ fn given_deleted_budget_updates_when_get_all_budget_updates_then_return_empty() assert_eq!(budget_updates_returned.len(), 0); } + +#[test] +fn given_no_budget_updates_when_get_first_with_date_then_return_none() { + let context = TestContext::new(); + let connection = &mut SqliteConnection::establish(&context.db_url).unwrap(); + + let first_with_date = queries::budget_updates::get_first_budget_update_with_date(&DateUtc::now(), connection).unwrap(); + + assert!(first_with_date.is_none()); +} + +#[test] +fn given_budget_update_when_get_first_with_date_then_return_budget_update() { + let context = TestContext::new(); + let connection = &mut SqliteConnection::establish(&context.db_url).unwrap(); + insert_prerequisite_data(connection); + let date: DateUtc = "2024-10-28".parse().unwrap(); + let budget_update = make_fake_budget_update_builder(0).date(date.clone()).build().unwrap(); + let _ = queries::budget_updates::insert_budget_updates(&[budget_update.clone()], connection).unwrap(); + + let first_with_date = queries::budget_updates::get_first_budget_update_with_date(&date, connection).unwrap(); + + assert!(first_with_date.is_some()); + assert_eq!(first_with_date.unwrap(), budget_update); +} + +#[test] +fn given_budget_update_when_get_first_with_different_date_then_return_none() { + let context = TestContext::new(); + let connection = &mut SqliteConnection::establish(&context.db_url).unwrap(); + insert_prerequisite_data(connection); + let date: DateUtc = "2024-10-28".parse().unwrap(); + let different_date: DateUtc = "2024-10-29".parse().unwrap(); + let budget_update = make_fake_budget_update_builder(0).date(date.clone()).build().unwrap(); + let _ = queries::budget_updates::insert_budget_updates(&[budget_update.clone()], connection).unwrap(); + + let first_with_date = queries::budget_updates::get_first_budget_update_with_date( + &different_date, + connection + ).unwrap(); + + assert!(first_with_date.is_none()); +} + +#[test] +fn given_many_budget_updates_when_get_first_with_date_then_return_any_with_date() { + let context = TestContext::new(); + let connection = &mut SqliteConnection::establish(&context.db_url).unwrap(); + insert_prerequisite_data(connection); + let budget_updates = [ + make_fake_budget_update_builder(0).date("2024-12-25".parse().unwrap()).build().unwrap(), + make_fake_budget_update_builder(1).date("2020-12-26".parse().unwrap()).build().unwrap(), + make_fake_budget_update_builder(2).date("2020-12-27".parse().unwrap()).build().unwrap(), + make_fake_budget_update_builder(3).date("2020-12-28".parse().unwrap()).build().unwrap(), + make_fake_budget_update_builder(4).date("2020-12-29".parse().unwrap()).build().unwrap(), + make_fake_budget_update_builder(5).date("2020-12-30".parse().unwrap()).build().unwrap(), + make_fake_budget_update_builder(6).date("2020-12-31".parse().unwrap()).build().unwrap(), + make_fake_budget_update_builder(7).date("2021-01-01".parse().unwrap()).build().unwrap(), + ]; + let _ = queries::budget_updates::insert_budget_updates(&budget_updates, connection).unwrap(); + + let first_with_date = queries::budget_updates::get_first_budget_update_with_date( + &"2024-12-25".parse().unwrap(), + connection, + ).unwrap(); + + assert!(first_with_date.is_some()); + assert_eq!(first_with_date.unwrap(), budget_updates[0]); +} + +#[test] +fn todo() { + todo!("test get_most_recent_with_category_id"); +} diff --git a/backend/core/tests/queries/categories.rs b/backend/core/tests/queries/categories.rs index 917536e..45ffe8e 100644 --- a/backend/core/tests/queries/categories.rs +++ b/backend/core/tests/queries/categories.rs @@ -56,3 +56,18 @@ fn given_deleted_categories_when_get_all_categories_then_return_empty() { assert_eq!(categories_returned.len(), 0); } + +#[test] +fn todo() { + todo!("test get_all_balances"); +} + +#[test] +fn todo2() { + todo!("test get_all_ids"); +} + +#[test] +fn todo3() { + todo!("test get_most_recent_per_category_id"); +} diff --git a/backend/core/tests/queries/category_transfers.rs b/backend/core/tests/queries/category_transfers.rs index d329d9c..80ec70f 100644 --- a/backend/core/tests/queries/category_transfers.rs +++ b/backend/core/tests/queries/category_transfers.rs @@ -76,3 +76,13 @@ fn given_deleted_category_transfers_when_get_all_category_transfers_then_return_ assert_eq!(category_transfers_returned.len(), 0); } + +#[test] +fn todo() { + todo!("test sum_quantity_per_from_category_id"); +} + +#[test] +fn todo2() { + todo!("test sum_quantity_per_from_category_id"); +} diff --git a/backend/core/tests/queries/transaction_categorisations.rs b/backend/core/tests/queries/transaction_categorisations.rs index 3c2171d..7e0e742 100644 --- a/backend/core/tests/queries/transaction_categorisations.rs +++ b/backend/core/tests/queries/transaction_categorisations.rs @@ -84,3 +84,9 @@ 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"); +} |
