use serde::{Deserialize, Serialize};
use uuid::Uuid;
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct Wallet {
pub id: Uuid,
pub email: String,
pub address: String,
pub balance: f64,
pub transaction_hashes: Vec<String>,
}
impl Wallet {
pub fn new(email: &str, address: &str) -> Self {
Wallet {
id: Uuid::new_v4(),
email: email.to_string(),
address: address.to_string(),
balance: 0.0,
transaction_hashes: vec![],
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_new_wallet() {
let email = "email".to_string();
let address = "0x 1234".to_string();
let wallet = Wallet::new(&email, &address);
assert_eq!(wallet.id.get_version(), Some(uuid::Version::Random));
assert_eq!(wallet.email, email);
assert_eq!(wallet.address, address);
assert_eq!(wallet.balance, 0.0);
assert!(wallet.transaction_hashes.is_empty());
}
}