use jiff::civil::Date;
use pvoutput_client::{
Client, ClientError,
types::{
error::DataError,
params::{AddOutputParams, PostSystemParams},
},
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
dotenvy::dotenv()?;
let (Ok(api_key), Ok(system)) = (std::env::var("PVO_API_KEY"), std::env::var("PVO_SYSTEM")) else {
panic!("PVO_API_KEY and PVO_SYSTEM must be set! Use .env file or export them.")
};
let Ok(system) = system.parse() else {
panic!("PVO_SYSTEM must be a valid system ID!")
};
let client = Client::new(&api_key, system, None, None)?;
assert!(matches!(client.add_outputs(vec![]).await, Err(ClientError::InvalidData(DataError::NoData))));
assert!(matches!(
client.add_batch_status(vec![], false).await,
Err(ClientError::InvalidData(DataError::NoData))
));
assert!(matches!(
client.add_batch_status_net(vec![]).await,
Err(ClientError::InvalidData(DataError::NoData))
));
assert!(matches!(
client.add_outputs(vec![AddOutputParams::new(Date::MAX)]).await,
Err(ClientError::InvalidData(DataError::DateTooNew(date))) if date == Date::MAX
));
assert!(matches!(
client.post_system(PostSystemParams::new_rename(format!("{:01000}", 1))).await,
Err(ClientError::InvalidData(DataError::SystemNameTooLong))
));
assert!(matches!(
client.delete_status(Date::MAX, None).await,
Err(ClientError::InvalidData(DataError::DateTooNew(date))) if date == Date::MAX
));
Ok(())
}