40 lines
1006 B
Rust
40 lines
1006 B
Rust
use crate::{
|
|
errors::Error,
|
|
names::{load_names, read_names_file},
|
|
};
|
|
use std::{env, error};
|
|
|
|
#[test]
|
|
fn test_name_parsing() -> Result<(), Error> {
|
|
let names =
|
|
load_names(r#"[{"url": "sus.com", "name": "sussy"}, {"url": "sussy.com", "name": null}]"#)?;
|
|
|
|
assert_eq!(names.len(), 2);
|
|
assert_eq!(names[0].url, "sus.com");
|
|
assert_eq!(names[0].name.as_ref().unwrap(), "sussy");
|
|
assert_eq!(names[1].url, "sussy.com");
|
|
assert!(names[1].name.is_none());
|
|
|
|
Ok(())
|
|
}
|
|
|
|
#[test]
|
|
fn test_invalid_parsing() {
|
|
let no_url_field = load_names(r#"[{"name":""}]"#);
|
|
let no_fields = load_names(r#"[{}]"#);
|
|
let trailing_array = load_names("[");
|
|
|
|
assert!(no_url_field.is_err());
|
|
assert!(no_fields.is_err());
|
|
assert!(trailing_array.is_err());
|
|
}
|
|
|
|
#[test]
|
|
fn reading_a_non_existent_names_file() -> Result<(), Box<dyn error::Error>> {
|
|
let temp_file = env::temp_dir().join("meowy-test-names.json");
|
|
let contents = read_names_file(&temp_file)?;
|
|
assert_eq!(contents, "[]");
|
|
std::fs::remove_file(temp_file)?;
|
|
Ok(())
|
|
}
|