use polyoxide_gamma::Gamma;
use std::time::Duration;
fn client() -> Gamma {
Gamma::builder().build().expect("gamma client")
}
#[tokio::test]
#[ignore]
async fn live_ping() {
let gamma = client();
let latency = gamma.health().ping().await.expect("ping should succeed");
assert!(
latency < Duration::from_secs(10),
"latency too high: {latency:?}"
);
}
#[tokio::test]
#[ignore]
async fn live_list_markets() {
let gamma = client();
let markets = gamma
.markets()
.list()
.limit(5)
.send()
.await
.expect("list markets");
assert!(!markets.is_empty(), "should return at least one market");
}
#[tokio::test]
#[ignore]
async fn live_get_market_by_id() {
let gamma = client();
let markets = gamma
.markets()
.list()
.limit(1)
.send()
.await
.expect("list markets to discover id");
let first = markets.first().expect("need at least one market");
let id = first.id.clone();
let market = gamma
.markets()
.get(&id)
.send()
.await
.expect("get market by id");
assert_eq!(market.id, id);
}
#[tokio::test]
#[ignore]
async fn live_get_market_by_slug() {
let gamma = client();
let markets = gamma
.markets()
.list()
.limit(10)
.send()
.await
.expect("list markets to discover slug");
let market_with_slug = markets
.iter()
.find(|m| m.slug.is_some())
.expect("need at least one market with a slug");
let slug = market_with_slug.slug.as_ref().unwrap().clone();
let market = gamma
.markets()
.get_by_slug(&slug)
.send()
.await
.expect("get market by slug");
assert_eq!(market.slug.as_deref(), Some(slug.as_str()));
}
#[tokio::test]
#[ignore]
async fn live_list_markets_closed_true() {
let gamma = client();
let markets = gamma
.markets()
.list()
.closed(true)
.limit(5)
.send()
.await
.expect("list closed markets");
assert!(
!markets.is_empty(),
"should return at least one closed market"
);
for m in &markets {
assert_eq!(m.closed, Some(true), "market {} should be closed", m.id);
}
}
#[tokio::test]
#[ignore]
async fn live_list_markets_closed_false() {
let gamma = client();
let markets = gamma
.markets()
.list()
.closed(false)
.limit(5)
.send()
.await
.expect("list open markets");
assert!(
!markets.is_empty(),
"should return at least one open market"
);
for m in &markets {
assert_ne!(m.closed, Some(true), "market {} should not be closed", m.id);
}
}
#[tokio::test]
#[ignore]
async fn live_list_events() {
let gamma = client();
let events = gamma
.events()
.list()
.limit(5)
.send()
.await
.expect("list events");
assert!(!events.is_empty(), "should return at least one event");
}
#[tokio::test]
#[ignore]
async fn live_get_event_by_id() {
let gamma = client();
let events = gamma
.events()
.list()
.limit(1)
.send()
.await
.expect("list events to discover id");
let first = events.first().expect("need at least one event");
let id = first.id.clone();
let event = gamma
.events()
.get(&id)
.send()
.await
.expect("get event by id");
assert_eq!(event.id, id);
}
#[tokio::test]
#[ignore]
async fn live_get_event_by_slug() {
let gamma = client();
let events = gamma
.events()
.list()
.limit(10)
.send()
.await
.expect("list events to discover slug");
let event_with_slug = events
.iter()
.find(|e| e.slug.is_some())
.expect("need at least one event with a slug");
let slug = event_with_slug.slug.as_ref().unwrap().clone();
let event = gamma
.events()
.get_by_slug(&slug)
.send()
.await
.expect("get event by slug");
assert_eq!(event.slug.as_deref(), Some(slug.as_str()));
}
#[tokio::test]
#[ignore]
async fn live_list_tags() {
let gamma = client();
let tags = gamma
.tags()
.list()
.limit(5)
.send()
.await
.expect("list tags");
assert!(!tags.is_empty(), "should return at least one tag");
}
#[tokio::test]
#[ignore]
async fn live_get_tag_by_id() {
let gamma = client();
let tags = gamma
.tags()
.list()
.limit(1)
.send()
.await
.expect("list tags to discover id");
let first = tags.first().expect("need at least one tag");
let id = first.id.clone();
let tag = gamma.tags().get(&id).send().await.expect("get tag by id");
assert_eq!(tag.id, id);
}
#[tokio::test]
#[ignore]
async fn live_get_tag_by_slug() {
let gamma = client();
let tags = gamma
.tags()
.list()
.limit(10)
.send()
.await
.expect("list tags to discover slug");
let first = tags.first().expect("need at least one tag");
let slug = first.slug.clone();
let tag = gamma
.tags()
.get_by_slug(&slug)
.send()
.await
.expect("get tag by slug");
assert_eq!(tag.slug, slug);
}
#[tokio::test]
#[ignore]
async fn live_get_related_tags() {
let gamma = client();
let tags = gamma
.tags()
.list()
.limit(10)
.send()
.await
.expect("list tags to discover id");
let first = tags.first().expect("need at least one tag");
let id = first.id.clone();
let _related = gamma
.tags()
.get_related(&id)
.send()
.await
.expect("get related tags");
}
#[tokio::test]
#[ignore]
async fn live_list_series() {
let gamma = client();
let series = gamma
.series()
.list()
.limit(5)
.send()
.await
.expect("list series");
assert!(!series.is_empty(), "should return at least one series");
}
#[tokio::test]
#[ignore]
async fn live_get_series_by_id() {
let gamma = client();
let series = gamma
.series()
.list()
.limit(1)
.send()
.await
.expect("list series to discover id");
let first = series.first().expect("need at least one series");
let id = first.id.clone();
let s = gamma
.series()
.get(&id)
.send()
.await
.expect("get series by id");
assert_eq!(s.id, id);
}
#[tokio::test]
#[ignore]
async fn live_list_sports() {
let gamma = client();
let sports = gamma.sports().list().send().await.expect("list sports");
assert!(
!sports.is_empty(),
"should return at least one sport metadata entry"
);
}
#[tokio::test]
#[ignore]
async fn live_list_teams() {
let gamma = client();
let teams = gamma
.sports()
.list_teams()
.limit(5)
.send()
.await
.expect("list teams");
assert!(!teams.is_empty(), "should return at least one team");
}
#[tokio::test]
#[ignore]
async fn live_list_comments() {
let gamma = client();
let events = gamma
.events()
.list()
.limit(5)
.send()
.await
.expect("list events to discover id for comments");
let first = events.first().expect("need at least one event");
let event_id: i64 = first.id.parse().expect("event id should be numeric");
let comments = gamma
.comments()
.list()
.parent_entity_type("Event")
.parent_entity_id(event_id)
.limit(5)
.send()
.await
.expect("list comments");
let _ = comments;
}
#[tokio::test]
#[ignore]
async fn live_get_comment_by_id() {
let gamma = client();
let events = gamma
.events()
.list()
.active(true)
.limit(5)
.send()
.await
.expect("list events");
let first = events.first().expect("need at least one event");
let event_id: i64 = first.id.parse().expect("event id should be numeric");
let comments = gamma
.comments()
.list()
.parent_entity_type("Event")
.parent_entity_id(event_id)
.limit(1)
.send()
.await
.expect("list comments");
if let Some(comment) = comments.first() {
let fetched = gamma
.comments()
.get(&comment.id)
.send()
.await
.expect("get comment by id");
assert_eq!(fetched.id, comment.id);
}
}
#[tokio::test]
#[ignore]
async fn live_event_tags() {
let gamma = client();
let events = gamma
.events()
.list()
.limit(1)
.send()
.await
.expect("list events");
let first = events.first().expect("need at least one event");
let _tags = gamma
.events()
.tags(&first.id)
.send()
.await
.expect("get event tags");
}
#[tokio::test]
#[ignore]
async fn live_market_tags() {
let gamma = client();
let markets = gamma
.markets()
.list()
.limit(1)
.send()
.await
.expect("list markets");
let first = markets.first().expect("need at least one market");
let _tags = gamma
.markets()
.tags(&first.id)
.send()
.await
.expect("get market tags");
}
#[tokio::test]
#[ignore]
async fn live_sports_market_types() {
let gamma = client();
let _types = gamma
.sports()
.market_types()
.send()
.await
.expect("sports market types should deserialize");
}
#[tokio::test]
#[ignore]
async fn live_public_search() {
let gamma = client();
let results = gamma
.search()
.public_search("bitcoin")
.search_profiles(true)
.limit_per_type(5)
.send()
.await
.expect("public search");
let _ = results;
}
#[tokio::test]
#[ignore]
async fn live_get_user() {
let gamma = client();
let events = gamma
.events()
.list()
.active(true)
.limit(5)
.send()
.await
.expect("list events");
let first = events.first().expect("need at least one event");
let event_id: i64 = first.id.parse().expect("event id should be numeric");
let comments = gamma
.comments()
.list()
.parent_entity_type("Event")
.parent_entity_id(event_id)
.limit(20)
.send()
.await
.expect("list comments to find a user");
if let Some(comment) = comments.first() {
let user_id = &comment.user.id;
let user = gamma
.user()
.get(user_id)
.send()
.await
.expect("get user profile");
let _ = user;
}
}