use crate::schema::players; use crate::serde_derive::Serialize; use crate::*; #[derive(Debug, Queryable, Serialize)] pub struct Player { id: i32, name: String, debt: i32, cp: i32, sp: i32, gp: i32, pp: i32, } #[derive(Insertable)] #[table_name = "players"] pub struct NewPlayer<'a> { name: &'a str, cp: i32, sp: i32, gp: i32, pp: i32, } impl<'a> NewPlayer<'a> { fn new(name: &'a str, wealth: Option<(i32, i32, i32, i32)>) -> Self { let (cp, sp, gp, pp) = wealth.unwrap_or((0, 0, 0, 0)); NewPlayer { name, cp, sp, gp, pp, } } fn insert(&self) -> Result<(), ()> { Err(()) } } #[cfg(test)] mod tests { use super::*; use crate::tests; #[test] fn new_player_only_with_name() { let n = NewPlayer::new("Féfi", None); assert_eq!(n.name, "Féfi"); assert_eq!(n.cp, 0); assert_eq!(n.sp, 0); assert_eq!(n.gp, 0); assert_eq!(n.pp, 0); } #[test] fn new_player_with_wealth() { let initial_wealth = (1, 2, 3, 4); let n = NewPlayer::new("Féfi", Some(initial_wealth)); assert_eq!(initial_wealth, (n.cp, n.sp, n.gp, n.pp)); } }