mars_core/testing/
mocks.rs

1use cosmwasm_std::{
2    testing::{MockApi, MockQuerier, MockStorage, MOCK_CONTRACT_ADDR},
3    Addr, BlockInfo, Coin, ContractInfo, Env, MessageInfo, OwnedDeps, Timestamp,
4};
5
6use super::mars_mock_querier::MarsMockQuerier;
7
8pub struct MockEnvParams {
9    pub block_time: Timestamp,
10    pub block_height: u64,
11}
12
13impl Default for MockEnvParams {
14    fn default() -> Self {
15        MockEnvParams {
16            block_time: Timestamp::from_nanos(1_571_797_419_879_305_533),
17            block_height: 1,
18        }
19    }
20}
21
22/// mock_env replacement for cosmwasm_std::testing::mock_env
23pub fn mock_env(mock_env_params: MockEnvParams) -> Env {
24    Env {
25        block: BlockInfo {
26            height: mock_env_params.block_height,
27            time: mock_env_params.block_time,
28            chain_id: "cosmos-testnet-14002".to_string(),
29        },
30        contract: ContractInfo {
31            address: Addr::unchecked(MOCK_CONTRACT_ADDR),
32        },
33    }
34}
35
36pub fn mock_env_at_block_time(seconds: u64) -> Env {
37    mock_env(MockEnvParams {
38        block_time: Timestamp::from_seconds(seconds),
39        ..Default::default()
40    })
41}
42
43pub fn mock_env_at_block_height(block_height: u64) -> Env {
44    mock_env(MockEnvParams {
45        block_height,
46        ..Default::default()
47    })
48}
49
50/// quick mock info with just the sender
51pub fn mock_info(sender: &str) -> MessageInfo {
52    MessageInfo {
53        sender: Addr::unchecked(sender),
54        funds: vec![],
55    }
56}
57
58/// mock_dependencies replacement for cosmwasm_std::testing::mock_dependencies
59pub fn mock_dependencies(
60    contract_balance: &[Coin],
61) -> OwnedDeps<MockStorage, MockApi, MarsMockQuerier> {
62    let contract_addr = Addr::unchecked(MOCK_CONTRACT_ADDR);
63    let custom_querier: MarsMockQuerier = MarsMockQuerier::new(MockQuerier::new(&[(
64        &contract_addr.to_string(),
65        contract_balance,
66    )]));
67
68    OwnedDeps {
69        storage: MockStorage::default(),
70        api: MockApi::default(),
71        querier: custom_querier,
72    }
73}