From f6cb3397ff0157f5cebf39cf1f3538db1ff34323 Mon Sep 17 00:00:00 2001 From: Mingwei Samuel Date: Sat, 20 Apr 2024 20:46:24 -0700 Subject: [PATCH] test: rearrange, add Valorant tests --- riven/tests/tests_val_latam.rs | 58 ++-------------------- riven/tests/tests_val_match_latam_na_br.rs | 25 ++++++++++ riven/tests/testutils.rs | 52 +++++++++++++++++++ 3 files changed, 81 insertions(+), 54 deletions(-) create mode 100644 riven/tests/tests_val_match_latam_na_br.rs diff --git a/riven/tests/tests_val_latam.rs b/riven/tests/tests_val_latam.rs index 1047e62..2e0427f 100644 --- a/riven/tests/tests_val_latam.rs +++ b/riven/tests/tests_val_latam.rs @@ -1,62 +1,12 @@ +/// Non-match Valorant tests for LATAM. + mod testutils; use riven::consts::*; -use testutils::{riot_api, riven_test, val_match_v1_latest}; +use testutils::{riven_test, val_content_ranked}; const ROUTE: ValPlatformRoute = ValPlatformRoute::LATAM; #[riven_test] async fn val_content_ranked_test() -> Result<(), String> { - let p = riot_api() - .val_content_v1() - .get_content(ROUTE, Some("zh-CN")); - let contents = p - .await - .map_err(|e| format!("Failed to get content: {}", e))?; - - // Find the LAST active act, via `.rev().find(...)`. - // Added filter when parent id is 0000... as there are multiple that are active, the last active seems to be episode 5 - // Not sure if this a bandaid fix - let act = contents - .acts - .iter() - .rev() - .find(|act| { - act.is_active - && act.parent_id != Some("00000000-0000-0000-0000-000000000000".to_string()) - }) - .ok_or(format!("No active acts of {} found.", contents.acts.len()))?; - - println!("ACT {:?}", act); - - let p = riot_api() - .val_ranked_v1() - .get_leaderboard(ROUTE, &act.id, None, None); - let leaderboard = p.await.map_err(|e| e.to_string())?.ok_or(format!( - "Failed to get act leaderboard {} {}.", - act.id, act.name - ))?; - - rassert_eq!(act.id, leaderboard.act_id); - - for (i, p) in leaderboard.players.iter().take(10).enumerate() { - rassert_eq!(i + 1, p.leaderboard_rank as usize); - println!( - "{:>2}: {:>4} {:<22} ({} wins)", - p.leaderboard_rank, - p.ranked_rating, - format!( - "{}#{}", - p.game_name.as_deref().unwrap_or(""), - p.tag_line.as_deref().unwrap_or("") - ), - p.number_of_wins - ); - } - - Ok(()) -} - -#[riven_test] -async fn val_match_v1_latest_test() -> Result<(), String> { - val_match_v1_latest(ROUTE).await + val_content_ranked(ROUTE).await } diff --git a/riven/tests/tests_val_match_latam_na_br.rs b/riven/tests/tests_val_match_latam_na_br.rs new file mode 100644 index 0000000..4a38926 --- /dev/null +++ b/riven/tests/tests_val_match_latam_na_br.rs @@ -0,0 +1,25 @@ +mod testutils; +use riven::consts::*; +use testutils::{riven_test, val_content_ranked, val_match_v1_get, val_match_v1_latest}; + +const ROUTE: ValPlatformRoute = ValPlatformRoute::NA; + +static MATCHES: &[&str] = &[ + "b979be9e-aeb1-419e-981d-d7d2472649a2", + "c086129c-e538-43cf-ae93-7148d0d01182", +]; + +#[riven_test] +async fn val_match_v1_get_test() -> Result<(), String> { + val_match_v1_get(ROUTE, MATCHES).await +} + +#[riven_test] +async fn val_content_ranked_test() -> Result<(), String> { + val_content_ranked(ROUTE).await +} + +#[riven_test] +async fn val_match_v1_latest_test() -> Result<(), String> { + val_match_v1_latest(ROUTE).await +} diff --git a/riven/tests/testutils.rs b/riven/tests/testutils.rs index ca75b35..c557d01 100644 --- a/riven/tests/testutils.rs +++ b/riven/tests/testutils.rs @@ -380,6 +380,58 @@ pub async fn spectator_tft_v5_combo(route: PlatformRoute) -> Result<(), String> Ok(()) } +/// Test getting a ranked leaderboard. +pub async fn val_content_ranked(route: ValPlatformRoute) -> Result<(), String> { + let p = riot_api() + .val_content_v1() + .get_content(route, Some("zh-CN")); // Idk + let contents = p + .await + .map_err(|e| format!("Failed to get content: {}", e))?; + + // Find the LAST active act, via `.rev().find(...)`. + // Added filter when parent id is 0000... as there are multiple that are active, the last active seems to be episode 5 + // Not sure if this a bandaid fix + let act = contents + .acts + .iter() + .rev() + .find(|act| { + act.is_active + && act.parent_id != Some("00000000-0000-0000-0000-000000000000".to_string()) + }) + .ok_or(format!("No active acts of {} found.", contents.acts.len()))?; + + println!("ACT {:?}", act); + + let p = riot_api() + .val_ranked_v1() + .get_leaderboard(route, &act.id, None, None); + let leaderboard = p.await.map_err(|e| e.to_string())?.ok_or(format!( + "Failed to get act leaderboard {} {}.", + act.id, act.name + ))?; + + rassert_eq!(act.id, leaderboard.act_id); + + for (i, p) in leaderboard.players.iter().take(10).enumerate() { + rassert_eq!(i + 1, p.leaderboard_rank as usize); + println!( + "{:>2}: {:>4} {:<22} ({} wins)", + p.leaderboard_rank, + p.ranked_rating, + format!( + "{}#{}", + p.game_name.as_deref().unwrap_or(""), + p.tag_line.as_deref().unwrap_or("") + ), + p.number_of_wins + ); + } + + Ok(()) +} + /// Get recent Challenger matches and check that they parse as valid. pub async fn val_match_v1_latest(route: ValPlatformRoute) -> Result<(), String> { // Val rate limits are super low.