diff options
| author | Joe Carstairs <me@joeac.net> | 2024-10-16 18:22:55 +0100 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2024-10-17 06:55:02 +0100 |
| commit | 7adaace61a4fe983eba5ded3aaaf624ce6fb9014 (patch) | |
| tree | 6e0697f9dbb6e249c60af5a92479a86316c55221 /backend/core/src/models/budget.rs | |
| parent | 27b95c9186bd45edd4c982a7cc89cf69cf2c5d46 (diff) | |
Refactors some backend stuff to core lib
Diffstat (limited to 'backend/core/src/models/budget.rs')
| -rw-r--r-- | backend/core/src/models/budget.rs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/backend/core/src/models/budget.rs b/backend/core/src/models/budget.rs new file mode 100644 index 0000000..cc18f2e --- /dev/null +++ b/backend/core/src/models/budget.rs @@ -0,0 +1,44 @@ +use serde::Serialize; + +use super::budget_update::BudgetUpdate; + +#[derive(Debug, Eq, PartialEq, Serialize)] +pub struct Budget { + pub quantity: i32, + pub period: i32, +} + +impl From<&BudgetUpdate> for Budget { + fn from(budget_update: &BudgetUpdate) -> Self { + Self { + quantity: budget_update.new_budget, + period: budget_update.new_period, + } + } +} + +#[cfg(test)] +mod test { + use chrono::Utc; + + use crate::models::date_time_utc::DateTimeUtc; + + use super::*; + + #[test] + fn when_from_budget_update_then_returns_budget() { + let quantity = 2; + let period = 3; + let budget_update = BudgetUpdate { + id: 0, + category_id: 1, + date: DateTimeUtc::new(Utc::now()), + new_budget: quantity, + new_period: period, + }; + + let budget = Budget::from(&budget_update); + + assert_eq!(budget, Budget { quantity, period }); + } +} |
