use chrono::{NaiveDate, NaiveTime, Timelike};
use crate::core::{
config::{Config, GetType},
prayers_times::Prayers,
providers::{Provider, ProviderError},
};
use super::AladhanProvider;
#[test]
fn provider_today() -> Result<(), ProviderError> {
let config = Config {
year: 2025,
month: 4,
day: 25,
city: "ElOued".to_string(), country: "DZ".to_string(),
get_type: GetType::Today,
};
let provider = AladhanProvider::new(config);
let config = Config {
year: 2025,
month: 4,
day: 25,
city: "Maka".to_string(), country: "SAU".to_string(),
get_type: GetType::Today,
};
let prayers_times = provider.get_prayers_times(&config)?;
let expected_date = NaiveDate::from_ymd_opt(2025, 4, 25)
.expect("Invalid test date");
assert_eq!(prayers_times.from, expected_date);
assert_eq!(prayers_times.to, expected_date);
let fajr_time = prayers_times.get(Prayers::Fajr, expected_date)
.expect("Fajr time not found");
let expected_fajr = NaiveTime::from_hms_opt(4, 34, 0)
.expect("Invalid test time");
assert_eq!(fajr_time.hour(), expected_fajr.hour());
assert_eq!(fajr_time.minute(), expected_fajr.minute());
Ok(())
}