use serde::Deserialize;
use crate::api::response::Response;
use crate::Str;
#[derive(Clone, Debug, Deserialize, PartialEq)]
pub struct Market {
#[serde(rename = "market")]
pub market: String,
#[serde(rename = "desc")]
pub description: String,
}
Endpoint! {
pub Get(()),
Ok => Response<Vec<Market>>, [
OK,
],
Err => GetError, []
fn path(_input: &Self::Input) -> Str {
"/v2/reference/markets".into()
}
}
#[cfg(not(target_arch = "wasm32"))]
#[cfg(test)]
mod tests {
use super::*;
use test_log::test;
use crate::Client;
#[test(tokio::test)]
async fn request_markets() {
let client = Client::from_env().unwrap();
let markets = client
.issue::<Get>(())
.await
.unwrap()
.into_result()
.unwrap();
let stocks = markets
.iter()
.find(|market| market.market == "STOCKS")
.unwrap();
assert_eq!(stocks.description, "Stocks / Equities / ETFs");
}
}