archway-bindings 0.2.1

CosmWasm bindings to interact with Archway's modules
Documentation
use std::marker::PhantomData;

use cosmwasm_std::testing::{MockApi, MockQuerier, MockStorage, MOCK_CONTRACT_ADDR};
use cosmwasm_std::{Binary, Coin, ContractResult, OwnedDeps, SystemResult};

use crate::ArchwayQuery;

pub fn mock_dependencies(
    custom_handler: fn(&ArchwayQuery) -> ContractResult<Binary>,
) -> OwnedDeps<MockStorage, MockApi, MockQuerier<ArchwayQuery>, ArchwayQuery> {
    mock_dependencies_with_balance(&[], custom_handler)
}

pub fn mock_dependencies_with_balance(
    contract_balance: &[Coin],
    custom_handler: fn(&ArchwayQuery) -> ContractResult<Binary>,
) -> OwnedDeps<MockStorage, MockApi, MockQuerier<ArchwayQuery>, ArchwayQuery> {
    let custom_querier: MockQuerier<ArchwayQuery> =
        MockQuerier::new(&[(MOCK_CONTRACT_ADDR, contract_balance)])
            .with_custom_handler(move |query| SystemResult::Ok(custom_handler(query)));

    OwnedDeps {
        storage: MockStorage::default(),
        api: MockApi::default(),
        querier: custom_querier,
        custom_query_type: PhantomData,
    }
}