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