diff options
| author | Joe Carstairs <me@joeac.net> | 2024-11-17 09:23:28 +0000 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2024-11-17 09:23:28 +0000 |
| commit | 1ae19eb3315c40e3f9062592c27fa76c11cf626c (patch) | |
| tree | 09d9ce380795971f4b50e1d4b0ca3c57c9e1db1a /rust/core/src/models/budget.rs | |
| parent | 1a494937021561595d0fb29e26fb707aef9e55de (diff) | |
Renames workspace folder
Diffstat (limited to 'rust/core/src/models/budget.rs')
| -rw-r--r-- | rust/core/src/models/budget.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/rust/core/src/models/budget.rs b/rust/core/src/models/budget.rs new file mode 100644 index 0000000..e6fb4c9 --- /dev/null +++ b/rust/core/src/models/budget.rs @@ -0,0 +1,42 @@ +use serde::Serialize; + +use super::budget_update::BudgetUpdate; + +#[derive(Clone, Copy, 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 crate::{models::date_utc::DateUtc, traits::nowlike::Nowlike}; + + 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: DateUtc::now(), + new_budget: quantity, + new_period: period, + }; + + let budget = Budget::from(&budget_update); + + assert_eq!(budget, Budget { quantity, period }); + } +} |
