From fe8823ac06fc6235fb884d2165e5dd6833d3e099 Mon Sep 17 00:00:00 2001 From: Reuben Wong Date: Fri, 20 Oct 2023 15:04:53 +0800 Subject: [PATCH] add unit tests for splits endpoint --- src/api/splits.rs | 112 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/src/api/splits.rs b/src/api/splits.rs index 393826a..d434f68 100644 --- a/src/api/splits.rs +++ b/src/api/splits.rs @@ -100,6 +100,9 @@ impl<'a> Endpoint for Splits<'a> { #[cfg(test)] mod tests { + use chrono::NaiveDate; + + use crate::api::common::SortOrder; use crate::api::splits::Splits; use crate::api::{self, Query}; use crate::test::client::{ExpectedUrl, SingleTestClient}; @@ -117,4 +120,113 @@ mod tests { let endpoint = Splits::builder().build().unwrap(); api::ignore(endpoint).query(&client).unwrap(); } + + #[test] + fn splits_symbol() { + let endpoint = ExpectedUrl::builder() + .endpoint("splits") + .add_query_params(&[("symbols", "AAPL")]) + .build() + .unwrap(); + let client = SingleTestClient::new_raw(endpoint, ""); + + let endpoint = Splits::builder().symbol("AAPL").build().unwrap(); + api::ignore(endpoint).query(&client).unwrap(); + } + + #[test] + fn splits_symbols() { + let endpoint = ExpectedUrl::builder() + .endpoint("splits") + .add_query_params(&[("symbols", "AAPL"), ("symbols", "GOOG")]) + .build() + .unwrap(); + let client = SingleTestClient::new_raw(endpoint, ""); + + let endpoint = Splits::builder() + .symbol("AAPL") + .symbols(["AAPL", "GOOG"].iter().copied()) + .build() + .unwrap(); + api::ignore(endpoint).query(&client).unwrap(); + } + + #[test] + fn splits_sort() { + let endpoint = ExpectedUrl::builder() + .endpoint("splits") + .add_query_params(&[("sort", "ASC")]) + .build() + .unwrap(); + let client = SingleTestClient::new_raw(endpoint, ""); + + let endpoint = Splits::builder() + .sort(SortOrder::Ascending) + .build() + .unwrap(); + api::ignore(endpoint).query(&client).unwrap(); + } + + #[test] + fn splits_date_from() { + let endpoint = ExpectedUrl::builder() + .endpoint("splits") + .add_query_params(&[("date_from", "2020-01-01")]) + .build() + .unwrap(); + let client = SingleTestClient::new_raw(endpoint, ""); + + let endpoint = Splits::builder() + .date_from(NaiveDate::from_ymd_opt(2020, 1, 1).unwrap()) + .build() + .unwrap(); + api::ignore(endpoint).query(&client).unwrap(); + } + + #[test] + fn splits_date_to() { + let endpoint = ExpectedUrl::builder() + .endpoint("splits") + .add_query_params(&[("date_to", "2020-01-01")]) + .build() + .unwrap(); + let client = SingleTestClient::new_raw(endpoint, ""); + + let endpoint = Splits::builder() + .date_to(NaiveDate::from_ymd_opt(2020, 1, 1).unwrap()) + .build() + .unwrap(); + api::ignore(endpoint).query(&client).unwrap(); + } + + #[test] + fn splits_limit() { + let endpoint = ExpectedUrl::builder() + .endpoint("splits") + .add_query_params(&[("limit", "50")]) + .build() + .unwrap(); + let client = SingleTestClient::new_raw(endpoint, ""); + + let endpoint = Splits::builder().limit(50).unwrap().build().unwrap(); + api::ignore(endpoint).query(&client).unwrap(); + } + + #[test] + fn splits_over_limit() { + assert!(Splits::builder().limit(9999).is_err()); + } + + #[test] + fn splits_offset() { + let endpoint = ExpectedUrl::builder() + .endpoint("splits") + .add_query_params(&[("offset", "2")]) + .build() + .unwrap(); + let client = SingleTestClient::new_raw(endpoint, ""); + + let endpoint = Splits::builder().offset(2).build().unwrap(); + api::ignore(endpoint).query(&client).unwrap(); + } }