iyzipay-rust 0.1.2

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

use bigdecimal::BigDecimal;
use log::debug;

use iyzipay_rust::model::CheckoutFormInitialize;
use iyzipay_rust::model::Locale;
use iyzipay_rust::model::PaymentGroup;
use iyzipay_rust::model::Status;
use iyzipay_rust::model::{BasketItem, CheckoutForm};
use iyzipay_rust::requests::{CreateCheckoutFormInitializeRequest, RetrieveCheckoutFormRequest};

use crate::functional::builder::BasketItemBuilder;
use crate::functional::builder::Builder;
use crate::functional::builder::CreateCheckoutFormInitializeRequestBuilder;
use crate::functional::builder::RetrieveCheckoutFormRequestBuilder;
use crate::get_test_options;

#[test]
fn should_initialize_checkout_form_for_standard_merchant() {
    let _ = env_logger::try_init();
    let basket_items: Vec<BasketItem> = vec![BasketItemBuilder::create()
        .price(BigDecimal::from_str("0.3").unwrap())
        .build()];

    let request: CreateCheckoutFormInitializeRequest =
        CreateCheckoutFormInitializeRequestBuilder::create()
            .price(BigDecimal::from_str("0.3").unwrap())
            .payment_group(PaymentGroup::Listing.value())
            .paid_price(BigDecimal::from_str("0.4").unwrap())
            .callback_url("https://www.merchant.com/callback")
            .basket_items(basket_items)
            .build();

    let checkout_form_initialize: CheckoutFormInitialize =
        CheckoutFormInitialize::create(&request, &get_test_options()).unwrap();

    assert_eq!(
        Some(&Status::Success.to_string()),
        checkout_form_initialize.status()
    );
    assert_eq!(
        Some(&Locale::TR.to_string()),
        checkout_form_initialize.locale()
    );
    assert_ne!(None, checkout_form_initialize.system_time());
    assert_ne!(None, checkout_form_initialize.token());
    assert_ne!(None, checkout_form_initialize.checkout_form_content());
}

#[test]
fn should_retrieve_checkout_form_result() {
    let _ = env_logger::try_init();
    let basket_items: Vec<BasketItem> = vec![BasketItemBuilder::create()
        .price(BigDecimal::from_str("0.3").unwrap())
        .build()];

    let request: CreateCheckoutFormInitializeRequest =
        CreateCheckoutFormInitializeRequestBuilder::create()
            .price(BigDecimal::from_str("0.3").unwrap())
            .payment_group(PaymentGroup::Listing.value())
            .paid_price(BigDecimal::from_str("0.4").unwrap())
            .callback_url("https://www.merchant.com/callback")
            .basket_items(basket_items)
            .build();

    let checkout_form_initialize: CheckoutFormInitialize =
        CheckoutFormInitialize::create(&request, &get_test_options()).unwrap();

    let retrieve_checkout_form_request: RetrieveCheckoutFormRequest =
        RetrieveCheckoutFormRequestBuilder::create()
            .token(checkout_form_initialize.token().unwrap().to_owned())
            .build();

    let checkout_form: CheckoutForm =
        CheckoutForm::retrieve(&retrieve_checkout_form_request, &get_test_options()).unwrap();

    debug!("{:?}", checkout_form);

    assert_ne!(None, checkout_form.error_message());
    assert_eq!(
        Some(&Status::Failure.value().to_string()),
        checkout_form.status()
    );
    assert_ne!(None, checkout_form.system_time());
}