libfmp 0.3.0

Async, typed Rust client for the Financial Modeling Prep API
Documentation
use libfmp::{
    endpoints::transcripts::{
        EarningsTranscriptDatesQuery, EarningsTranscriptQuery, LatestEarningsTranscriptsQuery,
    },
    query::{Quarter, Year},
    types::{Limit, Page, Ticker},
};

#[test]
fn latest_query_preserves_omission_limit_and_page_zero() {
    let empty = LatestEarningsTranscriptsQuery::new();
    assert_eq!(empty.limit(), None);
    assert_eq!(empty.page(), None);

    let query = empty.with_limit(Limit(100)).with_page(Page(0));
    assert_eq!(query.limit(), Some(Limit(100)));
    assert_eq!(query.page(), Some(Page(0)));

    let metadata_owned_bounds = LatestEarningsTranscriptsQuery::new()
        .with_limit(Limit(101))
        .with_page(Page(101));
    assert_eq!(metadata_owned_bounds.limit(), Some(Limit(101)));
    assert_eq!(metadata_owned_bounds.page(), Some(Page(101)));
}

#[test]
fn transcript_query_reuses_year_and_textual_quarter_query_fundamentals() {
    let symbol = Ticker::new("AAPL").unwrap();
    let query = EarningsTranscriptQuery::new(symbol.clone(), Year(2020), Quarter::Q3);
    assert_eq!(query.symbol(), &symbol);
    assert_eq!(query.year(), Year(2020));
    assert_eq!(query.quarter(), Quarter::Q3);
    assert_eq!(query.limit(), None);
    assert_eq!(query.with_limit(Limit(1)).limit(), Some(Limit(1)));
}

#[test]
fn transcript_dates_query_preserves_owned_and_borrowed_ticker_conversions() {
    let symbol = Ticker::new("AAPL").unwrap();
    let borrowed: EarningsTranscriptDatesQuery = (&symbol).into();
    assert_eq!(borrowed.symbol(), &symbol);

    let owned: EarningsTranscriptDatesQuery = symbol.clone().into();
    assert_eq!(owned.symbol(), &symbol);
}