use entity::*;
use entity_inmemory::InmemoryDatabase;
#[test]
fn produces_load_methods_that_pull_an_ent_out_of_a_database() {
#[derive(Clone, Ent, EntLoader)]
struct TestEnt {
#[ent(id)]
id: Id,
#[ent(database)]
database: WeakDatabaseRc,
#[ent(created)]
created: u64,
#[ent(last_updated)]
last_updated: u64,
}
entity::global::with_db(InmemoryDatabase::default(), || {
let _ = WeakDatabaseRc::upgrade(&entity::global::db())
.unwrap()
.insert(Box::new(TestEnt {
id: 123,
database: WeakDatabaseRc::new(),
created: 0,
last_updated: 0,
}))
.unwrap();
assert!(TestEnt::load(123).unwrap().is_some());
assert!(TestEnt::load_strict(123).is_ok());
assert!(TestEnt::load_from_db(entity::global::db(), 123)
.unwrap()
.is_some());
assert!(TestEnt::load_from_db_strict(entity::global::db(), 123).is_ok());
assert!(TestEnt::load(999).unwrap().is_none());
assert!(TestEnt::load_strict(999).is_err());
assert!(TestEnt::load_from_db(entity::global::db(), 999)
.unwrap()
.is_none());
assert!(TestEnt::load_from_db_strict(entity::global::db(), 999).is_err());
});
}