diff options
| author | Joe Carstairs <me@joeac.net> | 2024-11-17 12:16:19 +0000 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2024-11-17 12:20:48 +0000 |
| commit | 99fa72e2b9d572e00cd232bd55a3fa24722c3134 (patch) | |
| tree | 6b50ce600fffa07a0c21b7f14d2447fe5ac3c2ed /rust/schist_models/src/budget.rs | |
| parent | 10f071447594f2bdcec84a461df9ad648f71f44b (diff) | |
Refactors workspace
Diffstat (limited to 'rust/schist_models/src/budget.rs')
| -rw-r--r-- | rust/schist_models/src/budget.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/rust/schist_models/src/budget.rs b/rust/schist_models/src/budget.rs new file mode 100644 index 0000000..03261e5 --- /dev/null +++ b/rust/schist_models/src/budget.rs @@ -0,0 +1,43 @@ +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::date_utc::DateUtc; + use schist_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 }); + } +} |
