diff --git a/README.md b/README.md index 7455346..44535ac 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,29 @@ # Smart Contract basic usage/deployment + Examples provided for the Archway blockchain using `archwayd` CLI tool ## Deployment + ### Store contract code + ``` archwayd tx wasm store cosmos_reward_pool_contract.wasm --from admin --gas-prices $(archwayd q rewards estimate-fees 1 | jq -r '.gas_unit_price | (.amount + .denom)') -y --gas 5000000 | jq -r '.txhash' ``` ### Query code id + ``` archwayd q tx | jq -r '.logs [0] .events[] | select(.type=="store_code").attributes[] | select(.key=="code_id") | .value' ``` ### Instantiate contract + ``` archwayd tx wasm instantiate '{}' --gas-prices $(archwayd q rewards estimate-fees 1 | jq -r '.gas_unit_price | (.amount + .denom)') -y --gas 5000000 --label test123 --no-admin --from admin | jq -r '.txhash' ``` ### Get the contract address + ``` archwayd q tx | jq -r '.logs [0] .events[] | select(.type=="instantiate").attributes[] | select(.key=="_contract_address") | .value' ``` @@ -25,47 +31,45 @@ archwayd q tx | jq -r '.logs [0] .events[] | select(.type=="i The latest deployed contract is archway124ljgdsns7zqngyx0jengsh90kh06jv9dqq8kxuvnw4509mhrwgqmlnrg7 ## Function calls + **deposit** — Create a new reward pool -``` -archwayd tx wasm execute archway124ljgdsns7zqngyx0jengsh90kh06jv9dqq8kxuvnw4509mhrwgqmlnrg7 '{ "deposit" : { "campaign_id": "12345" } }' --amount 1000000aconst --from admin --gas-prices $(archwayd q rewards estimate-fees 1 | jq -r '.gas_unit_price | (.amount + .denom)') -y --gas 400000 | jq -r '.txhash' -``` -**check** — Check if the reward pool has been created and deduct creation fee ``` -archwayd tx wasm execute archway124ljgdsns7zqngyx0jengsh90kh06jv9dqq8kxuvnw4509mhrwgqmlnrg7 '{ "check" : {"requests": [{"campaign_id": "12345", "amount": "900000"}]} }' --from admin --gas-prices $(archwayd q rewards estimate-fees 1 | jq -r '.gas_unit_price | (.amount + .denom)') -y --gas 400000 | jq -r '.txhash' +archwayd tx wasm execute archway124ljgdsns7zqngyx0jengsh90kh06jv9dqq8kxuvnw4509mhrwgqmlnrg7 '{ "deposit" : { "campaign_id": "12345" } }' --amount 1000000aconst --from admin --gas-prices $(archwayd q rewards estimate-fees 1 | jq -r '.gas_unit_price | (.amount + .denom)') -y --gas 400000 | jq -r '.txhash' ``` **reward_all** — Assign reward to a user + ``` archwayd tx wasm execute archway124ljgdsns7zqngyx0jengsh90kh06jv9dqq8kxuvnw4509mhrwgqmlnrg7 '{ "reward_all" : {"user_rewards": [{"campaign_id": "12345", "user_address": "archway18v032krrt0sud25y2vk9vj49lvwkg2hxlxupwf", "amount": "10000"}]} }' --from admin --gas-prices $(archwayd q rewards estimate-fees 1 | jq -r '.gas_unit_price | (.amount + .denom)') -y --gas 400000 | jq -r '.txhash' ``` **claim** — Claim a reward that was assigned to a user + ``` archwayd tx wasm execute archway124ljgdsns7zqngyx0jengsh90kh06jv9dqq8kxuvnw4509mhrwgqmlnrg7 '{ "claim" : {"campaign_id": "12345"} }' --from admin--gas-prices $(archwayd q rewards estimate-fees 1 | jq -r '.gas_unit_price | (.amount + .denom)') -y --gas 400000 | jq -r '.txhash' ``` **withdraw** — Withdraw a specific amount of coins from the contract -``` -archwayd tx wasm execute archway124ljgdsns7zqngyx0jengsh90kh06jv9dqq8kxuvnw4509mhrwgqmlnrg7 '{ "withdraw" : {"amount": "1000"} }' --from admin --gas-prices $(archwayd q rewards estimate-fees 1 | jq -r '.gas_unit_price | (.amount + .denom)') -y --gas 400000 | jq -r '.txhash' -``` -**withdraw_fee** — Withdraw only campaign creation fees ``` -archwayd tx wasm execute archway124ljgdsns7zqngyx0jengsh90kh06jv9dqq8kxuvnw4509mhrwgqmlnrg7 '{ "withdraw_fee" : {} }' --from admin --gas-prices $(archwayd q rewards estimate-fees 1 | jq -r '.gas_unit_price | (.amount + .denom)') -y --gas 400000 | jq -r '.txhash' +archwayd tx wasm execute archway124ljgdsns7zqngyx0jengsh90kh06jv9dqq8kxuvnw4509mhrwgqmlnrg7 '{ "withdraw" : {"amount": "1000"} }' --from admin --gas-prices $(archwayd q rewards estimate-fees 1 | jq -r '.gas_unit_price | (.amount + .denom)') -y --gas 400000 | jq -r '.txhash' ``` **set_cpool** — Modify the amount of a campaign pool, create new if it doesn’t exist + ``` archwayd tx wasm execute archway124ljgdsns7zqngyx0jengsh90kh06jv9dqq8kxuvnw4509mhrwgqmlnrg7 '{ "set_cpool" : {"campaign_id": "1111", "amount": "1000"} }' --from admin --gas-prices $(archwayd q rewards estimate-fees 1 | jq -r '.gas_unit_price | (.amount + .denom)') -y --gas 400000 | jq -r '.txhash' ``` **set_upool** — Modify the amount of a campaign pool, create new if it doesn’t exist + ``` archwayd tx wasm execute archway124ljgdsns7zqngyx0jengsh90kh06jv9dqq8kxuvnw4509mhrwgqmlnrg7 '{ "set_upool" : {"user_address": "", "reward_pool_id": "2222", "amount": "1000"} }' --from admin --gas-prices $(archwayd q rewards estimate-fees 1 | jq -r '.gas_unit_price | (.amount + .denom)') -y --gas 400000 | jq -r '.txhash' ``` **set_claim_fee** — Set the new value for the fee that user must send when claiming the reward + ``` archwayd tx wasm execute archway124ljgdsns7zqngyx0jengsh90kh06jv9dqq8kxuvnw4509mhrwgqmlnrg7 '{ "set_claim_fee" : {"claim_fee": "10000000"} }' --from admin --gas-prices $(archwayd q rewards estimate-fees 1 | jq -r '.gas_unit_price | (.amount + .denom)') -y --gas 400000 | jq -r '.txhash' ``` @@ -73,16 +77,19 @@ archwayd tx wasm execute archway124ljgdsns7zqngyx0jengsh90kh06jv9dqq8kxuvnw4509m ## Queries **get_cpool** — Query campaign pool + ``` archwayd q wasm contract-state smart archway124ljgdsns7zqngyx0jengsh90kh06jv9dqq8kxuvnw4509mhrwgqmlnrg7 '{ "get_cpool" : { "campaign_id": "12345" } }' ``` **get_upool** — Query user pool for specific user and reward pool + ``` archwayd q wasm contract-state smart archway124ljgdsns7zqngyx0jengsh90kh06jv9dqq8kxuvnw4509mhrwgqmlnrg7 '{ "get_upool" : { "user_address": "archway18v032krrt0sud25y2vk9vj49lvwkg2hxlxupwf", "campaign_id": "12345" } }' ``` **get_claim_fee** — Query campaign pool + ``` archwayd q wasm contract-state smart archway124ljgdsns7zqngyx0jengsh90kh06jv9dqq8kxuvnw4509mhrwgqmlnrg7 '{ "get_claim_fee" : {} }' ``` diff --git a/src/contract.rs b/src/contract.rs index 1b90286..a090b04 100644 --- a/src/contract.rs +++ b/src/contract.rs @@ -2,7 +2,7 @@ use cosmwasm_std::entry_point; use cosmwasm_std::{DepsMut, Env, Response, MessageInfo, StdError, CosmosMsg, BankMsg, Coin, Uint128, Deps, StdResult, Binary, to_binary, Empty}; use crate::state::{Campaign, CAMPAIGN_POOL, State, STATE, USER_POOL}; -use crate::msg::{CampaignCheckRequest, CampaignCheckResponse, ExecuteMsg, InstantiateMsg, QueryMsg, UserRewardRequest, UserRewardResponse}; +use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg, UserRewardRequest, UserRewardResponse}; use cw2::{get_contract_version, set_contract_version}; use semver::Version; @@ -19,7 +19,6 @@ pub fn instantiate( let state = State { owner: deps.api.addr_canonicalize(info.sender.as_str())?, - withdrawable_creation_fee: Uint128::zero(), claim_reward_fee: msg.claim_reward_fee.unwrap_or(Uint128::new(1000000000000000000)), }; @@ -79,23 +78,12 @@ pub fn execute( info, campaign_id, ), - ExecuteMsg::Check { requests } => check( - deps, - env, - info, - requests, - ), ExecuteMsg::Withdraw { amount } => withdraw( deps, env, info, amount, ), - ExecuteMsg::WithdrawFee {} => withdraw_fee( - deps, - env, - info, - ), ExecuteMsg::SetRefundable { campaign_id } => set_refundable( deps, env, @@ -283,56 +271,6 @@ pub fn claim( } } -pub fn check( - deps: DepsMut, - _env: Env, - info: MessageInfo, - requests: Vec, -) -> Result { - let mut state = STATE.load(deps.storage)?; - - if deps.api.addr_canonicalize(info.sender.as_str())? != state.owner { - return Err(StdError::generic_err("Only contract owner can call this function")); - } - - if requests.is_empty() { - return Err(StdError::generic_err("No reward requests provided")); - } - - let mut res = vec![]; - - for request in requests { - match CAMPAIGN_POOL.may_load(deps.storage, request.campaign_id.clone())? { - Some(mut campaign) => { - let delta = campaign.amount.checked_sub(request.amount); - if delta.is_err() { - return Err(StdError::generic_err("Provided amount is greater than the current campaign amount")); - } - - state.withdrawable_creation_fee += delta.unwrap(); - STATE.save(deps.storage, &state)?; - - res.push(CampaignCheckResponse { - campaign_id: request.campaign_id.clone(), - owner: campaign.owner.clone().to_string(), - amount_before_deduction: campaign.amount, - }); - - campaign.amount = request.amount; - - CAMPAIGN_POOL.save(deps.storage, request.campaign_id.clone(), &campaign)?; - } - None => { - return Err(StdError::generic_err("Campaign does not exist")) - } - } - } - Ok(Response::new() - .add_attribute("method", "check") - .set_data(to_binary(&res).unwrap()) - ) -} - pub fn withdraw( deps: DepsMut, env: Env, @@ -368,34 +306,6 @@ pub fn withdraw( return Ok(res) } -pub fn withdraw_fee( - deps: DepsMut, - _env: Env, - info: MessageInfo, -) -> Result { - let mut state = STATE.load(deps.storage)?; - - if deps.api.addr_canonicalize(info.sender.as_str())? != state.owner { - return Err(StdError::generic_err("Only contract owner can withdraw")); - } - - let amount = state.withdrawable_creation_fee; - state.withdrawable_creation_fee = Uint128::zero(); - - STATE.save(deps.storage, &state)?; - let bond_denom = deps.querier.query_bonded_denom()?; - let to_address = deps.api.addr_humanize(&state.owner)?.to_string(); - - let res = Response::new() - .add_attribute("method", "withdraw_fee") - .add_message(CosmosMsg::Bank(BankMsg::Send { - to_address, - amount: vec![Coin { denom: bond_denom.clone(), amount }], - })); - - return Ok(res) -} - pub fn set_refundable( deps: DepsMut, _env: Env, diff --git a/src/msg.rs b/src/msg.rs index dce1703..13aab77 100644 --- a/src/msg.rs +++ b/src/msg.rs @@ -20,19 +20,6 @@ pub struct UserRewardResponse { pub status: bool, } -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct CampaignCheckRequest { - pub campaign_id: String, - pub amount: Uint128, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct CampaignCheckResponse { - pub campaign_id: String, - pub owner: String, - pub amount_before_deduction: Uint128, -} - #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] #[serde(rename_all = "snake_case")] pub enum ExecuteMsg { @@ -45,13 +32,9 @@ pub enum ExecuteMsg { Claim { campaign_id: String }, - Check { - requests: Vec - }, Withdraw { amount: Uint128, }, - WithdrawFee {}, SetRefundable { campaign_id: String }, diff --git a/src/state.rs b/src/state.rs index 3db28c8..7f504ff 100644 --- a/src/state.rs +++ b/src/state.rs @@ -13,7 +13,6 @@ pub struct Campaign { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct State { pub owner: CanonicalAddr, - pub withdrawable_creation_fee: Uint128, pub claim_reward_fee: Uint128, } diff --git a/src/tests/execute/cancel.rs b/src/tests/execute/cancel.rs index ef171d9..9b95148 100644 --- a/src/tests/execute/cancel.rs +++ b/src/tests/execute/cancel.rs @@ -9,11 +9,11 @@ use cosmwasm_std::{ }; use crate::contract::{ - cancel, check, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, - set_refundable, set_upool, withdraw, withdraw_fee, + cancel, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, + set_refundable, set_upool, withdraw, }; use crate::msg::{ - CampaignCheckRequest, CampaignCheckResponse, InstantiateMsg, UserRewardRequest, + InstantiateMsg, UserRewardRequest, UserRewardResponse, }; use crate::state::{Campaign, State, CAMPAIGN_POOL, STATE, USER_POOL}; diff --git a/src/tests/execute/check.rs b/src/tests/execute/check.rs deleted file mode 100644 index f7ea75a..0000000 --- a/src/tests/execute/check.rs +++ /dev/null @@ -1,190 +0,0 @@ -use std::vec; - -use cosmwasm_std::testing::{ - mock_dependencies, mock_dependencies_with_balance, mock_env, mock_info, -}; -use cosmwasm_std::{ - coins, from_binary, from_json, Addr, Api, BankMsg, CanonicalAddr, CosmosMsg, DepsMut, Env, - MessageInfo, StdError, SubMsg, Uint128, -}; - -use crate::contract::{ - cancel, check, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, - set_refundable, set_upool, withdraw, withdraw_fee, -}; -use crate::msg::{ - CampaignCheckRequest, CampaignCheckResponse, InstantiateMsg, UserRewardRequest, - UserRewardResponse, -}; -use crate::state::{Campaign, State, CAMPAIGN_POOL, STATE, USER_POOL}; - -#[test] -fn test_check() { - let mut deps = mock_dependencies(); - let env = mock_env(); - - instantiate( - deps.as_mut(), - env.clone(), - mock_info("creator", &[]), - InstantiateMsg { - claim_reward_fee: Some(Uint128::new(999)), - }, - ) - .unwrap(); - - deposit( - deps.as_mut(), - env.clone(), - mock_info("sender1", &coins(100, "")), - "test_campaign_1".to_string(), - ) - .unwrap(); - - deposit( - deps.as_mut(), - env.clone(), - mock_info("sender2", &coins(200, "")), - "test_campaign_2".to_string(), - ) - .unwrap(); - - // successful checks on two campaigns - let resp = check( - deps.as_mut(), - env.clone(), - mock_info("creator", &[]), - vec![ - CampaignCheckRequest { - campaign_id: "test_campaign_1".to_string(), - amount: Uint128::new(50), - }, - CampaignCheckRequest { - campaign_id: "test_campaign_2".to_string(), - amount: Uint128::new(80), - }, - ], - ) - .unwrap(); - - let check_responses: Vec = from_json(resp.data.unwrap()).unwrap(); - assert_eq!( - check_responses, - vec![ - CampaignCheckResponse { - campaign_id: "test_campaign_1".to_string(), - owner: "sender1".to_string(), - amount_before_deduction: Uint128::new(100), - }, - CampaignCheckResponse { - campaign_id: "test_campaign_2".to_string(), - owner: "sender2".to_string(), - amount_before_deduction: Uint128::new(200), - } - ] - ); - - // verify internal state of campaign 1 - let campaign1 = CAMPAIGN_POOL - .load(deps.as_ref().storage, "test_campaign_1".to_string()) - .unwrap(); - assert_eq!( - campaign1, - Campaign { - amount: Uint128::new(50), - owner: Addr::unchecked("sender1"), - refundable: false, - } - ); - - // verify internal state of campaign 2 - let campaign2 = CAMPAIGN_POOL - .load(deps.as_ref().storage, "test_campaign_2".to_string()) - .unwrap(); - assert_eq!( - campaign2, - Campaign { - amount: Uint128::new(80), - owner: Addr::unchecked("sender2"), - refundable: false, - } - ); - - // verify withdrawable creation fee - let state = STATE.load(deps.as_ref().storage).unwrap(); - assert_eq!( - state, - State { - owner: deps.api.addr_canonicalize("creator").unwrap(), - withdrawable_creation_fee: Uint128::new(170), - claim_reward_fee: Uint128::new(999), - } - ); -} - -#[test] -fn test_check_nonexistent_campaign() { - let mut deps = mock_dependencies(); - let env = mock_env(); - - instantiate( - deps.as_mut(), - env.clone(), - mock_info("creator", &[]), - InstantiateMsg { - claim_reward_fee: Some(Uint128::new(999)), - }, - ) - .unwrap(); - - deposit( - deps.as_mut(), - env.clone(), - mock_info("sender1", &coins(100, "")), - "test_campaign_1".to_string(), - ) - .unwrap(); - - // check two campaigns, one non-existent - let res = check( - deps.as_mut(), - env.clone(), - mock_info("creator", &[]), - vec![ - CampaignCheckRequest { - campaign_id: "test_campaign_1".to_string(), - amount: Uint128::new(50), - }, - CampaignCheckRequest { - campaign_id: "test_campaign_2".to_string(), - amount: Uint128::new(80), - }, - ], - ); - - assert_eq!(res, Err(StdError::generic_err("Campaign does not exist"))); - - // verify internal state of campaign 1 - let campaign1 = CAMPAIGN_POOL - .load(deps.as_ref().storage, "test_campaign_1".to_string()) - .unwrap(); - assert_eq!( - campaign1, - Campaign { - amount: Uint128::new(50), - owner: Addr::unchecked("sender1"), - refundable: false, - } - ); - - // verify withdrawable creation fee - let state = STATE.load(deps.as_ref().storage).unwrap(); - assert_eq!( - state, - State { - owner: deps.api.addr_canonicalize("creator").unwrap(), - withdrawable_creation_fee: Uint128::new(50), - claim_reward_fee: Uint128::new(999), - } - ); -} diff --git a/src/tests/execute/claim.rs b/src/tests/execute/claim.rs index cc36845..f5a83fc 100644 --- a/src/tests/execute/claim.rs +++ b/src/tests/execute/claim.rs @@ -9,11 +9,11 @@ use cosmwasm_std::{ }; use crate::contract::{ - cancel, check, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, - set_refundable, set_upool, withdraw, withdraw_fee, + cancel, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, + set_refundable, set_upool, withdraw, }; use crate::msg::{ - CampaignCheckRequest, CampaignCheckResponse, InstantiateMsg, UserRewardRequest, + InstantiateMsg, UserRewardRequest, UserRewardResponse, }; use crate::state::{Campaign, State, CAMPAIGN_POOL, STATE, USER_POOL}; diff --git a/src/tests/execute/deposit.rs b/src/tests/execute/deposit.rs index eb802c7..f281c74 100644 --- a/src/tests/execute/deposit.rs +++ b/src/tests/execute/deposit.rs @@ -9,11 +9,11 @@ use cosmwasm_std::{ }; use crate::contract::{ - cancel, check, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, - set_refundable, set_upool, withdraw, withdraw_fee, + cancel, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, + set_refundable, set_upool, withdraw, }; use crate::msg::{ - CampaignCheckRequest, CampaignCheckResponse, InstantiateMsg, UserRewardRequest, + InstantiateMsg, UserRewardRequest, UserRewardResponse, }; use crate::state::{Campaign, State, CAMPAIGN_POOL, STATE, USER_POOL}; diff --git a/src/tests/execute/mod.rs b/src/tests/execute/mod.rs index b74b59b..926a2a4 100644 --- a/src/tests/execute/mod.rs +++ b/src/tests/execute/mod.rs @@ -1,5 +1,4 @@ mod cancel; -mod check; mod claim; mod deposit; mod reward_all; @@ -7,5 +6,4 @@ mod set_claim_fee; mod set_cpool; mod set_refundable; mod set_upool; -mod withdraw; -mod withdraw_fee; +mod withdraw; \ No newline at end of file diff --git a/src/tests/execute/reward_all.rs b/src/tests/execute/reward_all.rs index 99f422f..da6eb6a 100644 --- a/src/tests/execute/reward_all.rs +++ b/src/tests/execute/reward_all.rs @@ -9,11 +9,11 @@ use cosmwasm_std::{ }; use crate::contract::{ - cancel, check, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, - set_refundable, set_upool, withdraw, withdraw_fee, + cancel, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, + set_refundable, set_upool, withdraw, }; use crate::msg::{ - CampaignCheckRequest, CampaignCheckResponse, InstantiateMsg, UserRewardRequest, + InstantiateMsg, UserRewardRequest, UserRewardResponse, }; use crate::state::{Campaign, State, CAMPAIGN_POOL, STATE, USER_POOL}; diff --git a/src/tests/execute/set_claim_fee.rs b/src/tests/execute/set_claim_fee.rs index 2201224..f73dba8 100644 --- a/src/tests/execute/set_claim_fee.rs +++ b/src/tests/execute/set_claim_fee.rs @@ -9,11 +9,11 @@ use cosmwasm_std::{ }; use crate::contract::{ - cancel, check, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, - set_refundable, set_upool, withdraw, withdraw_fee, + cancel, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, + set_refundable, set_upool, withdraw, }; use crate::msg::{ - CampaignCheckRequest, CampaignCheckResponse, InstantiateMsg, UserRewardRequest, + InstantiateMsg, UserRewardRequest, UserRewardResponse, }; use crate::state::{Campaign, State, CAMPAIGN_POOL, STATE, USER_POOL}; @@ -47,7 +47,6 @@ fn test_set_claim_fee() { state, State { owner: deps.api.addr_canonicalize("creator").unwrap(), - withdrawable_creation_fee: Uint128::new(0), claim_reward_fee: Uint128::new(456), } ); @@ -87,7 +86,6 @@ fn test_set_claim_fee_unauthorized() { state, State { owner: deps.api.addr_canonicalize("creator").unwrap(), - withdrawable_creation_fee: Uint128::new(0), claim_reward_fee: Uint128::new(999), } ); diff --git a/src/tests/execute/set_cpool.rs b/src/tests/execute/set_cpool.rs index 471badc..04cb8a8 100644 --- a/src/tests/execute/set_cpool.rs +++ b/src/tests/execute/set_cpool.rs @@ -9,11 +9,11 @@ use cosmwasm_std::{ }; use crate::contract::{ - cancel, check, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, - set_refundable, set_upool, withdraw, withdraw_fee, + cancel, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, + set_refundable, set_upool, withdraw, }; use crate::msg::{ - CampaignCheckRequest, CampaignCheckResponse, InstantiateMsg, UserRewardRequest, + InstantiateMsg, UserRewardRequest, UserRewardResponse, }; use crate::state::{Campaign, State, CAMPAIGN_POOL, STATE, USER_POOL}; diff --git a/src/tests/execute/set_refundable.rs b/src/tests/execute/set_refundable.rs index ff99a57..798367f 100644 --- a/src/tests/execute/set_refundable.rs +++ b/src/tests/execute/set_refundable.rs @@ -9,11 +9,11 @@ use cosmwasm_std::{ }; use crate::contract::{ - cancel, check, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, - set_refundable, set_upool, withdraw, withdraw_fee, + cancel, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, + set_refundable, set_upool, withdraw, }; use crate::msg::{ - CampaignCheckRequest, CampaignCheckResponse, InstantiateMsg, UserRewardRequest, + InstantiateMsg, UserRewardRequest, UserRewardResponse, }; use crate::state::{Campaign, State, CAMPAIGN_POOL, STATE, USER_POOL}; diff --git a/src/tests/execute/set_upool.rs b/src/tests/execute/set_upool.rs index 1fc763f..1b170e3 100644 --- a/src/tests/execute/set_upool.rs +++ b/src/tests/execute/set_upool.rs @@ -9,11 +9,11 @@ use cosmwasm_std::{ }; use crate::contract::{ - cancel, check, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, - set_refundable, set_upool, withdraw, withdraw_fee, + cancel, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, + set_refundable, set_upool, withdraw, }; use crate::msg::{ - CampaignCheckRequest, CampaignCheckResponse, InstantiateMsg, UserRewardRequest, + InstantiateMsg, UserRewardRequest, UserRewardResponse, }; use crate::state::{Campaign, State, CAMPAIGN_POOL, STATE, USER_POOL}; diff --git a/src/tests/execute/withdraw.rs b/src/tests/execute/withdraw.rs index 97a8f2d..009ac9e 100644 --- a/src/tests/execute/withdraw.rs +++ b/src/tests/execute/withdraw.rs @@ -9,11 +9,11 @@ use cosmwasm_std::{ }; use crate::contract::{ - cancel, check, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, - set_refundable, set_upool, withdraw, withdraw_fee, + cancel, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, + set_refundable, set_upool, withdraw, }; use crate::msg::{ - CampaignCheckRequest, CampaignCheckResponse, InstantiateMsg, UserRewardRequest, + InstantiateMsg, UserRewardRequest, UserRewardResponse, }; use crate::state::{Campaign, State, CAMPAIGN_POOL, STATE, USER_POOL}; diff --git a/src/tests/execute/withdraw_fee.rs b/src/tests/execute/withdraw_fee.rs deleted file mode 100644 index 3af781b..0000000 --- a/src/tests/execute/withdraw_fee.rs +++ /dev/null @@ -1,136 +0,0 @@ -use std::vec; - -use cosmwasm_std::testing::{ - mock_dependencies, mock_dependencies_with_balance, mock_env, mock_info, -}; -use cosmwasm_std::{ - coins, from_binary, from_json, Addr, Api, BankMsg, CanonicalAddr, CosmosMsg, DepsMut, Env, - MessageInfo, StdError, SubMsg, Uint128, -}; - -use crate::contract::{ - cancel, check, claim, deposit, instantiate, reward_all, set_claim_fee, set_cpool, - set_refundable, set_upool, withdraw, withdraw_fee, -}; -use crate::msg::{ - CampaignCheckRequest, CampaignCheckResponse, InstantiateMsg, UserRewardRequest, - UserRewardResponse, -}; -use crate::state::{Campaign, State, CAMPAIGN_POOL, STATE, USER_POOL}; - -#[test] -fn test_withdraw_fee() { - let mut deps = mock_dependencies(); - let env = mock_env(); - - instantiate( - deps.as_mut(), - env.clone(), - mock_info("creator", &[]), - InstantiateMsg { - claim_reward_fee: Some(Uint128::new(999)), - }, - ) - .unwrap(); - - deposit( - deps.as_mut(), - env.clone(), - mock_info("sender1", &coins(100, "")), - "test_campaign_1".to_string(), - ) - .unwrap(); - - deposit( - deps.as_mut(), - env.clone(), - mock_info("sender2", &coins(200, "")), - "test_campaign_2".to_string(), - ) - .unwrap(); - - // successful checks on two campaigns - check( - deps.as_mut(), - env.clone(), - mock_info("creator", &[]), - vec![ - CampaignCheckRequest { - campaign_id: "test_campaign_1".to_string(), - amount: Uint128::new(50), - }, - CampaignCheckRequest { - campaign_id: "test_campaign_2".to_string(), - amount: Uint128::new(80), - }, - ], - ) - .unwrap(); - - // withdraw fee - let resp = withdraw_fee(deps.as_mut(), env.clone(), mock_info("creator", &[])).unwrap(); - assert_eq!( - resp.messages, - vec![SubMsg::new(CosmosMsg::Bank(BankMsg::Send { - to_address: "creator".to_string(), - amount: coins(170, ""), - }))] - ); -} - -#[test] -fn test_withdraw_fee_unauthorized() { - let mut deps = mock_dependencies(); - let env = mock_env(); - - instantiate( - deps.as_mut(), - env.clone(), - mock_info("creator", &[]), - InstantiateMsg { - claim_reward_fee: Some(Uint128::new(999)), - }, - ) - .unwrap(); - - deposit( - deps.as_mut(), - env.clone(), - mock_info("sender1", &coins(100, "")), - "test_campaign_1".to_string(), - ) - .unwrap(); - - deposit( - deps.as_mut(), - env.clone(), - mock_info("sender2", &coins(200, "")), - "test_campaign_2".to_string(), - ) - .unwrap(); - - // successful checks on two campaigns - check( - deps.as_mut(), - env.clone(), - mock_info("creator", &[]), - vec![ - CampaignCheckRequest { - campaign_id: "test_campaign_1".to_string(), - amount: Uint128::new(50), - }, - CampaignCheckRequest { - campaign_id: "test_campaign_2".to_string(), - amount: Uint128::new(80), - }, - ], - ) - .unwrap(); - - // withdraw fee - let res = withdraw_fee(deps.as_mut(), env.clone(), mock_info("not_creator", &[])); - assert_eq!( - res, - Err(StdError::generic_err("Only contract owner can withdraw")) - ); -} diff --git a/src/tests/instantiate.rs b/src/tests/instantiate.rs index d2fe9c7..5fa078a 100644 --- a/src/tests/instantiate.rs +++ b/src/tests/instantiate.rs @@ -21,7 +21,6 @@ fn test_instantiate_default() { state, State { owner: deps.api.addr_canonicalize("sender").unwrap(), - withdrawable_creation_fee: Uint128::zero(), claim_reward_fee: Uint128::new(1000000000000000000), } ); @@ -43,7 +42,6 @@ fn test_instantiate_with_custom_claim_fee() { state, State { owner: deps.api.addr_canonicalize("sender").unwrap(), - withdrawable_creation_fee: Uint128::zero(), claim_reward_fee: Uint128::new(1000000000000000000), } ); diff --git a/src/tests/query/campaign_pool.rs b/src/tests/query/campaign_pool.rs index 1e6e70d..dbbe34c 100644 --- a/src/tests/query/campaign_pool.rs +++ b/src/tests/query/campaign_pool.rs @@ -9,11 +9,11 @@ use cosmwasm_std::{ }; use crate::contract::{ - cancel, check, claim, deposit, instantiate, query_campaign_pool, reward_all, set_claim_fee, - set_cpool, set_refundable, set_upool, withdraw, withdraw_fee, + cancel, claim, deposit, instantiate, query_campaign_pool, reward_all, set_claim_fee, + set_cpool, set_refundable, set_upool, withdraw, }; use crate::msg::{ - CampaignCheckRequest, CampaignCheckResponse, InstantiateMsg, UserRewardRequest, + InstantiateMsg, UserRewardRequest, UserRewardResponse, }; use crate::state::{Campaign, State, CAMPAIGN_POOL, STATE, USER_POOL}; diff --git a/src/tests/query/claim_fee.rs b/src/tests/query/claim_fee.rs index 8c9b262..ca4e033 100644 --- a/src/tests/query/claim_fee.rs +++ b/src/tests/query/claim_fee.rs @@ -9,11 +9,11 @@ use cosmwasm_std::{ }; use crate::contract::{ - cancel, check, claim, deposit, instantiate, query_campaign_pool, query_user_pool, reward_all, - set_claim_fee, set_cpool, set_refundable, set_upool, withdraw, withdraw_fee, query_claim_fee, + cancel, claim, deposit, instantiate, query_campaign_pool, query_user_pool, reward_all, + set_claim_fee, set_cpool, set_refundable, set_upool, withdraw, query_claim_fee, }; use crate::msg::{ - CampaignCheckRequest, CampaignCheckResponse, InstantiateMsg, UserRewardRequest, + InstantiateMsg, UserRewardRequest, UserRewardResponse, }; use crate::state::{Campaign, State, CAMPAIGN_POOL, STATE, USER_POOL}; diff --git a/src/tests/query/user_pool.rs b/src/tests/query/user_pool.rs index 62ea990..dd05f57 100644 --- a/src/tests/query/user_pool.rs +++ b/src/tests/query/user_pool.rs @@ -9,11 +9,11 @@ use cosmwasm_std::{ }; use crate::contract::{ - cancel, check, claim, deposit, instantiate, query_campaign_pool, query_user_pool, reward_all, - set_claim_fee, set_cpool, set_refundable, set_upool, withdraw, withdraw_fee, + cancel, claim, deposit, instantiate, query_campaign_pool, query_user_pool, reward_all, + set_claim_fee, set_cpool, set_refundable, set_upool, withdraw, }; use crate::msg::{ - CampaignCheckRequest, CampaignCheckResponse, InstantiateMsg, UserRewardRequest, + InstantiateMsg, UserRewardRequest, UserRewardResponse, }; use crate::state::{Campaign, State, CAMPAIGN_POOL, STATE, USER_POOL};