#[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");
}
}
}
}