use cosmwasm::mock::mock_env;
use cosmwasm::serde::from_slice;
use cosmwasm::types::{coin, ContractResult};
use cosmwasm_vm::testing::{handle, init, mock_instance, query};
use ecopay2::msg::{CountResponse, HandleMsg, InitMsg, QueryMsg};
static WASM: &[u8] = include_bytes!("../target/wasm32-unknown-unknown/release/ecopay2.wasm");
#[test]
fn proper_initialization() {
let mut deps = mock_instance(WASM);
let msg = InitMsg { count: 17 };
let env = mock_env(&deps.api, "creator", &coin("1000", "earth"), &[]);
let res = init(&mut deps, env, msg).unwrap();
assert_eq!(0, res.messages.len());
let res = query(&mut deps, QueryMsg::GetCount {}).unwrap();
let value: CountResponse = from_slice(res.as_slice()).unwrap();
assert_eq!(17, value.count);
}
#[test]
fn increment() {
let mut deps = mock_instance(WASM);
let msg = InitMsg { count: 17 };
let env = mock_env(
&deps.api,
"creator",
&coin("2", "token"),
&coin("2", "token"),
);
let _res = init(&mut deps, env, msg).unwrap();
let env = mock_env(&deps.api, "anyone", &coin("2", "token"), &[]);
let msg = HandleMsg::Increment {};
let _res = handle(&mut deps, env, msg).unwrap();
let res = query(&mut deps, QueryMsg::GetCount {}).unwrap();
let value: CountResponse = from_slice(res.as_slice()).unwrap();
assert_eq!(18, value.count);
}
#[test]
fn reset() {
let mut deps = mock_instance(WASM);
let msg = InitMsg { count: 17 };
let env = mock_env(
&deps.api,
"creator",
&coin("2", "token"),
&coin("2", "token"),
);
let _res = init(&mut deps, env, msg).unwrap();
let unauth_env = mock_env(&deps.api, "anyone", &coin("2", "token"), &[]);
let msg = HandleMsg::Reset { count: 5 };
let res = handle(&mut deps, unauth_env, msg);
match res {
ContractResult::Err(msg) => assert_eq!(msg, "Unauthorized"),
_ => panic!("Expected error"),
}
let auth_env = mock_env(&deps.api, "creator", &coin("2", "token"), &[]);
let msg = HandleMsg::Reset { count: 5 };
let _res = handle(&mut deps, auth_env, msg).unwrap();
let res = query(&mut deps, QueryMsg::GetCount {}).unwrap();
let value: CountResponse = from_slice(res.as_slice()).unwrap();
assert_eq!(5, value.count);
}