use std::sync::LazyLock;
use vn_core::StaffField::*;
use vn_core::{Language, StaffGender, StaffId, Vndb};
const SUMIRE: &str = "Uesaka Sumire";
static SUMIRE_ID: LazyLock<StaffId> = LazyLock::new(|| {
let id = format!("{}{}", StaffId::PREFIX, 4466);
StaffId::new(&id).unwrap()
});
#[tokio::test]
async fn get_staff() {
let vndb = Vndb::new();
let filters = r#"["id", "=", "s4466"]"#;
let results = vndb
.post()
.staff()
.filters(filters.try_into().unwrap())
.fields([Name, Lang, Gender, IsMain])
.results(5)
.send()
.await
.unwrap()
.results;
let staff = results
.iter()
.find(|staff| staff.ismain.unwrap_or(false))
.unwrap();
let name = staff.name.as_deref().unwrap();
let lang = staff.lang.as_ref().unwrap();
let gender = staff.gender.as_ref().unwrap();
assert_eq!(&staff.id, &*SUMIRE_ID);
assert!(name.eq_ignore_ascii_case(SUMIRE));
assert_eq!(lang, &Language::Japanese);
assert_eq!(gender, &StaffGender::Female);
}
#[tokio::test]
async fn find_staff() {
let staff = Vndb::new()
.find_staff(&*SUMIRE_ID)
.fields([Name, Lang, Gender, IsMain])
.send()
.await
.unwrap()
.results
.pop_front()
.unwrap();
assert_eq!(&staff.id, &*SUMIRE_ID);
assert_eq!(staff.name.as_deref(), Some(SUMIRE));
assert_eq!(staff.lang, Some(Language::Japanese));
}
#[tokio::test]
async fn search_staff() {
let staff = Vndb::new()
.search_staff(SUMIRE.to_ascii_lowercase())
.fields([Name, Lang, Gender, IsMain])
.send()
.await
.unwrap()
.results
.pop_front()
.unwrap();
assert_eq!(&staff.id, &*SUMIRE_ID);
assert_eq!(staff.name.as_deref(), Some(SUMIRE));
assert_eq!(staff.lang, Some(Language::Japanese));
}