mod test { use chrono::Utc; use dotenv::dotenv; use xendit::{ client::XenditClient, customer::{customer::CustomerClient, AddressCategory, AddressRequest, CustomerRequestBody, CustomerType, IndividualDetail, PatchCustomer}, }; fn initialize_client() -> XenditClient { dotenv().ok(); XenditClient::new(std::env::var("XENDIT_API_KEY").unwrap()) } #[tokio::test] async fn test_create_customer() { dotenv().ok(); let client = initialize_client(); let body = CustomerRequestBody::new(Utc::now().to_string(), CustomerType::Individual) .set_individual_detail(IndividualDetail::new(String::from("Airani"))) .set_email(String::from("airani@example.com")) .set_mobile_number(String::from("+628567891234")) .set_addresses(vec![ AddressRequest::new( String::from("ID")) .set_street_line_1(String::from("Jl. Merapi no. 10")) .set_city(String::from("Jakarta")) .set_postal_code(String::from("12345")) .set_category(AddressCategory::Home) .build() ]) .build(); assert!( match CustomerClient::new(&client).create(body, None, None).await { Ok(customer) => !customer.get_id().is_empty(), Err(e) => { println!("{}", e); false } } ) } #[tokio::test] async fn test_get_customer() { dotenv().ok(); let client = initialize_client(); assert!( match CustomerClient::new(&client).get(String::from("cust-b9a2f48e-bc3d-40b1-84b3-c8cb1c82349b"), None).await { Ok(customer) => !customer.get_id().is_empty(), Err(e) => { println!("{}", e); false } } ) } #[tokio::test] async fn test_get_customer_by_reference_id() { dotenv().ok(); let client = initialize_client(); assert!( match CustomerClient::new(&client).get_by_reference_id(String::from("2024-07-10 10:10:54.109704225 UTC"), None).await { Ok(customer) => !customer.get_data().is_empty(), Err(e) => { println!("{}", e); false } } ) } #[tokio::test] async fn test_update_customer() { dotenv().ok(); let client = initialize_client(); let body = PatchCustomer::new() .set_description(String::from("Updated description")) .set_mobile_number(String::from("+628567891234")) .build(); assert!( match CustomerClient::new(&client).update(String::from("cust-b9a2f48e-bc3d-40b1-84b3-c8cb1c82349b"), body, None).await { Ok(customer) => !customer.get_id().is_empty(), Err(e) => { println!("{}", e); false } } ) } }