1use serde::Deserialize;
2use std::fmt::Debug;
3
4#[derive(Deserialize, Debug)]
5pub struct ResponseSuccess {
6 #[serde(rename = "Credits")]
8 credits: String,
9}
10
11impl ResponseSuccess {
12 pub fn get_credits(&self) -> u32 {
13 self.credits.parse::<u32>().unwrap_or(0)
14 }
15}
16
17#[cfg(test)]
18mod tests {
19 use crate::{Api, ResponseType};
20 use std::env;
21
22 #[tokio::test]
23 async fn get_credits() {
24 let api_key: String =
25 env::var("ZEROBOUNCE_API_KEY").expect("$ZEROBOUNCE_API_KEY is not set");
26 let api: Api = Api::new(api_key);
27
28 let result = api.get_credits().await;
29
30 let mut credits_count: i32 = -1;
31 let mut error_message: String = String::from("");
32 if let Ok(ResponseType::Success(success)) = result {
33 credits_count = success.get_credits() as i32;
34 } else if let Ok(ResponseType::Error(error)) = result {
35 error_message = error.error;
36 }
37
38 assert!(error_message.is_empty(), "{}", error_message);
39 assert!(credits_count >= 0);
40 }
41}