tmflib 0.1.40

Interface library for processing TMF payloads
Documentation
//! Shopping Cart Risk Assessment Module

use super::characteristic::Characteristic;
use super::risk_assessment_result::RiskAssessmentResult;
use crate::{HasId, IsAddressable, Uri};
use serde::{Deserialize, Serialize};
use tmflib_derive::HasId;

use super::MOD_PATH;

/// Path: `/{mod_path}/shoppingCartRiskAssessment`
pub const CLASS_PATH: &str = "shoppingCartRiskAssessment";

/// Shopping Cart Risk Assessment
#[derive(Clone, Default, Debug, HasId, Deserialize, Serialize)]
pub struct ShoppingCartRiskAssessment {
    /// `HRef`
    pub href: Option<Uri>,
    /// Id
    pub id: Option<String>,
    /// Assessment Results
    pub risk_assessment_result: Option<RiskAssessmentResult>,
    /// Characteristics
    pub characteristic: Option<Vec<Characteristic>>,
}

impl IsAddressable for ShoppingCartRiskAssessment {
    fn get_objects() -> Vec<&'static str> {
        super::get_objects()
    }
}

#[cfg(test)]
mod test {

    use super::*;

    const CART_RISK_ID: &str = "123QH";
    const CARTRISK_JSON: &str = "{
        \"href\" : \"http://example.com/cartrisk/123\",
        \"id\" : \"123\"
    }";
    #[test]
    fn test_cartrisk_deserialize() {
        let cartrisk: ShoppingCartRiskAssessment = serde_json::from_str(CARTRISK_JSON).unwrap();

        assert_eq!(cartrisk.id.is_some(), true);
        assert_eq!(cartrisk.id.unwrap().as_str(), "123");

        assert_eq!(cartrisk.href.is_some(), true);
        assert_eq!(
            cartrisk.href.unwrap().as_str(),
            "http://example.com/cartrisk/123"
        );
    }

    #[test]
    fn test_cartrisk_hasid() {
        let mut cartrisk = ShoppingCartRiskAssessment::default();
        cartrisk.set_id(CART_RISK_ID);

        assert_eq!(cartrisk.get_id().as_str(), CART_RISK_ID);
    }
}