iyzipay-rust 0.1.2

iyzipay rust client
Documentation
use std::env;
use std::fs;
use std::str::FromStr;

use base64::encode;
use bigdecimal::BigDecimal;
use bigdecimal::One;

use iyzipay_rust::model::IyziLink;
use iyzipay_rust::model::IyziLinkStatus;
use iyzipay_rust::model::Locale;
use iyzipay_rust::model::Status;
use iyzipay_rust::model::{Currency, IyziLinkResource};
use iyzipay_rust::requests::IyziLinkSaveRequest;
use iyzipay_rust::requests::PagingRequest;
use iyzipay_rust::requests::Request;

use crate::get_test_options;

#[test]
pub fn should_create_iyzi_link() {
    let _ = env_logger::try_init();
    let mut request = IyziLinkSaveRequest::new();
    request.set_locale(Locale::TR.value());
    request.set_conversation_id("123456789");
    request.set_name("sample-name");
    request.set_description("sample-description");
    let mut path = env::current_dir().unwrap();
    path.push("tests/images/sample_image.jpg");
    request.set_base64_encoded_image(encode(&fs::read(path).unwrap()));
    request.set_price(BigDecimal::one());
    request.set_currency(Currency::TRY.value());
    request.set_address_ignorable(false);
    request.set_sold_limit(1);
    request.set_installment_requested(false);

    let response = IyziLink::create(&request, &get_test_options()).unwrap();

    println!("{:?}", response);

    assert_eq!(Some(&Status::Success.to_string()), response.status());
    assert_eq!(Some(&Locale::TR.to_string()), response.locale());
    assert_eq!(Some(&String::from("123456789")), response.conversation_id());
    assert_ne!(None, response.system_time());
    assert_ne!(None, response.data().unwrap().token());
    assert_ne!(None, response.data().unwrap().url());
    assert_ne!(None, response.data().unwrap().image_url());
}

#[test]
pub fn should_update_iyzi_link() {
    let _ = env_logger::try_init();
    let mut request = IyziLinkSaveRequest::new();
    request.set_locale(Locale::TR.value());
    request.set_conversation_id("123456789");
    request.set_name("ft-name-updated");
    request.set_description("ft-description-updated");
    request.set_price(BigDecimal::from_str("10").unwrap());
    request.set_currency(Currency::TRY.value());

    let response = IyziLink::update("TOKEN", &request, &get_test_options()).unwrap();

    println!("{:?}", response);

    assert_eq!(Some(&Status::Success.to_string()), response.status());
    assert_eq!(Some(&Locale::TR.to_string()), response.locale());
    assert_eq!(Some(&String::from("123456789")), response.conversation_id());
    assert_ne!(None, response.system_time());
    assert_ne!(None, response.data().unwrap().token());
    assert_ne!(None, response.data().unwrap().url());
    assert_ne!(None, response.data().unwrap().image_url());
}

#[test]
pub fn should_retrieve_iyzi_links_with_pagination() {
    let _ = env_logger::try_init();
    let mut paging_request = PagingRequest::new();
    paging_request.set_page(Some(1));
    paging_request.set_count(Some(1));
    paging_request.set_locale(Locale::TR.value());
    paging_request.set_conversation_id("123456789");

    let response = IyziLink::retrieve_all(&paging_request, &get_test_options()).unwrap();

    println!("{:?}", response);

    assert_eq!(Some(&Status::Success.to_string()), response.status());
    assert_eq!(Some(&Locale::TR.to_string()), response.locale());
    assert_eq!(Some(&String::from("123456789")), response.conversation_id());
    assert_ne!(None, response.system_time());
    assert_eq!(1, response.data().unwrap().iyzi_link_items().unwrap().len());
    assert_eq!(&1, response.data().unwrap().current_page().unwrap());
}

#[test]
pub fn should_retrieve_iyzi_link_with_token() {
    let _ = env_logger::try_init();
    let request = Request::new("123456789", Locale::TR.value());

    let response: IyziLinkResource =
        IyziLink::retrieve("TOKEN", &request, &get_test_options()).unwrap();

    println!("{:?}", response);

    assert_eq!(Some(&Status::Success.to_string()), response.status());
    assert_eq!(Some(&Locale::TR.to_string()), response.locale());
    assert_eq!(Some(&String::from("123456789")), response.conversation_id());
    assert_ne!(None, response.system_time());
    assert_ne!(None, response.data().unwrap().name());
    assert_ne!(None, response.data().unwrap().description());
    assert_eq!(
        &BigDecimal::from_str("1.00000000").unwrap(),
        response.data().unwrap().price().unwrap()
    );
    assert_eq!(
        Currency::TRY.value(),
        response.data().unwrap().currency().unwrap()
    );
    assert_eq!(
        &IyziLinkStatus::Active,
        response.data().unwrap().iyzi_link_status().unwrap()
    );
}

#[test]
pub fn should_delete_iyzi_link() {
    let _ = env_logger::try_init();
    let request = Request::new("123456789", Locale::TR.value());

    let response = IyziLink::delete("TOKEN", &request, &get_test_options()).unwrap();

    println!("{:?}", response);

    assert_eq!(Some(&Status::Success.to_string()), response.status());
    assert_eq!(Some(&Locale::TR.to_string()), response.locale());
    assert_eq!(Some(&String::from("123456789")), response.conversation_id());
    assert_ne!(None, response.system_time());
}