summaryrefslogtreecommitdiff
path: root/rust/core/tests/queries/budget_updates.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rust/core/tests/queries/budget_updates.rs')
-rw-r--r--rust/core/tests/queries/budget_updates.rs354
1 files changed, 0 insertions, 354 deletions
diff --git a/rust/core/tests/queries/budget_updates.rs b/rust/core/tests/queries/budget_updates.rs
deleted file mode 100644
index 6641b25..0000000
--- a/rust/core/tests/queries/budget_updates.rs
+++ /dev/null
@@ -1,354 +0,0 @@
-use budgeting_app_core::{models::{category::Category, 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 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
-}
-
-#[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 = given_categories(connection);
- let budget_updates = [
- 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 num_budget_updates_inserted = queries::budget_updates::insert_budget_updates(&budget_updates, connection).unwrap();
-
- assert_eq!(num_budget_updates_inserted, 2);
-}
-
-#[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();
- let _categories = given_categories(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();
- let _categories = given_categories(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();
- let _categories = given_categories(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 = given_categories(connection);
- let budget_updates = [
- 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::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)));
- }
- for budget_update_in_db in budget_updates_in_db {
- assert!(budget_updates.iter().any(|budget_update| budget_update.eq(&budget_update_in_db)));
- }
-}
-
-#[test]
-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 = given_categories(connection);
- let budget_updates = [
- 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::budget_updates::insert_budget_updates(&budget_updates, connection).unwrap();
-
- let num_budget_updates_deleted = queries::budget_updates::delete_all_budget_updates(connection).unwrap();
-
- assert_eq!(num_budget_updates_deleted, budget_updates.len());
-}
-
-#[test]
-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 = given_categories(connection);
- let budget_updates = [
- 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::budget_updates::insert_budget_updates(&budget_updates, connection).unwrap();
- let _ = queries::budget_updates::delete_all_budget_updates(connection).unwrap();
-
- let budget_updates_returned = queries::budget_updates::get_all_budget_updates(connection).unwrap();
-
- assert_eq!(budget_updates_returned.len(), 0);
-}
-
-#[test]
-fn given_no_categories_when_get_first_with_date_and_category_id_then_return_none() {
- let context = TestContext::new();
- let connection = &mut SqliteConnection::establish(&context.db_url).unwrap();
-
- let first_with_date_and_category_id =
- queries::budget_updates::get_first_budget_update_with_date_and_category_id(
- &DateUtc::now(),
- 0,
- connection,
- ).unwrap();
-
- assert!(first_with_date_and_category_id.is_none());
-}
-
-#[test]
-fn given_no_budget_updates_when_get_first_with_date_and_category_id_then_return_none() {
- let context = TestContext::new();
- let connection = &mut SqliteConnection::establish(&context.db_url).unwrap();
- let _categories = given_categories(connection);
-
- let first_with_date_and_category_id =
- queries::budget_updates::get_first_budget_update_with_date_and_category_id(
- &DateUtc::now(),
- 0,
- connection,
- ).unwrap();
-
- assert!(first_with_date_and_category_id.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();
- let _categories = given_categories(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_and_category_id =
- queries::budget_updates::get_first_budget_update_with_date_and_category_id(
- &date,
- 0,
- connection,
- ).unwrap();
-
- assert!(first_with_date_and_category_id.is_some());
- assert_eq!(first_with_date_and_category_id.unwrap(), budget_update);
-}
-
-#[test]
-fn given_budget_update_when_get_first_with_date_and_different_category_id_then_return_none() {
- let context = TestContext::new();
- let connection = &mut SqliteConnection::establish(&context.db_url).unwrap();
- let _categories = given_categories(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_and_category_id =
- queries::budget_updates::get_first_budget_update_with_date_and_category_id(
- &different_date,
- 2,
- connection
- ).unwrap();
-
- assert!(first_with_date_and_category_id.is_none());
-}
-
-#[test]
-fn given_budget_update_when_get_first_with_different_date_and_category_id_then_return_none() {
- let context = TestContext::new();
- let connection = &mut SqliteConnection::establish(&context.db_url).unwrap();
- let _categories = given_categories(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_and_category_id =
- queries::budget_updates::get_first_budget_update_with_date_and_category_id(
- &different_date,
- 0,
- connection
- ).unwrap();
-
- assert!(first_with_date_and_category_id.is_none());
-}
-
-#[test]
-fn given_many_budget_updates_when_get_first_with_date_and_category_id_then_return_any_with_date() {
- let context = TestContext::new();
- let connection = &mut SqliteConnection::establish(&context.db_url).unwrap();
- let _categories = given_categories(connection);
- let budget_updates = [
- make_fake_budget_update_builder(0).date("2024-12-25".parse().unwrap()).category_id(0).build().unwrap(),
- make_fake_budget_update_builder(1).date("2024-12-25".parse().unwrap()).category_id(1).build().unwrap(),
- make_fake_budget_update_builder(2).date("2020-12-26".parse().unwrap()).category_id(0).build().unwrap(),
- make_fake_budget_update_builder(3).date("2020-12-26".parse().unwrap()).category_id(1).build().unwrap(),
- make_fake_budget_update_builder(4).date("2020-12-27".parse().unwrap()).category_id(0).build().unwrap(),
- make_fake_budget_update_builder(5).date("2020-12-27".parse().unwrap()).category_id(1).build().unwrap(),
- ];
- let _ = queries::budget_updates::insert_budget_updates(&budget_updates, connection).unwrap();
-
- let first_with_date_and_category_id =
- queries::budget_updates::get_first_budget_update_with_date_and_category_id(
- &"2024-12-25".parse().unwrap(),
- 0,
- connection,
- ).unwrap();
-
- assert!(first_with_date_and_category_id.is_some());
- assert_eq!(first_with_date_and_category_id.unwrap(), budget_updates[0]);
-}
-
-#[test]
-fn given_many_budget_updates_when_get_most_recent_with_category_id_then_return_correct_date() {
- let context = TestContext::new();
- let connection = &mut SqliteConnection::establish(&context.db_url).unwrap();
- let _categories = given_categories(connection);
- let budget_updates = [
- make_fake_budget_update_builder(0)
- .category_id(0)
- .date("2024-12-25".parse().unwrap())
- .build().unwrap(),
- make_fake_budget_update_builder(1)
- .category_id(0)
- .date("2020-12-26".parse().unwrap())
- .build().unwrap(),
- make_fake_budget_update_builder(2)
- .category_id(1)
- .date("2020-12-27".parse().unwrap())
- .build().unwrap(),
- ];
- let _ = queries::budget_updates::insert_budget_updates(&budget_updates, connection).unwrap();
-
- let most_recent_with_category = queries::budget_updates::get_most_recent_budget_update_date_with_category_id(
- 0, connection,
- );
-
- assert!(most_recent_with_category.is_ok());
- let most_recent_with_category = most_recent_with_category.unwrap();
- assert!(most_recent_with_category .is_some());
- let most_recent_with_category = most_recent_with_category.unwrap();
- assert_eq!(most_recent_with_category, budget_updates[1].date);
-}
-
-#[test]
-fn given_budget_update_when_get_most_recent_with_different_category_id_then_return_none() {
- let context = TestContext::new();
- let connection = &mut SqliteConnection::establish(&context.db_url).unwrap();
- let _categories = given_categories(connection);
- let budget_updates = [
- make_fake_budget_update_builder(0)
- .category_id(1)
- .date("2020-12-27".parse().unwrap())
- .build().unwrap(),
- ];
- let _ = queries::budget_updates::insert_budget_updates(&budget_updates, connection).unwrap();
-
- let most_recent_with_category = queries::budget_updates::get_most_recent_budget_update_date_with_category_id(
- 0, connection,
- );
-
- assert!(most_recent_with_category.is_ok());
- let most_recent_with_category = most_recent_with_category.unwrap();
- assert!(most_recent_with_category .is_none());
-}