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 }); } }