use vn::CharacterField::{
Description, ImageUrl, Name, Original, VisualNovelAliases, VisualNovelAltTitle, VisualNovelTitle,
};
use vn::{CharacterId, Vndb};
const YUKARI: &str = "Kaburagi Yukari";
const YUKARI_JP: &str = "鏑木 紫";
const YUKARI_ID: u32 = 81501;
#[tokio::test]
async fn get_character() {
let vndb = Vndb::new();
let filters = r#"["id", "=", "c81501"]"#;
let character = vndb
.post()
.character()
.filters(filters.try_into().unwrap())
.fields([
Name,
Original,
ImageUrl,
Description,
VisualNovelAliases,
VisualNovelAltTitle,
VisualNovelTitle,
])
.results(5)
.send()
.await
.unwrap();
let character = character
.iter()
.find(|it| {
it.name
.as_deref()
.unwrap()
.eq_ignore_ascii_case(YUKARI)
})
.unwrap();
let name = character.name.as_deref().unwrap();
assert_eq!(character.id, CharacterId::from(YUKARI_ID));
assert!(name.eq_ignore_ascii_case(YUKARI));
assert_eq!(character.original.as_deref(), Some(YUKARI_JP));
}
#[tokio::test]
async fn find_character() {
let character = Vndb::new()
.find_character(YUKARI_ID)
.fields([Name, Original])
.send()
.await
.unwrap()
.swap_remove(0);
assert_eq!(character.id, CharacterId::from(YUKARI_ID));
assert_eq!(character.name.as_deref(), Some(YUKARI));
assert_eq!(character.original.as_deref(), Some(YUKARI_JP));
}
#[tokio::test]
async fn search_character() {
let character = Vndb::new()
.search_character(YUKARI.to_ascii_uppercase())
.fields([Name, Original])
.send()
.await
.unwrap()
.into_iter()
.find(|it| it.id == CharacterId::from(YUKARI_ID))
.unwrap();
assert_eq!(character.name.as_deref(), Some(YUKARI));
assert_eq!(character.original.as_deref(), Some(YUKARI_JP));
}