perf: compress anime requests and reuse AniList search metadata
This commit is contained in:
@@ -767,6 +767,52 @@ fn episode_launch_retains_checks_on_failure_and_clears_only_after_spawn() {
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn anilist_search_results_open_without_waiting_for_another_catalog_request() {
|
||||
let directory = Directory::new();
|
||||
let path = directory.0.join("config.toml");
|
||||
fs::write(&path, "").unwrap();
|
||||
let mut browser = Browser::new(
|
||||
Options::parse_from(["tubular", "--anilist", "Cowboy Bebop"]),
|
||||
path.clone(),
|
||||
config::Config::default(),
|
||||
State::open(&path).unwrap(),
|
||||
);
|
||||
let media = miruro_browser::catalog(vec![serde_json::json!({
|
||||
"id":"1", "catalog_provider":"anilist",
|
||||
"title":{"romaji":"Cowboy Bebop"}, "status":"FINISHED",
|
||||
"episode_count":26, "catalog_count":26, "description":"Search synopsis"
|
||||
})])
|
||||
.unwrap();
|
||||
browser.accept(browser.generation, Ok(Response::Catalog(media)));
|
||||
browser.pending = None;
|
||||
browser.key(KeyEvent::new(KeyCode::Enter, KeyModifiers::NONE));
|
||||
assert_eq!(
|
||||
browser.screen().selected_video().map(|video| video.id),
|
||||
Some("anilist:1:1".into()),
|
||||
"opening a complete search result must expose episodes immediately"
|
||||
);
|
||||
assert!(browser.pending.is_none());
|
||||
assert!(browser.screen().overview.contains("Search synopsis"));
|
||||
browser.select(Action::VideoLast);
|
||||
assert_eq!(
|
||||
browser.screen().selected_video().unwrap().id,
|
||||
"anilist:1:26"
|
||||
);
|
||||
|
||||
browser.refresh();
|
||||
assert!(
|
||||
matches!(&browser.pending, Some(Request::Episodes { media_id, .. }) if media_id == "1")
|
||||
);
|
||||
let refreshed = miruro_browser::anilist_series(serde_json::json!({
|
||||
"id":"1", "catalog_provider":"anilist", "title":{"romaji":"Cowboy Bebop"},
|
||||
"status":"FINISHED", "episode_count":27
|
||||
}))
|
||||
.unwrap();
|
||||
browser.accept(browser.generation, Ok(Response::Series(refreshed)));
|
||||
assert_eq!(browser.screen().len(), 27);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn anilist_unknown_count_allows_explicit_selection_and_provider_local_collections() {
|
||||
let directory = Directory::new();
|
||||
|
||||
Reference in New Issue
Block a user