meowy-webring/crates/shared/src/tests.rs

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(())
}