#![cfg_attr(feature = "nightly", feature(custom_test_frameworks))] #![feature(async_closure)] #![cfg_attr(feature = "nightly", test_runner(my_runner))] mod async_tests; mod testutils; use testutils::*; use futures_util::future; use colored::*; use riven::consts::*; use riven::models::summoner_v4::Summoner; const REGION: Region = Region::KR; async_tests!{ my_runner { league_summoner_bulk_test: async { let leagues = (1..10) .map(async move |i| { let leaguelist = riot_api().league_v4().get_league_entries(REGION, QueueType::RANKED_SOLO_5x5, Tier::GOLD, Division::III, Some(i)); let leaguelist = leaguelist.await .map_err(|e| e.to_string())? .ok_or("Failed to get challenger league".to_owned())?; println!("League list {}: {} items.", i, leaguelist.len()); let summoners = leaguelist .iter() .map(async move |leagueentry| { let summonerfuture = riot_api().summoner_v4().get_by_summoner_id( REGION, &leagueentry.summoner_id); summonerfuture.await .map_err(|e| e.to_string())? .ok_or(format!("Failed to find summoner_id {}.", leagueentry.summoner_id)) }); future::join_all(summoners).await .into_iter() // I'm not sure where this result goes. .collect::, String>>() }); let all_summoners = future::join_all(leagues).await .into_iter() .flat_map(|league| league) .flat_map(|summoner| summoner); for (i, summoner) in all_summoners.enumerate() { println!("{}: {}", i + 1, summoner.name); } Ok(()) }, } }