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