Files
escarmouche/src/db/_test_utils.rs
T
2023-01-25 12:50:16 -05:00

55 lines
2.0 KiB
Rust

use rusqlite::{Result, Transaction};
use crate::db::{_securities, _users};
use crate::db::_accounts::create_checking_account;
use crate::db::_external_id::UserId;
use crate::db::_securities::{NewSecurity, Security, SecurityType};
use crate::db::_users::User;
use crate::db::accounts::Account;
use crate::util::CustomResult;
pub fn mock_currency_1() -> NewSecurity {
return NewSecurity {
security_type: SecurityType::Currency,
symbol: "P".to_string(),
name: "piastre".to_string(),
};
}
pub fn mock_currency_2() -> NewSecurity {
return NewSecurity {
security_type: SecurityType::Bond,
symbol: "B".to_string(),
name: "bong".to_string(),
};
}
pub fn setup_users(tx: &Transaction) -> Result<Vec<User>> {
let user_1 = _users::create_user(tx, &"bernard".to_string(), &"123".to_string())?;
let user_2 = _users::create_user(tx, &"sam".to_string(), &"abc".to_string())?;
return Ok(vec![user_1, user_2]);
}
pub fn setup_securities(tx: &Transaction, _owner: &UserId) -> Result<Vec<Security>> {
let sec_1 = _securities::create_security(tx, &mock_currency_1())?;
let sec_2 = _securities::create_security(tx, &mock_currency_2())?;
return Ok(vec![sec_1, sec_2]);
}
pub fn setup_users_and_securities(tx: &Transaction) -> Result<(Vec<User>, Vec<Security>)> {
let users = setup_users(tx)?;
let securities = setup_securities(tx, &users.get(0).unwrap().id())?;
Ok((users, securities))
}
pub fn setup_basic_environment(tx: &Transaction) -> CustomResult<(Vec<User>, Vec<Security>, Vec<Account>)> {
let (users, securities) = setup_users_and_securities(tx).unwrap();
let acc1 = create_checking_account(tx,
&securities.get(0).unwrap().id(),
&users.get(0).unwrap().id())?;
let acc2 = create_checking_account(tx,
&securities.get(1).unwrap().id(),
&users.get(1).unwrap().id())?;
Ok((users, securities, vec![acc1, acc2]))
}