summaryrefslogtreecommitdiff
path: root/backend/core/tests
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2024-10-30 07:27:13 +0000
committerJoe Carstairs <me@joeac.net>2024-10-30 08:50:45 +0000
commit828b9ae9f6217f7e5e97ec704134c786dd401bad (patch)
treec920b8874682e89ba05b6e1ca20275bfd5878d87 /backend/core/tests
parent6e9f0069f5d1e4cfbf7f9feb8536795a78c818f6 (diff)
Separates date_utc and datetime_utc
Diffstat (limited to 'backend/core/tests')
-rw-r--r--backend/core/tests/common/fakes/account.rs4
-rw-r--r--backend/core/tests/common/fakes/budget_update.rs4
-rw-r--r--backend/core/tests/common/fakes/transaction.rs4
-rw-r--r--backend/core/tests/models/date_time_utc.rs59
-rw-r--r--backend/core/tests/models/date_utc.rs60
-rw-r--r--backend/core/tests/models/datetime_utc.rs60
-rw-r--r--backend/core/tests/models/mod.rs3
-rw-r--r--backend/core/tests/queries/budget_updates.rs212
-rw-r--r--backend/core/tests/queries/categories.rs15
-rw-r--r--backend/core/tests/queries/category_transfers.rs10
-rw-r--r--backend/core/tests/queries/transaction_categorisations.rs6
11 files changed, 354 insertions, 83 deletions
diff --git a/backend/core/tests/common/fakes/account.rs b/backend/core/tests/common/fakes/account.rs
index e915aed..38422bf 100644
--- a/backend/core/tests/common/fakes/account.rs
+++ b/backend/core/tests/common/fakes/account.rs
@@ -1,10 +1,10 @@
-use budgeting_app_core::models::{account::Account, date_time_utc::DateTimeUtc};
+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(),
+ opening_date: DatetimeUtc::now(),
}
}
diff --git a/backend/core/tests/common/fakes/budget_update.rs b/backend/core/tests/common/fakes/budget_update.rs
index e7ee9b9..f27360f 100644
--- a/backend/core/tests/common/fakes/budget_update.rs
+++ b/backend/core/tests/common/fakes/budget_update.rs
@@ -1,4 +1,4 @@
-use budgeting_app_core::models::{budget_update::{BudgetUpdate, BudgetUpdateBuilder}, date_time_utc::DateTimeUtc};
+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()
@@ -9,7 +9,7 @@ pub fn make_fake_budget_update_builder(id: i32) -> BudgetUpdateBuilder {
builder
.id(id)
.category_id(0)
- .date(DateTimeUtc::now())
+ .date(DateUtc::now())
.new_budget(0)
.new_period(0);
builder
diff --git a/backend/core/tests/common/fakes/transaction.rs b/backend/core/tests/common/fakes/transaction.rs
index d113ce5..88a9a71 100644
--- a/backend/core/tests/common/fakes/transaction.rs
+++ b/backend/core/tests/common/fakes/transaction.rs
@@ -1,4 +1,4 @@
-use budgeting_app_core::models::{date_time_utc::DateTimeUtc, transaction::{Transaction, TransactionBuilder}};
+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()
@@ -11,7 +11,7 @@ pub fn make_fake_transaction_builder(id: i32) -> TransactionBuilder {
.description(String::from("Fake category transfer"))
.payee(String::from("Fake payee"))
.quantity(0)
- .date(DateTimeUtc::now())
+ .date(DatetimeUtc::now())
.account_id(0);
builder
}
diff --git a/backend/core/tests/models/date_time_utc.rs b/backend/core/tests/models/date_time_utc.rs
deleted file mode 100644
index 1f86968..0000000
--- a/backend/core/tests/models/date_time_utc.rs
+++ /dev/null
@@ -1,59 +0,0 @@
-use anyhow::Result;
-use budgeting_app_core::models::date_time_utc::DateTimeUtc;
-use diesel::{sql_query, Connection, ExpressionMethods, QueryDsl, RunQueryDsl, Selectable, SelectableHelper, SqliteConnection};
-use diesel::prelude::{Insertable, Queryable};
-
-use crate::common::test_context::TestContext;
-
-diesel::table! {
- date_time_utc_test (id) {
- id -> Integer,
- date_time_utc -> Text,
- }
-}
-
-#[derive(Insertable, Queryable, Selectable, Clone)]
-#[diesel(table_name = date_time_utc_test)]
-pub struct DateTimeUtcTest {
- pub id: i32,
- pub date_time_utc: DateTimeUtc,
-}
-
-fn new_test_context() -> Result<TestContext> {
- let test_context = TestContext::new();
- let connection = &mut SqliteConnection::establish(&test_context.db_url)?;
- let query = "CREATE TABLE date_time_utc_test(id INTEGER PRIMARY KEY, date_time_utc TEXT);";
- sql_query(query).execute(connection)?;
- Ok(test_context)
-}
-
-fn insert_date_time_utc(id: i32, date_time_utc: &DateTimeUtc, connection: &mut SqliteConnection) -> Result<usize> {
- let model = DateTimeUtcTest {
- id,
- date_time_utc: date_time_utc.clone(),
- };
- let num_rows_inserted = diesel::insert_into(date_time_utc_test::dsl::date_time_utc_test)
- .values(&[model])
- .execute(connection)?;
- Ok(num_rows_inserted)
-}
-
-fn get_date_time_utc(id: i32, connection: &mut SqliteConnection) -> Result<DateTimeUtcTest> {
- let date_time_utc: Vec<DateTimeUtcTest> = date_time_utc_test::dsl::date_time_utc_test
- .select(DateTimeUtcTest::as_select())
- .filter(date_time_utc_test::id.eq(id))
- .load(connection)?;
- Ok(date_time_utc[0].clone())
-}
-
-#[test]
-fn when_insert_date_time_utc_and_select_then_returns_original_value() -> Result<()> {
- let date_time_utc = DateTimeUtc::now();
- let test_context = new_test_context()?;
- let connection = &mut SqliteConnection::establish(&test_context.db_url)?;
- let num_rows_inserted = insert_date_time_utc(0, &date_time_utc, connection)?;
- assert_eq!(num_rows_inserted, 1);
- let date_time_utc_returned = get_date_time_utc(0, connection)?;
- assert_eq!(date_time_utc_returned.date_time_utc.to_date_str(), date_time_utc.to_date_str());
- Ok(())
-}
diff --git a/backend/core/tests/models/date_utc.rs b/backend/core/tests/models/date_utc.rs
new file mode 100644
index 0000000..40f8c36
--- /dev/null
+++ b/backend/core/tests/models/date_utc.rs
@@ -0,0 +1,60 @@
+use anyhow::Result;
+use budgeting_app_core::models::date_utc::DateUtc;
+use budgeting_app_core::traits::nowlike::Nowlike;
+use diesel::{sql_query, Connection, ExpressionMethods, QueryDsl, RunQueryDsl, Selectable, SelectableHelper, SqliteConnection};
+use diesel::prelude::{Insertable, Queryable};
+
+use crate::common::test_context::TestContext;
+
+diesel::table! {
+ date_utc_test (id) {
+ id -> Integer,
+ date_utc -> Text,
+ }
+}
+
+#[derive(Insertable, Queryable, Selectable, Clone)]
+#[diesel(table_name = date_utc_test)]
+pub struct DateUtcTest {
+ pub id: i32,
+ pub date_utc: DateUtc,
+}
+
+fn new_test_context() -> Result<TestContext> {
+ let test_context = TestContext::new();
+ let connection = &mut SqliteConnection::establish(&test_context.db_url)?;
+ let query = "CREATE TABLE date_utc_test(id INTEGER PRIMARY KEY, date_utc TEXT);";
+ sql_query(query).execute(connection)?;
+ Ok(test_context)
+}
+
+fn insert_date_utc(id: i32, date_utc: &DateUtc, connection: &mut SqliteConnection) -> Result<usize> {
+ let model = DateUtcTest {
+ id,
+ date_utc: date_utc.clone(),
+ };
+ let num_rows_inserted = diesel::insert_into(date_utc_test::dsl::date_utc_test)
+ .values(&[model])
+ .execute(connection)?;
+ Ok(num_rows_inserted)
+}
+
+fn get_date_utc(id: i32, connection: &mut SqliteConnection) -> Result<DateUtcTest> {
+ let date_utc: Vec<DateUtcTest> = date_utc_test::dsl::date_utc_test
+ .select(DateUtcTest::as_select())
+ .filter(date_utc_test::id.eq(id))
+ .load(connection)?;
+ Ok(date_utc[0].clone())
+}
+
+#[test]
+fn when_insert_date_utc_and_select_then_returns_original_value() -> Result<()> {
+ let date_utc = DateUtc::now();
+ let test_context = new_test_context()?;
+ let connection = &mut SqliteConnection::establish(&test_context.db_url)?;
+ let num_rows_inserted = insert_date_utc(0, &date_utc, connection)?;
+ assert_eq!(num_rows_inserted, 1);
+ let date_utc_returned = get_date_utc(0, connection)?;
+ assert_eq!(date_utc_returned.date_utc, date_utc);
+ Ok(())
+}
diff --git a/backend/core/tests/models/datetime_utc.rs b/backend/core/tests/models/datetime_utc.rs
new file mode 100644
index 0000000..7029429
--- /dev/null
+++ b/backend/core/tests/models/datetime_utc.rs
@@ -0,0 +1,60 @@
+use anyhow::Result;
+use budgeting_app_core::models::datetime_utc::DatetimeUtc;
+use budgeting_app_core::traits::nowlike::Nowlike;
+use diesel::{sql_query, Connection, ExpressionMethods, QueryDsl, RunQueryDsl, Selectable, SelectableHelper, SqliteConnection};
+use diesel::prelude::{Insertable, Queryable};
+
+use crate::common::test_context::TestContext;
+
+diesel::table! {
+ datetime_utc_test (id) {
+ id -> Integer,
+ datetime_utc -> Text,
+ }
+}
+
+#[derive(Insertable, Queryable, Selectable, Clone)]
+#[diesel(table_name = datetime_utc_test)]
+pub struct DatetimeUtcTest {
+ pub id: i32,
+ pub datetime_utc: DatetimeUtc,
+}
+
+fn new_test_context() -> Result<TestContext> {
+ let test_context = TestContext::new();
+ let connection = &mut SqliteConnection::establish(&test_context.db_url)?;
+ let query = "CREATE TABLE datetime_utc_test(id INTEGER PRIMARY KEY, datetime_utc TEXT);";
+ sql_query(query).execute(connection)?;
+ Ok(test_context)
+}
+
+fn insert_datetime_utc(id: i32, datetime_utc: &DatetimeUtc, connection: &mut SqliteConnection) -> Result<usize> {
+ let model = DatetimeUtcTest {
+ id,
+ datetime_utc: datetime_utc.clone(),
+ };
+ let num_rows_inserted = diesel::insert_into(datetime_utc_test::dsl::datetime_utc_test)
+ .values(&[model])
+ .execute(connection)?;
+ Ok(num_rows_inserted)
+}
+
+fn get_datetime_utc(id: i32, connection: &mut SqliteConnection) -> Result<DatetimeUtcTest> {
+ let datetime_utc: Vec<DatetimeUtcTest> = datetime_utc_test::dsl::datetime_utc_test
+ .select(DatetimeUtcTest::as_select())
+ .filter(datetime_utc_test::id.eq(id))
+ .load(connection)?;
+ Ok(datetime_utc[0].clone())
+}
+
+#[test]
+fn when_insert_datetime_utc_and_select_then_returns_original_value() -> Result<()> {
+ let datetime_utc = DatetimeUtc::now();
+ let test_context = new_test_context()?;
+ let connection = &mut SqliteConnection::establish(&test_context.db_url)?;
+ let num_rows_inserted = insert_datetime_utc(0, &datetime_utc, connection)?;
+ assert_eq!(num_rows_inserted, 1);
+ let datetime_utc_returned = get_datetime_utc(0, connection)?;
+ assert_eq!(datetime_utc_returned.datetime_utc, datetime_utc);
+ Ok(())
+}
diff --git a/backend/core/tests/models/mod.rs b/backend/core/tests/models/mod.rs
index 5837dcd..d0d0e4a 100644
--- a/backend/core/tests/models/mod.rs
+++ b/backend/core/tests/models/mod.rs
@@ -1 +1,2 @@
-mod date_time_utc;
+mod date_utc;
+mod datetime_utc;
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");
+}