use libtad_rs::models::time::DSTEntrySpecialType; use libtad_rs::service::time::DSTListRequest; use libtad_rs::ServiceClient; use maybe_async::maybe_async; #[maybe_async] #[cfg_attr(feature = "async-client", tokio::test)] #[cfg_attr(feature = "sync-client", test)] async fn request_dst_entries() { let client = ServiceClient::new(env!("ACCESS_KEY").into(), env!("SECRET_KEY").into()); let request = DSTListRequest::new().set_year(2016); let response = client .get_daylight_savings_time(&request) .await .unwrap() .unwrap(); assert!(response.dstlist.len() == 129); } #[maybe_async] #[cfg_attr(feature = "async-client", tokio::test)] #[cfg_attr(feature = "sync-client", test)] async fn request_dst_entries_for_specific_country() { let client = ServiceClient::new(env!("ACCESS_KEY").into(), env!("SECRET_KEY").into()); let request = DSTListRequest::new().set_country("no"); let response = client .get_daylight_savings_time(&request) .await .unwrap() .unwrap(); assert!(response.dstlist.len() == 1); assert!(response.dstlist[0].region.country.name == "Norway"); assert!(response.dstlist[0].region.country.id == "no"); } #[maybe_async] #[cfg_attr(feature = "async-client", tokio::test)] #[cfg_attr(feature = "sync-client", test)] async fn request_dst_entries_for_specific_country_and_year() { let client = ServiceClient::new(env!("ACCESS_KEY").into(), env!("SECRET_KEY").into()); let request = DSTListRequest::new().set_country("no").set_year(2014); let response = client .get_daylight_savings_time(&request) .await .unwrap() .unwrap(); assert!(response.dstlist.len() == 1); assert!(response.dstlist[0].region.country.name == "Norway"); assert!(response.dstlist[0].region.country.id == "no"); } #[maybe_async] #[cfg_attr(feature = "async-client", tokio::test)] #[cfg_attr(feature = "sync-client", test)] async fn request_dst_entries_with_listplaces() { let client = ServiceClient::new(env!("ACCESS_KEY").into(), env!("SECRET_KEY").into()); let request = DSTListRequest::new().set_listplaces(true); let response = client .get_daylight_savings_time(&request) .await .unwrap() .unwrap(); assert!(response .dstlist .iter() .all(|x| x.region.locations.is_some())); } #[maybe_async] #[cfg_attr(feature = "async-client", tokio::test)] #[cfg_attr(feature = "sync-client", test)] async fn request_dst_entries_without_listplaces() { let client = ServiceClient::new(env!("ACCESS_KEY").into(), env!("SECRET_KEY").into()); let request = DSTListRequest::new().set_listplaces(false); let response = client .get_daylight_savings_time(&request) .await .unwrap() .unwrap(); assert!(response .dstlist .iter() .all(|x| x.region.locations.is_none())); } #[maybe_async] #[cfg_attr(feature = "async-client", tokio::test)] #[cfg_attr(feature = "sync-client", test)] async fn request_dst_entries_with_timechanges() { let client = ServiceClient::new(env!("ACCESS_KEY").into(), env!("SECRET_KEY").into()); let request = DSTListRequest::new().set_timechanges(true); let response = client .get_daylight_savings_time(&request) .await .unwrap() .unwrap(); assert!(response.dstlist.iter().all(|x| x.timechanges.is_some())); } #[maybe_async] #[cfg_attr(feature = "async-client", tokio::test)] #[cfg_attr(feature = "sync-client", test)] async fn request_dst_entries_without_timechanges() { let client = ServiceClient::new(env!("ACCESS_KEY").into(), env!("SECRET_KEY").into()); let request = DSTListRequest::new().set_timechanges(false); let response = client .get_daylight_savings_time(&request) .await .unwrap() .unwrap(); assert!(response.dstlist.iter().all(|x| x.timechanges.is_none())); } #[maybe_async] #[cfg_attr(feature = "async-client", tokio::test)] #[cfg_attr(feature = "sync-client", test)] async fn request_dst_entries_with_onlydst() { let client = ServiceClient::new(env!("ACCESS_KEY").into(), env!("SECRET_KEY").into()); let request = DSTListRequest::new().set_onlydst(true).set_year(2014); let response = client .get_daylight_savings_time(&request) .await .unwrap() .unwrap(); assert!(response.dstlist.len() == 132); } #[maybe_async] #[cfg_attr(feature = "async-client", tokio::test)] #[cfg_attr(feature = "sync-client", test)] async fn request_dst_entries_without_onlydst() { let client = ServiceClient::new(env!("ACCESS_KEY").into(), env!("SECRET_KEY").into()); let request = DSTListRequest::new().set_onlydst(false).set_year(2014); let response = client .get_daylight_savings_time(&request) .await .unwrap() .unwrap(); assert!(response.dstlist.len() == 348); assert!( response .dstlist .iter() .flat_map(|x| x.special.as_ref()) .filter(|x| matches!(x.r#type, DSTEntrySpecialType::NoDST)) .count() > 0 ) }