use persistence_std::{ shim::Any, types::{ cosmos::gov::v1::{ProposalStatus, QueryProposalsRequest, QueryProposalsResponse}, cosmwasm::wasm::v1::MsgExecuteContract, }, }; use prost::Message; #[test] pub fn json_deserialization_fix_test() { let json = r#"{"@type":"/cosmwasm.wasm.v1.MsgExecuteContract","sender":"persistence10d07y265gmmuvt4z0w9aw880jnsr700j5w4kch","contract":"persistence1xxx3ps3gm3wceg4g300hvggdv7ga0hmsk64srccffmfy4wvcrugq3skeny","msg":{"resume_create_pool":{"pool_creation_request_id":1}},"funds":[]}"#; let test: Any = serde_json_wasm::from_str(json).unwrap(); // convert any back to msg execute contract let msg: MsgExecuteContract = MsgExecuteContract::try_from(test).unwrap(); // get msg of msg to validate the json deserialization let str: String = String::from_utf8(msg.msg.clone()).unwrap(); assert_eq!( str, r#"{"resume_create_pool":{"pool_creation_request_id":1}}"# ); // str.as_bytes().to_vec(); } #[test] pub fn enum_serde_test() { let query = QueryProposalsRequest { proposal_status: ProposalStatus::DepositPeriod.into(), voter: "".to_string(), depositor: "".to_string(), pagination: None, }; let json = serde_json_wasm::to_string(&query).unwrap(); println!("{}", json); let query2: QueryProposalsRequest = serde_json_wasm::from_str(&json).unwrap(); assert_eq!(query, query2); let test_json = r#"{"proposals":[{"id":"3","messages":[{"@type":"/cosmwasm.wasm.v1.MsgExecuteContract","sender":"persistence10d07y265gmmuvt4z0w9aw880jnsr700j5w4kch","contract":"persistence1xxx3ps3gm3wceg4g300hvggdv7ga0hmsk64srccffmfy4wvcrugq3skeny","msg":{"resume_create_pool":{"pool_creation_request_id":2}},"funds":[]}],"status":"PROPOSAL_STATUS_DEPOSIT_PERIOD","final_tally_result":{"yes_count":"0","abstain_count":"0","no_count":"0","no_with_veto_count":"0"},"submit_time":"2023-09-06T16:32:52.516964Z","deposit_end_time":"2023-09-08T16:32:52.516964Z","total_deposit":[],"voting_start_time":null,"voting_end_time":null,"metadata":"test","title":"Test Proposal","summary":"test","proposer":"persistence1xxx3ps3gm3wceg4g300hvggdv7ga0hmsk64srccffmfy4wvcrugq3skeny"}],"pagination":{"next_key":null,"total":"1"}}"#; let val: Result<QueryProposalsResponse, serde_json_wasm::de::Error> = serde_json_wasm::from_str(test_json); println!("{:?}", val); }