microversus_api 0.1.2

API interface for microversus
Documentation
#[cfg(test)]
mod tests {
    #![allow(clippy::assertions_on_constants)]

    use crate::*;
    use std::collections::HashMap;
    use std::fs::File;
    use std::io::Read;

    macro_rules! test_case {
        ($fname:expr) => {{
            let filename = concat!(env!("CARGO_MANIFEST_DIR"), "/resources/test/", $fname);
            let mut file = File::open(filename).unwrap();
            let mut buff = String::new();
            file.read_to_string(&mut buff).unwrap();

            println!("buff: {}", &buff.to_string());
            &buff.to_string()
        }};
    }

    #[test]
    fn test_deserialize() {
        match serde_json::from_str::<CnftAsset>(test_case!("asset_in_list_response.json")) {
            Ok(asset) => {
                let test_traits = HashMap::from([
                    ("Eyes".to_string(), "Focus".to_string()),
                    ("Nose".to_string(), "Button".to_string()),
                    ("Rank".to_string(), "Quartermaster".to_string()),
                    ("Skin".to_string(), "Inked".to_string()),
                    ("Mouth".to_string(), "Gold Beard".to_string()),
                    ("Weapon".to_string(), "Shark's Hook".to_string()),
                    ("Clothes".to_string(), "Sapphire Warlord".to_string()),
                    ("Headwear".to_string(), "Deckhand's Cap".to_string()),
                    ("Background".to_string(), "Emerald Isle".to_string()),
                ]);
                assert_eq!(asset.on_sale, Some(false));
                assert_eq!(asset.asset_name, "Pirate376");
                assert_eq!(asset.asset_id, "376");
                assert_eq!(asset.name, "Pirate #376");
                assert_eq!(
                    asset.iconurl,
                    Some("QmSfqtMhjqeU6cncYWpMXcoQQVrzxsaap2SgRzmhkvXZC9".to_string())
                );
                assert_eq!(asset.trait_count, 9);
                assert_eq!(asset.encoded_name, "506972617465333736");
                assert_eq!(asset.build_type, "robot");
                assert_eq!(asset.rarity_rank, 59);
                assert_eq!(
                    asset.owner_stake_key,
                    "stake1u8yccncl049nd25c8wlav3fplue9u34yy5822eru4v8w23g656ct9"
                );
                assert_eq!(asset.traits, test_traits);
            }
            Err(err) => {
                println!("encountered decoding error: {:?}", err);
                panic!("failed decoding");
            }
        }
    }

    #[test]
    fn test_deserialize_owners() {
        match serde_json::from_str::<CnftOwnerResponse>(test_case!("owners.json")) {
            Ok(owners) => {
                assert_eq!(owners.status, "success");
                assert!(owners.user_stakekeys.contains_key("179744071361757184"));

                let values = owners.user_stakekeys.get("179744071361757184").unwrap();
                assert_eq!(values.len(), 7);
            }
            Err(err) => {
                println!("encountered decoding error: {:?}", err);
                panic!("failed decoding");
            }
        }
    }

    #[test]
    fn test_deserialize_vault() {
        match serde_json::from_str::<VaultApiResponse>(test_case!("vault_assets.json")) {
            Ok(response) => {
                assert_eq!(response.data.address, "addr1z98ps3vxeewk94rwp5dtxvzlr4aczync78p8am9l9w4vcndj0dygu7h6hy2ukjsmsfa2yfmqajjz5jpzg33r4kcll66sg7gqd4");
                assert_eq!(response.data.slots.len(), 30);
            }
            Err(err) => {
                println!("encountered decoding error: {:?}", err);
                panic!("failed decoding");
            }
        }
    }
}