test_suite/common_setup/setup_minter/open_edition_minter/
mock_params.rs1use 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}
96pub 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}