use http_client_vcr::NoOpClient;
use lastfm_edit::{LastFmEditClientImpl, LastFmEditSession};
fn create_test_session() -> LastFmEditSession {
LastFmEditSession::new(
"test_user".to_string(),
vec!["sessionid=.test_session_id_12345".to_string()],
Some("test_csrf_token".to_string()),
"https://www.last.fm".to_string(),
)
}
#[test_log::test(tokio::test)]
async fn test_client_futures_are_send() {
fn assert_send<T: Send>(_: T) {}
let client = Box::new(NoOpClient::new());
let lastfm_client = LastFmEditClientImpl::from_session(client, create_test_session());
let get_recent_tracks_future = lastfm_client.get_recent_tracks_page(1);
assert_send(get_recent_tracks_future);
let get_tracks_future = lastfm_client.get_artist_tracks_page("test", 1);
assert_send(get_tracks_future);
}
#[test_log::test(tokio::test)]
async fn test_iterator_futures_are_send() {
}
#[test_log::test(tokio::test)]
async fn test_futures_can_be_spawned() {
let client = Box::new(NoOpClient::new());
let lastfm_client = LastFmEditClientImpl::from_session(client, create_test_session());
let handle = tokio::spawn(async move {
let _ = lastfm_client.get_recent_tracks_page(1).await;
let _ = lastfm_client.get_artist_tracks_page("test", 1).await;
});
handle.abort();
}
#[test_log::test(tokio::test)]
async fn test_pagination_methods_across_await_boundaries() {
let client = Box::new(NoOpClient::new());
let lastfm_client = LastFmEditClientImpl::from_session(client, create_test_session());
let handle = tokio::spawn(async move {
tokio::time::sleep(std::time::Duration::from_millis(1)).await;
let _ = lastfm_client.get_recent_tracks_page(1).await;
let _ = lastfm_client.get_artist_tracks_page("test", 1).await;
});
handle.abort();
}