test_suite/common_setup/setup_minter/open_edition_minter/
mock_params.rs

1use cosmwasm_std::{coin, Coin, Timestamp, Uint128};
2use open_edition_factory::types::NftData;
3use open_edition_factory::{
4    msg::{OpenEditionMinterCreateMsg, OpenEditionMinterInitMsgExtension},
5    state::{OpenEditionMinterParams, ParamsExtension},
6};
7use sg2::msg::CollectionParams;
8use sg_std::{GENESIS_MINT_START_TIME, NATIVE_DENOM};
9
10use crate::common_setup::msg::OpenEditionMinterCustomParams;
11use crate::common_setup::setup_minter::common::constants::{
12    CREATION_FEE, DEV_ADDRESS, MAX_TOKEN_LIMIT, MINT_FEE_FAIR_BURN, MIN_MINT_PRICE_OPEN_EDITION,
13};
14
15#[allow(clippy::too_many_arguments)]
16pub fn mock_init_minter_extension(
17    start_time: Option<Timestamp>,
18    end_time: Option<Timestamp>,
19    per_address_limit_minter: Option<u32>,
20    num_tokens: Option<u32>,
21    mint_price: Option<Coin>,
22    nft_data: NftData,
23    payment_address: Option<String>,
24    whitelist: Option<String>,
25) -> OpenEditionMinterInitMsgExtension {
26    OpenEditionMinterInitMsgExtension {
27        nft_data,
28        start_time: start_time.unwrap_or(Timestamp::from_nanos(GENESIS_MINT_START_TIME)),
29        mint_price: mint_price.unwrap_or_else(|| coin(MIN_MINT_PRICE_OPEN_EDITION, NATIVE_DENOM)),
30        per_address_limit: per_address_limit_minter.unwrap_or(1u32),
31        end_time,
32        payment_address,
33        num_tokens,
34        whitelist,
35    }
36}
37
38#[allow(clippy::too_many_arguments)]
39pub fn mock_create_minter(
40    start_time: Option<Timestamp>,
41    end_time: Option<Timestamp>,
42    mint_price: Option<Coin>,
43    per_address_limit_minter: Option<u32>,
44    num_tokens: Option<u32>,
45    default_nft_data: NftData,
46    collection_params: CollectionParams,
47    payment_address: Option<String>,
48    whitelist: Option<String>,
49) -> OpenEditionMinterCreateMsg {
50    OpenEditionMinterCreateMsg {
51        init_msg: mock_init_minter_extension(
52            start_time,
53            end_time,
54            per_address_limit_minter,
55            num_tokens,
56            mint_price,
57            default_nft_data,
58            payment_address,
59            whitelist,
60        ),
61        collection_params,
62    }
63}
64
65pub fn mock_create_minter_init_msg(
66    collection_params: CollectionParams,
67    init_msg: OpenEditionMinterInitMsgExtension,
68) -> OpenEditionMinterCreateMsg {
69    OpenEditionMinterCreateMsg {
70        init_msg,
71        collection_params,
72    }
73}
74
75pub fn mock_params_proper() -> OpenEditionMinterParams {
76    OpenEditionMinterParams {
77        code_id: 1,
78        allowed_sg721_code_ids: vec![1, 3, 5, 6],
79        frozen: false,
80        creation_fee: coin(CREATION_FEE, NATIVE_DENOM),
81        min_mint_price: coin(MIN_MINT_PRICE_OPEN_EDITION, NATIVE_DENOM),
82        mint_fee_bps: MINT_FEE_FAIR_BURN,
83        max_trading_offset_secs: 60 * 60 * 24 * 7,
84        extension: ParamsExtension {
85            max_token_limit: MAX_TOKEN_LIMIT,
86            max_per_address_limit: 10,
87            airdrop_mint_fee_bps: 100,
88            airdrop_mint_price: Coin {
89                denom: NATIVE_DENOM.to_string(),
90                amount: Uint128::new(100_000_000u128),
91            },
92            dev_fee_address: DEV_ADDRESS.to_string(),
93        },
94    }
95}
96// Pass custom params to change minter values
97pub fn mock_params_custom(custom_params: OpenEditionMinterCustomParams) -> OpenEditionMinterParams {
98    let denom = custom_params.denom.unwrap_or(NATIVE_DENOM);
99    let mint_fee_bps = custom_params.mint_fee_bps.unwrap_or(MINT_FEE_FAIR_BURN);
100    let airdrop_mint_price_amount = custom_params
101        .airdrop_mint_price_amount
102        .unwrap_or(Uint128::new(MIN_MINT_PRICE_OPEN_EDITION));
103    OpenEditionMinterParams {
104        code_id: 1,
105        allowed_sg721_code_ids: vec![1, 3, 5, 6],
106        frozen: false,
107        creation_fee: coin(CREATION_FEE, NATIVE_DENOM),
108        min_mint_price: coin(MIN_MINT_PRICE_OPEN_EDITION, denom),
109        mint_fee_bps,
110        max_trading_offset_secs: 60 * 60 * 24 * 7,
111        extension: ParamsExtension {
112            max_token_limit: MAX_TOKEN_LIMIT,
113            max_per_address_limit: 10,
114            airdrop_mint_fee_bps: 100,
115            airdrop_mint_price: Coin {
116                denom: denom.to_string(),
117                amount: airdrop_mint_price_amount,
118            },
119            dev_fee_address: DEV_ADDRESS.to_string(),
120        },
121    }
122}
123
124pub fn mock_params_custom_min_mint_price(
125    min_mint_price: Coin,
126    airdrop_mint_price: Coin,
127) -> OpenEditionMinterParams {
128    OpenEditionMinterParams {
129        code_id: 1,
130        allowed_sg721_code_ids: vec![1, 3, 5, 6],
131        frozen: false,
132        creation_fee: coin(CREATION_FEE, NATIVE_DENOM),
133        min_mint_price,
134        mint_fee_bps: MINT_FEE_FAIR_BURN,
135        max_trading_offset_secs: 60 * 60 * 24 * 7,
136        extension: ParamsExtension {
137            max_token_limit: MAX_TOKEN_LIMIT,
138            max_per_address_limit: 10,
139            airdrop_mint_fee_bps: 100,
140            airdrop_mint_price,
141            dev_fee_address: DEV_ADDRESS.to_string(),
142        },
143    }
144}