55 lines
1.6 KiB
Rust
55 lines
1.6 KiB
Rust
use desi_explorer_api::store::CatalogStore;
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn load_parses_catalogs_and_objects() {
|
|
let json = r#"{
|
|
"catalogs": [
|
|
{"name":"edr","release":"EDR","description":"test","object_count":2}
|
|
],
|
|
"objects": [
|
|
{"id":"o1","catalog":"edr","object_type":"GALAXY","ra":1.5,"dec":2.5,"redshift":0.8}
|
|
]
|
|
}"#;
|
|
|
|
let dir = std::env::temp_dir().join(format!(
|
|
"desi_explorer_store_{}_{}",
|
|
std::process::id(),
|
|
line!()
|
|
));
|
|
std::fs::create_dir_all(&dir).unwrap();
|
|
let path = dir.join("data.json");
|
|
std::fs::write(&path, json).unwrap();
|
|
|
|
let store = CatalogStore::load(&path).unwrap();
|
|
let _ = std::fs::remove_dir_all(&dir);
|
|
|
|
assert_eq!(store.catalogs.len(), 1);
|
|
assert_eq!(store.catalogs[0].name, "edr");
|
|
assert_eq!(store.catalogs[0].object_count, Some(2));
|
|
assert_eq!(store.objects.len(), 1);
|
|
assert_eq!(store.objects[0].id, "o1");
|
|
assert_eq!(store.objects[0].ra, 1.5);
|
|
}
|
|
|
|
#[test]
|
|
fn load_rejects_malformed_json() {
|
|
let dir = std::env::temp_dir().join(format!(
|
|
"desi_explorer_store_{}_{}",
|
|
std::process::id(),
|
|
line!()
|
|
));
|
|
std::fs::create_dir_all(&dir).unwrap();
|
|
let path = dir.join("data.json");
|
|
std::fs::write(&path, "not json").unwrap();
|
|
|
|
let result = CatalogStore::load(&path);
|
|
let _ = std::fs::remove_dir_all(&dir);
|
|
|
|
assert!(result.is_err());
|
|
}
|
|
}
|