Added tests.
This commit is contained in:
1 parent
509794f02d
commit
0a31f89501
2 files changed
+44
-2
No files matched your search
+43
-2
@@ -59,6 +59,7 @@ impl Clone for AccountType {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Account {
|
||||
id: i64,
|
||||
amount: i64,
|
||||
@@ -413,7 +414,7 @@ pub fn get_number_of_accounts(tx: &Connection,
|
||||
pub fn get_security_market_cap(tx: &Connection,
|
||||
sec: &SecurityId) -> CustomResult<i64> {
|
||||
let q = "
|
||||
SELECT -1 * SUM(amount) AS count
|
||||
SELECT COALESCE(-1 * SUM(amount), 0) AS count
|
||||
FROM accounts
|
||||
WHERE security = ?
|
||||
AND account_type = ?
|
||||
@@ -424,6 +425,7 @@ pub fn get_security_market_cap(tx: &Connection,
|
||||
|
||||
#[cfg(test)]
|
||||
mod test_accounts {
|
||||
use apache_avro::Schema::String;
|
||||
use rusqlite::{Connection, Transaction};
|
||||
use serde_json::to_string;
|
||||
|
||||
@@ -445,7 +447,7 @@ mod test_accounts {
|
||||
}
|
||||
|
||||
fn create_all_accounts(
|
||||
tx: &Transaction,
|
||||
tx: &Connection,
|
||||
users: &Vec<User>,
|
||||
secs: &Vec<Security>,
|
||||
) -> CustomResult<Vec<Account>> {
|
||||
@@ -608,4 +610,43 @@ mod test_accounts {
|
||||
assert_eq!(res.len(), 2);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_get_number_of_accounts() -> CustomResult<()> {
|
||||
let (mut conn, users, secs) = setup();
|
||||
create_all_accounts(&conn, &users, &secs)?;
|
||||
let n = get_number_of_accounts(&conn, &secs.get(0).unwrap().id(), AccountType::Checking)?;
|
||||
assert_eq!(n, 2);
|
||||
|
||||
let n = get_number_of_accounts(&conn, &secs.get(0).unwrap().id(), AccountType::SecurityEmitter)?;
|
||||
assert_eq!(n, 0);
|
||||
|
||||
create_security_emitter_account(&conn, &secs.get(0).unwrap().id(), &users.get(0).unwrap().id(), &"".to_string())?;
|
||||
let n = get_number_of_accounts(&conn, &secs.get(0).unwrap().id(), AccountType::SecurityEmitter)?;
|
||||
assert_eq!(n, 1);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_get_security_market_cap() -> CustomResult<()> {
|
||||
let (mut conn, users, secs) = setup();
|
||||
let accounts = create_all_accounts(&conn, &users, &secs.get(0..1).unwrap().to_vec())?;
|
||||
let sec_id = &secs.get(0).unwrap().id();
|
||||
let sec_emitter = create_security_emitter_account(&conn, sec_id, &users.get(0).unwrap().id(), &"".to_string())?;
|
||||
|
||||
let n = get_security_market_cap(&conn, sec_id)?;
|
||||
assert_eq!(n, 0);
|
||||
|
||||
add_to_account(&conn, &accounts.get(0).unwrap().id(), 800)?;
|
||||
|
||||
// markcap is ONLY based on security emitter accounts
|
||||
let n = get_security_market_cap(&conn, sec_id)?;
|
||||
assert_eq!(n, 0);
|
||||
|
||||
add_to_account(&conn, &sec_emitter.id(), -800)?;
|
||||
let n = get_security_market_cap(&conn, sec_id)?;
|
||||
assert_eq!(n, 800);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user