test-suite 3.15.0

Stargaze Test Suite for Launchpad
Documentation
use cosmwasm_std::{coin, Addr, Timestamp};
use cw_multi_test::Executor;
use sg_multi_test::StargazeApp;
use sg_std::{GENESIS_MINT_START_TIME, NATIVE_DENOM};
use whitelist_mtree::msg::InstantiateMsg as WhitelistInstantiateMsg;

use crate::common_setup::contract_boxes::contract_whitelist_merkletree;

pub const WHITELIST_AMOUNT: u128 = 66_000_000;
const WL_PER_ADDRESS_LIMIT: u32 = 1;

pub fn setup_whitelist_mtree_contract(
    router: &mut StargazeApp,
    creator: &Addr,
    whitelist_code_id: Option<u64>,
    denom: Option<&str>,
    merkle_root: String,
) -> Addr {
    let whitelist_code_id = match whitelist_code_id {
        Some(value) => value,
        None => router.store_code(contract_whitelist_merkletree()),
    };
    let denom = match denom {
        Some(value) => value,
        None => NATIVE_DENOM,
    };

    let msg = WhitelistInstantiateMsg {
        start_time: Timestamp::from_nanos(GENESIS_MINT_START_TIME + 100),
        end_time: Timestamp::from_nanos(GENESIS_MINT_START_TIME + 10_000_000),
        mint_price: coin(WHITELIST_AMOUNT, denom),
        per_address_limit: WL_PER_ADDRESS_LIMIT,
        admins: vec![creator.to_string()],
        admins_mutable: true,
        merkle_root,
        merkle_tree_uri: None,
    };
    router
        .instantiate_contract(
            whitelist_code_id,
            creator.clone(),
            &msg,
            &[],
            "whitelist",
            None,
        )
        .unwrap()
}