diff --git a/riven/Cargo.toml b/riven/Cargo.toml index 0564ce3..66d2e26 100644 --- a/riven/Cargo.toml +++ b/riven/Cargo.toml @@ -57,4 +57,5 @@ tracing = { version = "0.1", optional = true } colored = "2" env_logger = "0.9" fake_instant = "0.4" +futures = "0.3" tokio = { version = "1", default-features = false, features = [ "rt-multi-thread" ] } diff --git a/riven/tests/tests_euw.rs b/riven/tests/tests_euw.rs index 665610d..3738c16 100644 --- a/riven/tests/tests_euw.rs +++ b/riven/tests/tests_euw.rs @@ -53,27 +53,57 @@ async_tests!{ // Ok(()) // }, - // // TFT tests. - // tftleaguev1_getchallengerleague: async { - // let p = RIOT_API.tft_league_v1().get_challenger_league(Region::EUW); - // let l = p.await.map_err(|e| e.to_string())?; - // rassert!(l.entries.len() > 10, "Expected a few challenger players, got: {}.", l.entries.len()); - // Ok(()) - // }, - // tftmatchv1_getmatch: async { - // let p = RIOT_API.tft_match_v1().get_match(Region::EUROPE, "EUW1_4568680990"); - // let _m = p.await.map_err(|e| e.to_string())?.ok_or("Failed to get TFT match.".to_owned())?; - // Ok(()) - // }, - // tftsummonerv1_getbyname: async { - // let p = RIOT_API.tft_summoner_v1().get_by_summoner_name(Region::EUW, "相当猥琐"); - // let _s = p.await.map_err(|e| e.to_string())?.ok_or("Failed to get TFT summoner.".to_owned())?; - // Ok(()) - // }, - // tftsummonerv1_getbyname_none: async { - // let p = RIOT_API.tft_summoner_v1().get_by_summoner_name(Region::EUW, "this summoner does not exist"); - // rassert!(p.await.map_err(|e| e.to_string())?.is_none()); + // TFT tests. + // // Don't have acecess to tft-status-v1. + // tftstatusv1_getplatformdata: async { + // let p = RIOT_API.tft_status_v1().get_platform_data(ROUTE); + // let _s = p.await.map_err(|e| e.to_string())?; // Ok(()) // }, + tftleaguev1_getchallengerleague: async { + let p = RIOT_API.tft_league_v1().get_challenger_league(ROUTE); + let l = p.await.map_err(|e| e.to_string())?; + rassert!(l.entries.len() > 10, "Expected a few challenger players, got: {}.", l.entries.len()); + Ok(()) + }, + tftmatchv1_getmatch: async { + let p = RIOT_API.tft_match_v1().get_match(ROUTE.to_regional(), "EUW1_4568680990"); + let _m = p.await.map_err(|e| e.to_string())?.ok_or("Failed to get TFT match.".to_owned())?; + Ok(()) + }, + tftsummonerv1_getbyname: async { + let p = RIOT_API.tft_summoner_v1().get_by_summoner_name(ROUTE, "相当猥琐"); + let _s = p.await.map_err(|e| e.to_string())?.ok_or("Failed to get TFT summoner.".to_owned())?; + Ok(()) + }, + tftsummonerv1_getbyname_none: async { + let p = RIOT_API.tft_summoner_v1().get_by_summoner_name(ROUTE, "this summoner does not exist"); + rassert!(p.await.map_err(|e| e.to_string())?.is_none()); + Ok(()) + }, + // Get top rated player, get some of their matches. + tft_combo: async { + let top_players = RIOT_API.tft_league_v1().get_top_rated_ladder(ROUTE, QueueType::RANKED_TFT_TURBO); + let top_players = top_players.await.map_err(|e| e.to_string())?; + rassert!(0 < top_players.len()); + let top_player_entry = &top_players[0]; + let top_player = RIOT_API.tft_summoner_v1().get_by_summoner_id(ROUTE, &*top_player_entry.summoner_id); + let top_player = top_player.await.map_err(|e| e.to_string())?; + println!("Top player is {} with `puuid` {}.", top_player.name, top_player.puuid); + let match_ids = RIOT_API.tft_match_v1().get_match_ids_by_puuid( + ROUTE.to_regional(), &*top_player.puuid, Some(10), None, None, None); + let match_ids = match_ids.await.map_err(|e| e.to_string())?; + let match_futures = match_ids.iter().map(|match_id| async move { + let result = RIOT_API.tft_match_v1().get_match(ROUTE.to_regional(), &**match_id).await; + result.map_err(|e| (match_id.clone(), e)) + }); + let matches = futures::future::try_join_all(match_futures).await.map_err(|(match_id, e)| format!("{}: {}", match_id, e))?; + for match_opt in matches.iter() { + rassert!(match_opt.is_some()); + let mmatch = match_opt.as_ref().unwrap(); + rassert!(0 < mmatch.info.participants.len()); + } + Ok(()) + }, } }